Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc: mmc: add maintainer for ARM Primecell controller mmc: add maintainer for iMX MMC interface mmc: Add maintainers for TI OMAP MMC interface mmc: mark unmaintained drivers mmc: clean up unused parts of block driver
This commit is contained in:
Коммит
5270f2901d
29
MAINTAINERS
29
MAINTAINERS
|
@ -332,6 +332,9 @@ L: linux-usb-devel@lists.sourceforge.net
|
|||
W: http://www.linux-usb.org/SpeedTouch/
|
||||
S: Maintained
|
||||
|
||||
ALCHEMY AU1XX0 MMC DRIVER
|
||||
S: Orphan
|
||||
|
||||
ALI1563 I2C DRIVER
|
||||
P: Rudolf Marek
|
||||
M: r.marek@assembler.cz
|
||||
|
@ -418,6 +421,12 @@ P: Ian Molton
|
|||
M: spyro@f2s.com
|
||||
S: Maintained
|
||||
|
||||
ARM PRIMECELL MMCI PL180/1 DRIVER
|
||||
P: Russell King
|
||||
M: rmk@arm.linux.org.uk
|
||||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||
S: Maintained
|
||||
|
||||
ARM/ADI ROADRUNNER MACHINE SUPPORT
|
||||
P: Lennert Buytenhek
|
||||
M: kernel@wantstofly.org
|
||||
|
@ -649,6 +658,9 @@ L: linux-atm-general@lists.sourceforge.net (subscribers-only)
|
|||
W: http://linux-atm.sourceforge.net
|
||||
S: Maintained
|
||||
|
||||
ATMEL AT91 MCI DRIVER
|
||||
S: Orphan
|
||||
|
||||
ATMEL MACB ETHERNET DRIVER
|
||||
P: Haavard Skinnemoen
|
||||
M: hskinnemoen@atmel.com
|
||||
|
@ -2380,6 +2392,13 @@ M: stelian@popies.net
|
|||
W: http://popies.net/meye/
|
||||
S: Maintained
|
||||
|
||||
MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER
|
||||
P: Pavel Pisa
|
||||
M: ppisa@pikron.com
|
||||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||
W: http://mmc.drzeus.cx/wiki/Controllers/Freescale/SDHC
|
||||
S: Maintained
|
||||
|
||||
MOUSE AND MISC DEVICES [GENERAL]
|
||||
P: Alessandro Rubini
|
||||
M: rubini@ipvvis.unipv.it
|
||||
|
@ -2900,6 +2919,9 @@ M: nico@cam.org
|
|||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||
S: Maintained
|
||||
|
||||
PXA MMCI DRIVER
|
||||
S: Orphan
|
||||
|
||||
QLOGIC QLA2XXX FC-SCSI DRIVER
|
||||
P: Andrew Vasquez
|
||||
M: linux-driver@qlogic.com
|
||||
|
@ -3416,6 +3438,13 @@ P: Alex Dubov
|
|||
M: oakad@yahoo.com
|
||||
S: Maintained
|
||||
|
||||
TI OMAP MMC INTERFACE DRIVER
|
||||
P: Carlos Aguiar, Anderson Briglia and Syed Khasim
|
||||
M: linux-omap-open-source@linux.omap.com
|
||||
W: http://linux.omap.com
|
||||
W: http://www.muru.com/linux/omap/
|
||||
S: Maintained
|
||||
|
||||
TI OMAP RANDOM NUMBER GENERATOR SUPPORT
|
||||
P: Deepak Saxena
|
||||
M: dsaxena@plexity.net
|
||||
|
|
|
@ -135,23 +135,6 @@ struct mmc_blk_request {
|
|||
struct mmc_data data;
|
||||
};
|
||||
|
||||
static int mmc_blk_prep_rq(struct mmc_queue *mq, struct request *req)
|
||||
{
|
||||
struct mmc_blk_data *md = mq->data;
|
||||
int stat = BLKPREP_OK;
|
||||
|
||||
/*
|
||||
* If we have no device, we haven't finished initialising.
|
||||
*/
|
||||
if (!md || !mq->card) {
|
||||
printk(KERN_ERR "%s: killing request - no device/host\n",
|
||||
req->rq_disk->disk_name);
|
||||
stat = BLKPREP_KILL;
|
||||
}
|
||||
|
||||
return stat;
|
||||
}
|
||||
|
||||
static u32 mmc_sd_num_wr_blocks(struct mmc_card *card)
|
||||
{
|
||||
int err;
|
||||
|
@ -460,7 +443,6 @@ static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card)
|
|||
if (ret)
|
||||
goto err_putdisk;
|
||||
|
||||
md->queue.prep_fn = mmc_blk_prep_rq;
|
||||
md->queue.issue_fn = mmc_blk_issue_rq;
|
||||
md->queue.data = md;
|
||||
|
||||
|
|
|
@ -20,40 +20,21 @@
|
|||
#define MMC_QUEUE_SUSPENDED (1 << 0)
|
||||
|
||||
/*
|
||||
* Prepare a MMC request. Essentially, this means passing the
|
||||
* preparation off to the media driver. The media driver will
|
||||
* create a mmc_io_request in req->special.
|
||||
* Prepare a MMC request. This just filters out odd stuff.
|
||||
*/
|
||||
static int mmc_prep_request(struct request_queue *q, struct request *req)
|
||||
{
|
||||
struct mmc_queue *mq = q->queuedata;
|
||||
int ret = BLKPREP_KILL;
|
||||
|
||||
if (blk_special_request(req)) {
|
||||
/*
|
||||
* Special commands already have the command
|
||||
* blocks already setup in req->special.
|
||||
*/
|
||||
BUG_ON(!req->special);
|
||||
|
||||
ret = BLKPREP_OK;
|
||||
} else if (blk_fs_request(req) || blk_pc_request(req)) {
|
||||
/*
|
||||
* Block I/O requests need translating according
|
||||
* to the protocol.
|
||||
*/
|
||||
ret = mq->prep_fn(mq, req);
|
||||
} else {
|
||||
/*
|
||||
* Everything else is invalid.
|
||||
*/
|
||||
/*
|
||||
* We only like normal block requests.
|
||||
*/
|
||||
if (!blk_fs_request(req) && !blk_pc_request(req)) {
|
||||
blk_dump_rq_flags(req, "MMC bad request");
|
||||
return BLKPREP_KILL;
|
||||
}
|
||||
|
||||
if (ret == BLKPREP_OK)
|
||||
req->cmd_flags |= REQ_DONTPREP;
|
||||
req->cmd_flags |= REQ_DONTPREP;
|
||||
|
||||
return ret;
|
||||
return BLKPREP_OK;
|
||||
}
|
||||
|
||||
static int mmc_queue_thread(void *d)
|
||||
|
|
|
@ -10,20 +10,12 @@ struct mmc_queue {
|
|||
struct semaphore thread_sem;
|
||||
unsigned int flags;
|
||||
struct request *req;
|
||||
int (*prep_fn)(struct mmc_queue *, struct request *);
|
||||
int (*issue_fn)(struct mmc_queue *, struct request *);
|
||||
void *data;
|
||||
struct request_queue *queue;
|
||||
struct scatterlist *sg;
|
||||
};
|
||||
|
||||
struct mmc_io_request {
|
||||
struct request *rq;
|
||||
int num;
|
||||
struct mmc_command selcmd; /* mmc_queue private */
|
||||
struct mmc_command cmd[4]; /* max 4 commands */
|
||||
};
|
||||
|
||||
extern int mmc_init_queue(struct mmc_queue *, struct mmc_card *, spinlock_t *);
|
||||
extern void mmc_cleanup_queue(struct mmc_queue *);
|
||||
extern void mmc_queue_suspend(struct mmc_queue *);
|
||||
|
|
Загрузка…
Ссылка в новой задаче