linux/drivers/mmc/card/queue.h
<<
>>
Prefs
   1#ifndef MMC_QUEUE_H
   2#define MMC_QUEUE_H
   3
   4struct request;
   5struct task_struct;
   6
   7struct mmc_blk_request {
   8        struct mmc_request      mrq;
   9        struct mmc_command      sbc;
  10        struct mmc_command      cmd;
  11        struct mmc_command      stop;
  12        struct mmc_data         data;
  13};
  14
  15struct mmc_queue_req {
  16        struct request          *req;
  17        struct mmc_blk_request  brq;
  18        struct scatterlist      *sg;
  19        char                    *bounce_buf;
  20        struct scatterlist      *bounce_sg;
  21        unsigned int            bounce_sg_len;
  22        struct mmc_async_req    mmc_active;
  23};
  24
  25struct mmc_queue {
  26        struct mmc_card         *card;
  27        struct task_struct      *thread;
  28        struct semaphore        thread_sem;
  29        unsigned int            flags;
  30        int                     (*issue_fn)(struct mmc_queue *, struct request *);
  31        void                    *data;
  32        struct request_queue    *queue;
  33        struct mmc_queue_req    mqrq[2];
  34        struct mmc_queue_req    *mqrq_cur;
  35        struct mmc_queue_req    *mqrq_prev;
  36};
  37
  38extern int mmc_init_queue(struct mmc_queue *, struct mmc_card *, spinlock_t *,
  39                          const char *);
  40extern void mmc_cleanup_queue(struct mmc_queue *);
  41extern void mmc_queue_suspend(struct mmc_queue *);
  42extern void mmc_queue_resume(struct mmc_queue *);
  43
  44extern unsigned int mmc_queue_map_sg(struct mmc_queue *,
  45                                     struct mmc_queue_req *);
  46extern void mmc_queue_bounce_pre(struct mmc_queue_req *);
  47extern void mmc_queue_bounce_post(struct mmc_queue_req *);
  48
  49#endif
  50