4 static inline bool mmc_req_is_special(struct request
*req
)
7 (req_op(req
) == REQ_OP_FLUSH
||
8 req_op(req
) == REQ_OP_DISCARD
||
9 req_op(req
) == REQ_OP_SECURE_ERASE
);
16 struct mmc_blk_request
{
17 struct mmc_request mrq
;
18 struct mmc_command sbc
;
19 struct mmc_command cmd
;
20 struct mmc_command stop
;
22 int retune_retry_done
;
25 struct mmc_queue_req
{
27 struct mmc_blk_request brq
;
28 struct scatterlist
*sg
;
30 struct scatterlist
*bounce_sg
;
31 unsigned int bounce_sg_len
;
32 struct mmc_async_req mmc_active
;
36 struct mmc_card
*card
;
37 struct task_struct
*thread
;
38 struct semaphore thread_sem
;
40 #define MMC_QUEUE_SUSPENDED (1 << 0)
41 #define MMC_QUEUE_NEW_REQUEST (1 << 1)
43 struct mmc_blk_data
*blkdata
;
44 struct request_queue
*queue
;
45 struct mmc_queue_req
*mqrq
;
46 struct mmc_queue_req
*mqrq_cur
;
47 struct mmc_queue_req
*mqrq_prev
;
51 extern int mmc_init_queue(struct mmc_queue
*, struct mmc_card
*, spinlock_t
*,
53 extern void mmc_cleanup_queue(struct mmc_queue
*);
54 extern void mmc_queue_suspend(struct mmc_queue
*);
55 extern void mmc_queue_resume(struct mmc_queue
*);
57 extern unsigned int mmc_queue_map_sg(struct mmc_queue
*,
58 struct mmc_queue_req
*);
59 extern void mmc_queue_bounce_pre(struct mmc_queue_req
*);
60 extern void mmc_queue_bounce_post(struct mmc_queue_req
*);
62 extern int mmc_access_rpmb(struct mmc_queue
*);