aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/mmc/mmc.c12
-rw-r--r--include/linux/mmc/host.h6
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