Loading...
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
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