diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-24 11:37:52 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-24 11:37:52 -0400 |
| commit | 5270f2901d6ba38724d0e9e4b637e660f1ca85f7 (patch) | |
| tree | f2010e07f40c26ee998dd70b2a9caa640c627f81 | |
| parent | 92ea77275b5345c1300433f28689493dc4163f24 (diff) | |
| parent | 2761f5c2ea80bcaa77ec1827064f3aa919474ac8 (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-- | MAINTAINERS | 29 | ||||
| -rw-r--r-- | drivers/mmc/card/block.c | 18 | ||||
| -rw-r--r-- | drivers/mmc/card/queue.c | 35 | ||||
| -rw-r--r-- | drivers/mmc/card/queue.h | 8 |
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 | |||
| 332 | W: http://www.linux-usb.org/SpeedTouch/ | 332 | W: http://www.linux-usb.org/SpeedTouch/ |
| 333 | S: Maintained | 333 | S: Maintained |
| 334 | 334 | ||
| 335 | ALCHEMY AU1XX0 MMC DRIVER | ||
| 336 | S: Orphan | ||
| 337 | |||
| 335 | ALI1563 I2C DRIVER | 338 | ALI1563 I2C DRIVER |
| 336 | P: Rudolf Marek | 339 | P: Rudolf Marek |
| 337 | M: r.marek@assembler.cz | 340 | M: r.marek@assembler.cz |
| @@ -418,6 +421,12 @@ P: Ian Molton | |||
| 418 | M: spyro@f2s.com | 421 | M: spyro@f2s.com |
| 419 | S: Maintained | 422 | S: Maintained |
| 420 | 423 | ||
| 424 | ARM PRIMECELL MMCI PL180/1 DRIVER | ||
| 425 | P: Russell King | ||
| 426 | M: rmk@arm.linux.org.uk | ||
| 427 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | ||
| 428 | S: Maintained | ||
| 429 | |||
| 421 | ARM/ADI ROADRUNNER MACHINE SUPPORT | 430 | ARM/ADI ROADRUNNER MACHINE SUPPORT |
| 422 | P: Lennert Buytenhek | 431 | P: Lennert Buytenhek |
| 423 | M: kernel@wantstofly.org | 432 | M: kernel@wantstofly.org |
| @@ -649,6 +658,9 @@ L: linux-atm-general@lists.sourceforge.net (subscribers-only) | |||
| 649 | W: http://linux-atm.sourceforge.net | 658 | W: http://linux-atm.sourceforge.net |
| 650 | S: Maintained | 659 | S: Maintained |
| 651 | 660 | ||
| 661 | ATMEL AT91 MCI DRIVER | ||
| 662 | S: Orphan | ||
| 663 | |||
| 652 | ATMEL MACB ETHERNET DRIVER | 664 | ATMEL MACB ETHERNET DRIVER |
| 653 | P: Haavard Skinnemoen | 665 | P: Haavard Skinnemoen |
| 654 | M: hskinnemoen@atmel.com | 666 | M: hskinnemoen@atmel.com |
| @@ -2380,6 +2392,13 @@ M: stelian@popies.net | |||
| 2380 | W: http://popies.net/meye/ | 2392 | W: http://popies.net/meye/ |
| 2381 | S: Maintained | 2393 | S: Maintained |
| 2382 | 2394 | ||
| 2395 | MOTOROLA IMX MMC/SD HOST CONTROLLER INTERFACE DRIVER | ||
| 2396 | P: Pavel Pisa | ||
| 2397 | M: ppisa@pikron.com | ||
| 2398 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | ||
| 2399 | W: http://mmc.drzeus.cx/wiki/Controllers/Freescale/SDHC | ||
| 2400 | S: Maintained | ||
| 2401 | |||
| 2383 | MOUSE AND MISC DEVICES [GENERAL] | 2402 | MOUSE AND MISC DEVICES [GENERAL] |
| 2384 | P: Alessandro Rubini | 2403 | P: Alessandro Rubini |
| 2385 | M: rubini@ipvvis.unipv.it | 2404 | M: rubini@ipvvis.unipv.it |
| @@ -2900,6 +2919,9 @@ M: nico@cam.org | |||
| 2900 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) | 2919 | L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) |
| 2901 | S: Maintained | 2920 | S: Maintained |
| 2902 | 2921 | ||
| 2922 | PXA MMCI DRIVER | ||
| 2923 | S: Orphan | ||
| 2924 | |||
| 2903 | QLOGIC QLA2XXX FC-SCSI DRIVER | 2925 | QLOGIC QLA2XXX FC-SCSI DRIVER |
| 2904 | P: Andrew Vasquez | 2926 | P: Andrew Vasquez |
| 2905 | M: linux-driver@qlogic.com | 2927 | M: linux-driver@qlogic.com |
| @@ -3416,6 +3438,13 @@ P: Alex Dubov | |||
| 3416 | M: oakad@yahoo.com | 3438 | M: oakad@yahoo.com |
| 3417 | S: Maintained | 3439 | S: Maintained |
| 3418 | 3440 | ||
| 3441 | TI OMAP MMC INTERFACE DRIVER | ||
| 3442 | P: Carlos Aguiar, Anderson Briglia and Syed Khasim | ||
| 3443 | M: linux-omap-open-source@linux.omap.com | ||
| 3444 | W: http://linux.omap.com | ||
| 3445 | W: http://www.muru.com/linux/omap/ | ||
| 3446 | S: Maintained | ||
| 3447 | |||
| 3419 | TI OMAP RANDOM NUMBER GENERATOR SUPPORT | 3448 | TI OMAP RANDOM NUMBER GENERATOR SUPPORT |
| 3420 | P: Deepak Saxena | 3449 | P: Deepak Saxena |
| 3421 | M: dsaxena@plexity.net | 3450 | M: 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 | ||
| 138 | static 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 | |||
| 155 | static u32 mmc_sd_num_wr_blocks(struct mmc_card *card) | 138 | static 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 | */ |
| 27 | static int mmc_prep_request(struct request_queue *q, struct request *req) | 25 | static 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 | ||
| 59 | static int mmc_queue_thread(void *d) | 40 | static 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 | ||
| 20 | struct 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 | |||
| 27 | extern int mmc_init_queue(struct mmc_queue *, struct mmc_card *, spinlock_t *); | 19 | extern int mmc_init_queue(struct mmc_queue *, struct mmc_card *, spinlock_t *); |
| 28 | extern void mmc_cleanup_queue(struct mmc_queue *); | 20 | extern void mmc_cleanup_queue(struct mmc_queue *); |
| 29 | extern void mmc_queue_suspend(struct mmc_queue *); | 21 | extern void mmc_queue_suspend(struct mmc_queue *); |
