aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-24 11:37:52 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-24 11:37:52 -0400
commit5270f2901d6ba38724d0e9e4b637e660f1ca85f7 (patch)
treef2010e07f40c26ee998dd70b2a9caa640c627f81
parent92ea77275b5345c1300433f28689493dc4163f24 (diff)
parent2761f5c2ea80bcaa77ec1827064f3aa919474ac8 (diff)
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
-rw-r--r--MAINTAINERS29
-rw-r--r--drivers/mmc/card/block.c18
-rw-r--r--drivers/mmc/card/queue.c35
-rw-r--r--drivers/mmc/card/queue.h8
4 files changed, 37 insertions, 53 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 22ab4019972b..953291d08c76 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -332,6 +332,9 @@ L: linux-usb-devel@lists.sourceforge.net
332W: http://www.linux-usb.org/SpeedTouch/ 332W: http://www.linux-usb.org/SpeedTouch/
333S: Maintained 333S: Maintained
334 334
335ALCHEMY AU1XX0 MMC DRIVER
336S: Orphan
337
335ALI1563 I2C DRIVER 338ALI1563 I2C DRIVER
336P: Rudolf Marek 339P: Rudolf Marek
337M: r.marek@assembler.cz 340M: r.marek@assembler.cz
@@ -418,6 +421,12 @@ P: Ian Molton
418M: spyro@f2s.com 421M: spyro@f2s.com
419S: Maintained 422S: Maintained
420 423
424ARM PRIMECELL MMCI PL180/1 DRIVER
425P: Russell King
426M: rmk@arm.linux.org.uk
427L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
428S: Maintained
429
421ARM/ADI ROADRUNNER MACHINE SUPPORT 430ARM/ADI ROADRUNNER MACHINE SUPPORT
422P: Lennert Buytenhek 431P: Lennert Buytenhek
423M: kernel@wantstofly.org 432M: kernel@wantstofly.org
@@ -649,6 +658,9 @@ L: linux-atm-general@lists.sourceforge.net (subscribers-only)
649W: http://linux-atm.sourceforge.net 658W: http://linux-atm.sourceforge.net
650S: Maintained 659S: Maintained
651 660
661ATMEL AT91 MCI DRIVER
662S: Orphan
663
652ATMEL MACB ETHERNET DRIVER 664ATMEL MACB ETHERNET DRIVER
653P: Haavard Skinnemoen 665P: Haavard Skinnemoen
654M: hskinnemoen@atmel.com 666M: hskinnemoen@atmel.com
@@ -2380,6 +2392,13 @@ M: stelian@popies.net
2380W: http://popies.net/meye/ 2392W: http://popies.net/meye/
2381S: Maintained 2393S: Maintained
2382 2394
2395MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER
2396P: Pavel Pisa
2397M: ppisa@pikron.com
2398L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
2399W: http://mmc.drzeus.cx/wiki/Controllers/Freescale/SDHC
2400S: Maintained
2401
2383MOUSE AND MISC DEVICES [GENERAL] 2402MOUSE AND MISC DEVICES [GENERAL]
2384P: Alessandro Rubini 2403P: Alessandro Rubini
2385M: rubini@ipvvis.unipv.it 2404M: rubini@ipvvis.unipv.it
@@ -2900,6 +2919,9 @@ M: nico@cam.org
2900L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) 2919L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
2901S: Maintained 2920S: Maintained
2902 2921
2922PXA MMCI DRIVER
2923S: Orphan
2924
2903QLOGIC QLA2XXX FC-SCSI DRIVER 2925QLOGIC QLA2XXX FC-SCSI DRIVER
2904P: Andrew Vasquez 2926P: Andrew Vasquez
2905M: linux-driver@qlogic.com 2927M: linux-driver@qlogic.com
@@ -3416,6 +3438,13 @@ P: Alex Dubov
3416M: oakad@yahoo.com 3438M: oakad@yahoo.com
3417S: Maintained 3439S: Maintained
3418 3440
3441TI OMAP MMC INTERFACE DRIVER
3442P: Carlos Aguiar, Anderson Briglia and Syed Khasim
3443M: linux-omap-open-source@linux.omap.com
3444W: http://linux.omap.com
3445W: http://www.muru.com/linux/omap/
3446S: Maintained
3447
3419TI OMAP RANDOM NUMBER GENERATOR SUPPORT 3448TI OMAP RANDOM NUMBER GENERATOR SUPPORT
3420P: Deepak Saxena 3449P: Deepak Saxena
3421M: dsaxena@plexity.net 3450M: dsaxena@plexity.net
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c
index a7562f7fc0b3..540ff4bea54c 100644
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -135,23 +135,6 @@ struct mmc_blk_request {
135 struct mmc_data data; 135 struct mmc_data data;
136}; 136};
137 137
138static int mmc_blk_prep_rq(struct mmc_queue *mq, struct request *req)
139{
140 struct mmc_blk_data *md = mq->data;
141 int stat = BLKPREP_OK;
142
143 /*
144 * If we have no device, we haven't finished initialising.
145 */
146 if (!md || !mq->card) {
147 printk(KERN_ERR "%s: killing request - no device/host\n",
148 req->rq_disk->disk_name);
149 stat = BLKPREP_KILL;
150 }
151
152 return stat;
153}
154
155static u32 mmc_sd_num_wr_blocks(struct mmc_card *card) 138static u32 mmc_sd_num_wr_blocks(struct mmc_card *card)
156{ 139{
157 int err; 140 int err;
@@ -460,7 +443,6 @@ static struct mmc_blk_data *mmc_blk_alloc(struct mmc_card *card)
460 if (ret) 443 if (ret)
461 goto err_putdisk; 444 goto err_putdisk;
462 445
463 md->queue.prep_fn = mmc_blk_prep_rq;
464 md->queue.issue_fn = mmc_blk_issue_rq; 446 md->queue.issue_fn = mmc_blk_issue_rq;
465 md->queue.data = md; 447 md->queue.data = md;
466 448
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c
index 2e77963db334..dd97bc798409 100644
--- a/drivers/mmc/card/queue.c
+++ b/drivers/mmc/card/queue.c
@@ -20,40 +20,21 @@
20#define MMC_QUEUE_SUSPENDED (1 << 0) 20#define MMC_QUEUE_SUSPENDED (1 << 0)
21 21
22/* 22/*
23 * Prepare a MMC request. Essentially, this means passing the 23 * Prepare a MMC request. This just filters out odd stuff.
24 * preparation off to the media driver. The media driver will
25 * create a mmc_io_request in req->special.
26 */ 24 */
27static int mmc_prep_request(struct request_queue *q, struct request *req) 25static int mmc_prep_request(struct request_queue *q, struct request *req)
28{ 26{
29 struct mmc_queue *mq = q->queuedata; 27 /*
30 int ret = BLKPREP_KILL; 28 * We only like normal block requests.
31 29 */
32 if (blk_special_request(req)) { 30 if (!blk_fs_request(req) && !blk_pc_request(req)) {
33 /*
34 * Special commands already have the command
35 * blocks already setup in req->special.
36 */
37 BUG_ON(!req->special);
38
39 ret = BLKPREP_OK;
40 } else if (blk_fs_request(req) || blk_pc_request(req)) {
41 /*
42 * Block I/O requests need translating according
43 * to the protocol.
44 */
45 ret = mq->prep_fn(mq, req);
46 } else {
47 /*
48 * Everything else is invalid.
49 */
50 blk_dump_rq_flags(req, "MMC bad request"); 31 blk_dump_rq_flags(req, "MMC bad request");
32 return BLKPREP_KILL;
51 } 33 }
52 34
53 if (ret == BLKPREP_OK) 35 req->cmd_flags |= REQ_DONTPREP;
54 req->cmd_flags |= REQ_DONTPREP;
55 36
56 return ret; 37 return BLKPREP_OK;
57} 38}
58 39
59static int mmc_queue_thread(void *d) 40static int mmc_queue_thread(void *d)
diff --git a/drivers/mmc/card/queue.h b/drivers/mmc/card/queue.h
index c9f139e764f6..1590b3f3f1f7 100644
--- a/drivers/mmc/card/queue.h
+++ b/drivers/mmc/card/queue.h
@@ -10,20 +10,12 @@ struct mmc_queue {
10 struct semaphore thread_sem; 10 struct semaphore thread_sem;
11 unsigned int flags; 11 unsigned int flags;
12 struct request *req; 12 struct request *req;
13 int (*prep_fn)(struct mmc_queue *, struct request *);
14 int (*issue_fn)(struct mmc_queue *, struct request *); 13 int (*issue_fn)(struct mmc_queue *, struct request *);
15 void *data; 14 void *data;
16 struct request_queue *queue; 15 struct request_queue *queue;
17 struct scatterlist *sg; 16 struct scatterlist *sg;
18}; 17};
19 18
20struct mmc_io_request {
21 struct request *rq;
22 int num;
23 struct mmc_command selcmd; /* mmc_queue private */
24 struct mmc_command cmd[4]; /* max 4 commands */
25};
26
27extern int mmc_init_queue(struct mmc_queue *, struct mmc_card *, spinlock_t *); 19extern int mmc_init_queue(struct mmc_queue *, struct mmc_card *, spinlock_t *);
28extern void mmc_cleanup_queue(struct mmc_queue *); 20extern void mmc_cleanup_queue(struct mmc_queue *);
29extern void mmc_queue_suspend(struct mmc_queue *); 21extern void mmc_queue_suspend(struct mmc_queue *);