diff options
| -rw-r--r-- | drivers/mmc/mmc.c | 12 | ||||
| -rw-r--r-- | include/linux/mmc/host.h | 6 | 
2 files changed, 18 insertions, 0 deletions
| diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index 3c5904834fe8..0a8165974ba7 100644 --- a/drivers/mmc/mmc.c +++ b/drivers/mmc/mmc.c | |||
| @@ -457,6 +457,11 @@ static void mmc_idle_cards(struct mmc_host *host) | |||
| 457 | { | 457 | { | 
| 458 | struct mmc_command cmd; | 458 | struct mmc_command cmd; | 
| 459 | 459 | ||
| 460 | host->ios.chip_select = MMC_CS_HIGH; | ||
| 461 | host->ops->set_ios(host, &host->ios); | ||
| 462 | |||
| 463 | mmc_delay(1); | ||
| 464 | |||
| 460 | cmd.opcode = MMC_GO_IDLE_STATE; | 465 | cmd.opcode = MMC_GO_IDLE_STATE; | 
| 461 | cmd.arg = 0; | 466 | cmd.arg = 0; | 
| 462 | cmd.flags = MMC_RSP_NONE; | 467 | cmd.flags = MMC_RSP_NONE; | 
| @@ -464,6 +469,11 @@ static void mmc_idle_cards(struct mmc_host *host) | |||
| 464 | mmc_wait_for_cmd(host, &cmd, 0); | 469 | mmc_wait_for_cmd(host, &cmd, 0); | 
| 465 | 470 | ||
| 466 | mmc_delay(1); | 471 | mmc_delay(1); | 
| 472 | |||
| 473 | host->ios.chip_select = MMC_CS_DONTCARE; | ||
| 474 | host->ops->set_ios(host, &host->ios); | ||
| 475 | |||
| 476 | mmc_delay(1); | ||
| 467 | } | 477 | } | 
| 468 | 478 | ||
| 469 | /* | 479 | /* | 
| @@ -475,6 +485,7 @@ static void mmc_power_up(struct mmc_host *host) | |||
| 475 | 485 | ||
| 476 | host->ios.vdd = bit; | 486 | host->ios.vdd = bit; | 
| 477 | host->ios.bus_mode = MMC_BUSMODE_OPENDRAIN; | 487 | host->ios.bus_mode = MMC_BUSMODE_OPENDRAIN; | 
| 488 | host->ios.chip_select = MMC_CS_DONTCARE; | ||
| 478 | host->ios.power_mode = MMC_POWER_UP; | 489 | host->ios.power_mode = MMC_POWER_UP; | 
| 479 | host->ops->set_ios(host, &host->ios); | 490 | host->ops->set_ios(host, &host->ios); | 
| 480 | 491 | ||
| @@ -492,6 +503,7 @@ static void mmc_power_off(struct mmc_host *host) | |||
| 492 | host->ios.clock = 0; | 503 | host->ios.clock = 0; | 
| 493 | host->ios.vdd = 0; | 504 | host->ios.vdd = 0; | 
| 494 | host->ios.bus_mode = MMC_BUSMODE_OPENDRAIN; | 505 | host->ios.bus_mode = MMC_BUSMODE_OPENDRAIN; | 
| 506 | host->ios.chip_select = MMC_CS_DONTCARE; | ||
| 495 | host->ios.power_mode = MMC_POWER_OFF; | 507 | host->ios.power_mode = MMC_POWER_OFF; | 
| 496 | host->ops->set_ios(host, &host->ios); | 508 | host->ops->set_ios(host, &host->ios); | 
| 497 | } | 509 | } | 
| diff --git a/include/linux/mmc/host.h b/include/linux/mmc/host.h index 9a0893f3249e..30f68c0c8c6e 100644 --- a/include/linux/mmc/host.h +++ b/include/linux/mmc/host.h | |||
| @@ -46,6 +46,12 @@ struct mmc_ios { | |||
| 46 | #define MMC_BUSMODE_OPENDRAIN 1 | 46 | #define MMC_BUSMODE_OPENDRAIN 1 | 
| 47 | #define MMC_BUSMODE_PUSHPULL 2 | 47 | #define MMC_BUSMODE_PUSHPULL 2 | 
| 48 | 48 | ||
| 49 | unsigned char chip_select; /* SPI chip select */ | ||
| 50 | |||
| 51 | #define MMC_CS_DONTCARE 0 | ||
| 52 | #define MMC_CS_HIGH 1 | ||
| 53 | #define MMC_CS_LOW 2 | ||
| 54 | |||
| 49 | unsigned char power_mode; /* power supply mode */ | 55 | unsigned char power_mode; /* power supply mode */ | 
| 50 | 56 | ||
| 51 | #define MMC_POWER_OFF 0 | 57 | #define MMC_POWER_OFF 0 | 
