2005-04-16 15:20:36 -07:00
# ifndef MMC_QUEUE_H
# define MMC_QUEUE_H
struct request ;
struct task_struct ;
2011-07-09 17:12:36 -04:00
struct mmc_blk_request {
struct mmc_request mrq ;
struct mmc_command sbc ;
struct mmc_command cmd ;
struct mmc_command stop ;
struct mmc_data data ;
} ;
struct mmc_queue_req {
struct request * req ;
struct mmc_blk_request brq ;
struct scatterlist * sg ;
char * bounce_buf ;
struct scatterlist * bounce_sg ;
unsigned int bounce_sg_len ;
2011-07-01 18:55:33 +02:00
struct mmc_async_req mmc_active ;
2011-07-09 17:12:36 -04:00
} ;
2005-04-16 15:20:36 -07:00
struct mmc_queue {
struct mmc_card * card ;
2006-11-13 20:23:52 +01:00
struct task_struct * thread ;
2005-04-16 15:20:36 -07:00
struct semaphore thread_sem ;
unsigned int flags ;
int ( * issue_fn ) ( struct mmc_queue * , struct request * ) ;
void * data ;
struct request_queue * queue ;
2011-07-01 18:55:31 +02:00
struct mmc_queue_req mqrq [ 2 ] ;
2011-07-09 17:12:36 -04:00
struct mmc_queue_req * mqrq_cur ;
2011-07-01 18:55:31 +02:00
struct mmc_queue_req * mqrq_prev ;
2005-04-16 15:20:36 -07:00
} ;
2011-06-23 13:40:28 +03:00
extern int mmc_init_queue ( struct mmc_queue * , struct mmc_card * , spinlock_t * ,
const char * ) ;
2005-04-16 15:20:36 -07:00
extern void mmc_cleanup_queue ( struct mmc_queue * ) ;
extern void mmc_queue_suspend ( struct mmc_queue * ) ;
extern void mmc_queue_resume ( struct mmc_queue * ) ;
2011-07-09 17:12:36 -04:00
extern unsigned int mmc_queue_map_sg ( struct mmc_queue * ,
struct mmc_queue_req * ) ;
extern void mmc_queue_bounce_pre ( struct mmc_queue_req * ) ;
extern void mmc_queue_bounce_post ( struct mmc_queue_req * ) ;
2007-05-12 00:26:16 +02:00
2005-04-16 15:20:36 -07:00
# endif