Hi Arindam, On Apr 25, 2011, at 11:45 PM, Nath, Arindam wrote: > Hi Philip, > > >> -----Original Message----- >> From: Philip Rakity [mailto:prakity@xxxxxxxxxxx] >> Sent: Saturday, April 23, 2011 1:56 AM >> To: linux-mmc@xxxxxxxxxxxxxxx >> Cc: Nath, Arindam >> Subject: [PATCH] mmc: eMMC signal voltage does not use CMD11 >> >> >> eMMC chips do not use CMD11 when changing voltage. Add extra >> argument to call to indicate if CMD11 needs to be sent. >> >> Signed-off-by: Philip Rakity <prakity@xxxxxxxxxxx> >> --- >> drivers/mmc/core/sd.c | 4 ++-- >> drivers/mmc/core/sd_ops.c | 4 ++-- >> drivers/mmc/core/sd_ops.h | 3 ++- >> 3 files changed, 6 insertions(+), 5 deletions(-) >> >> diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c >> index ed6b11b..362716c 100644 >> --- a/drivers/mmc/core/sd.c >> +++ b/drivers/mmc/core/sd.c >> @@ -734,7 +734,7 @@ try_again: >> */ >> if (!mmc_host_is_spi(host) && rocr && >> ((*rocr & 0x41000000) == 0x41000000)) { >> - err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180); >> + err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_180, >> 1); >> if (err) { >> ocr &= ~(1 << 24); >> goto try_again; >> @@ -1115,7 +1115,7 @@ int mmc_attach_sd(struct mmc_host *host) >> host->ocr_avail = host->ocr_avail_sd; >> >> /* Make sure we are at 3.3V signalling voltage */ >> - err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330); >> + err = mmc_set_signal_voltage(host, MMC_SIGNAL_VOLTAGE_330, 0); >> if (err) >> return err; >> >> diff --git a/drivers/mmc/core/sd_ops.c b/drivers/mmc/core/sd_ops.c >> index fc7edc4..6fd35f6 100644 >> --- a/drivers/mmc/core/sd_ops.c >> +++ b/drivers/mmc/core/sd_ops.c >> @@ -149,7 +149,7 @@ int mmc_app_set_bus_width(struct mmc_card *card, >> int width) >> return 0; >> } >> >> -int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage) >> +int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage, >> int cmd11) >> { >> struct mmc_command cmd; >> int err = 0; >> @@ -160,7 +160,7 @@ int mmc_set_signal_voltage(struct mmc_host *host, >> int signal_voltage) >> * Send CMD11 only if the request is to switch the card to >> * 1.8V signalling. >> */ >> - if (signal_voltage == MMC_SIGNAL_VOLTAGE_180) { >> + if (signal_voltage != MMC_SIGNAL_VOLTAGE_330 && cmd11) { > > Since we are going to send CMD11 only to change to 1.8V signaling, and when cmd11 is set, isn't it better to have > > if ((signal_voltage == MMC_SIGNAL_VOLTAGE_180) && cmd11) { I am okay with this. Wanted to cover the possible future case for 1.2V support and CMD11. I know eMMC does not do CMD11 but incase SD or SDIO ever did. If you feel strongly will change code. > > Thanks, > Arindam > >> memset(&cmd, 0, sizeof(struct mmc_command)); >> >> cmd.opcode = SD_SWITCH_VOLTAGE; >> diff --git a/drivers/mmc/core/sd_ops.h b/drivers/mmc/core/sd_ops.h >> index d5bdda5..2670e71 100644 >> --- a/drivers/mmc/core/sd_ops.h >> +++ b/drivers/mmc/core/sd_ops.h >> @@ -20,7 +20,8 @@ int mmc_app_send_scr(struct mmc_card *card, u32 >> *scr); >> int mmc_sd_switch(struct mmc_card *card, int mode, int group, >> u8 value, u8 *resp); >> int mmc_app_sd_status(struct mmc_card *card, void *ssr); >> -int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage); >> +int mmc_set_signal_voltage(struct mmc_host *host, int signal_voltage, >> + int cmd11); >> >> #endif >> >> -- >> 1.7.0.4 >> >> > > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html