Hi Arindam,

Since this mmc_set_signal_voltage() routine will be used by SDIO and MMC should 
the code be moved
the code core.c ?

I am not sure about drive strength or driver type since SDIO handles these 
differently then SD.

Philip

On Apr 26, 2011, at 8:26 AM, Philip Rakity wrote:

> 
> 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

--
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