Commit 5270f290 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 92ea7727 2761f5c2
...@@ -332,6 +332,9 @@ L: linux-usb-devel@lists.sourceforge.net ...@@ -332,6 +332,9 @@ L: linux-usb-devel@lists.sourceforge.net
W: http://www.linux-usb.org/SpeedTouch/ W: http://www.linux-usb.org/SpeedTouch/
S: Maintained S: Maintained
ALCHEMY AU1XX0 MMC DRIVER
S: Orphan
ALI1563 I2C DRIVER ALI1563 I2C DRIVER
P: Rudolf Marek P: Rudolf Marek
M: r.marek@assembler.cz M: r.marek@assembler.cz
...@@ -418,6 +421,12 @@ P: Ian Molton ...@@ -418,6 +421,12 @@ P: Ian Molton
M: spyro@f2s.com M: spyro@f2s.com
S: Maintained 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 ARM/ADI ROADRUNNER MACHINE SUPPORT
P: Lennert Buytenhek P: Lennert Buytenhek
M: kernel@wantstofly.org M: kernel@wantstofly.org
...@@ -649,6 +658,9 @@ L: linux-atm-general@lists.sourceforge.net (subscribers-only) ...@@ -649,6 +658,9 @@ L: linux-atm-general@lists.sourceforge.net (subscribers-only)
W: http://linux-atm.sourceforge.net W: http://linux-atm.sourceforge.net
S: Maintained S: Maintained
ATMEL AT91 MCI DRIVER
S: Orphan
ATMEL MACB ETHERNET DRIVER ATMEL MACB ETHERNET DRIVER
P: Haavard Skinnemoen P: Haavard Skinnemoen
M: hskinnemoen@atmel.com M: hskinnemoen@atmel.com
...@@ -2380,6 +2392,13 @@ M: stelian@popies.net ...@@ -2380,6 +2392,13 @@ M: stelian@popies.net
W: http://popies.net/meye/ W: http://popies.net/meye/
S: Maintained 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] MOUSE AND MISC DEVICES [GENERAL]
P: Alessandro Rubini P: Alessandro Rubini
M: rubini@ipvvis.unipv.it M: rubini@ipvvis.unipv.it
...@@ -2900,6 +2919,9 @@ M: nico@cam.org ...@@ -2900,6 +2919,9 @@ M: nico@cam.org
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
S: Maintained S: Maintained
PXA MMCI DRIVER
S: Orphan
QLOGIC QLA2XXX FC-SCSI DRIVER QLOGIC QLA2XXX FC-SCSI DRIVER
P: Andrew Vasquez P: Andrew Vasquez
M: linux-driver@qlogic.com M: linux-driver@qlogic.com
...@@ -3416,6 +3438,13 @@ P: Alex Dubov ...@@ -3416,6 +3438,13 @@ P: Alex Dubov
M: oakad@yahoo.com M: oakad@yahoo.com
S: Maintained 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 TI OMAP RANDOM NUMBER GENERATOR SUPPORT
P: Deepak Saxena P: Deepak Saxena
M: dsaxena@plexity.net M: dsaxena@plexity.net
......
...@@ -135,23 +135,6 @@ struct mmc_blk_request { ...@@ -135,23 +135,6 @@ struct mmc_blk_request {
struct mmc_data data; 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) static u32 mmc_sd_num_wr_blocks(struct mmc_card *card)
{ {
int err; int err;
...@@ -460,7 +443,6 @@ static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card) ...@@ -460,7 +443,6 @@ static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card)
if (ret) if (ret)
goto err_putdisk; goto err_putdisk;
md->queue.prep_fn = mmc_blk_prep_rq;
md->queue.issue_fn = mmc_blk_issue_rq; md->queue.issue_fn = mmc_blk_issue_rq;
md->queue.data = md; md->queue.data = md;
......
...@@ -20,40 +20,21 @@ ...@@ -20,40 +20,21 @@
#define MMC_QUEUE_SUSPENDED (1 << 0) #define MMC_QUEUE_SUSPENDED (1 << 0)
/* /*
* Prepare a MMC request. Essentially, this means passing the * Prepare a MMC request. This just filters out odd stuff.
* preparation off to the media driver. The media driver will
* create a mmc_io_request in req->special.
*/ */
static int mmc_prep_request(struct request_queue *q, struct request *req) 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"); 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) static int mmc_queue_thread(void *d)
......
...@@ -10,20 +10,12 @@ struct mmc_queue { ...@@ -10,20 +10,12 @@ struct mmc_queue {
struct semaphore thread_sem; struct semaphore thread_sem;
unsigned int flags; unsigned int flags;
struct request *req; struct request *req;
int (*prep_fn)(struct mmc_queue *, struct request *);
int (*issue_fn)(struct mmc_queue *, struct request *); int (*issue_fn)(struct mmc_queue *, struct request *);
void *data; void *data;
struct request_queue *queue; struct request_queue *queue;
struct scatterlist *sg; 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 int mmc_init_queue(struct mmc_queue *, struct mmc_card *, spinlock_t *);
extern void mmc_cleanup_queue(struct mmc_queue *); extern void mmc_cleanup_queue(struct mmc_queue *);
extern void mmc_queue_suspend(struct mmc_queue *); extern void mmc_queue_suspend(struct mmc_queue *);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment