Hi Arindam,

On Apr 25, 2011, at 11:45 PM, Nath, Arindam wrote:

> Hi Philip,
> 
> 
>> -----Original Message-----
>> From: Philip Rakity [mailto:[email protected]]
>> Sent: Saturday, April 23, 2011 1:56 AM
>> To: [email protected]
>> 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 <[email protected]>
>> ---
>> 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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to