diff options
author | Stefan Nilsson XK <[email protected]> | 2011-03-01 14:41:04 +0100 |
---|---|---|
committer | Chris Ball <[email protected]> | 2011-03-17 15:35:09 -0400 |
commit | 0aab3995485b8a994bf29a995a008c9ea4a28054 (patch) | |
tree | ca4d3aba01b94ce9b8cb771536665c1b31f1fcdc | |
parent | ba6a902d9d89b976bf64a435ec97a490cd160dec (diff) |
mmc: sdio: remember new card RCA when redetecting card
During redetection of a SDIO card, a request for a new card RCA
was submitted to the card, but was then overwritten by the old RCA.
This caused the card to be deselected instead of selected when using
the incorrect RCA. This bug's been present since the "oldcard"
handling was introduced in 2.6.32.
Signed-off-by: Stefan Nilsson XK <[email protected]>
Reviewed-by: Ulf Hansson <[email protected]>
Reviewed-by: Pawel Wieczorkiewicz <[email protected]>
Signed-off-by: Linus Walleij <[email protected]>
Cc: <[email protected]>
Signed-off-by: Chris Ball <[email protected]>
-rw-r--r-- | drivers/mmc/core/sdio.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/mmc/core/sdio.c b/drivers/mmc/core/sdio.c index c9fbb777440d..db0f0b44d684 100644 --- a/drivers/mmc/core/sdio.c +++ b/drivers/mmc/core/sdio.c @@ -395,6 +395,14 @@ static int mmc_sdio_init_card(struct mmc_host *host, u32 ocr, if (err) goto remove; + /* + * Update oldcard with the new RCA received from the SDIO + * device -- we're doing this so that it's updated in the + * "card" struct when oldcard overwrites that later. + */ + if (oldcard) + oldcard->rca = card->rca; + mmc_set_bus_mode(host, MMC_BUSMODE_PUSHPULL); } |