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 |