RE: UHS-I bus speed mode should be set last in UHS initialization

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Adding Philip and Zhangfei.

Hi Subhash,

Does your controller follow some non-standard steps for initialization? I referred to Figure 3-14, section 3.9.4 of Physical Layer Spec v3.01, and it shows the order, setting Driver Strength Select, Bus Speed Mode, and then Current Limit. So please confirm back.

Thanks,
Arindam

> -----Original Message-----
> From: subhashj@xxxxxxxxxxxxxx [mailto:subhashj@xxxxxxxxxxxxxx]
> Sent: Tuesday, June 14, 2011 1:27 AM
> To: Nath, Arindam
> Subject: FW: UHS-I bus speed mode should be set last in UHS
> initialization
> 
> Hi Arindam,
> 
> Does this change make sense for you? If yes, then I can go ahead and
> post a
> patch for this.
> 
> Regards,
> Subhash
> 
> -----Original Message-----
> From: linux-mmc-owner@xxxxxxxxxxxxxxx
> [mailto:linux-mmc-owner@xxxxxxxxxxxxxxx] On Behalf Of Subhash Jadavani
> Sent: Monday, June 06, 2011 3:44 PM
> To: linux-mmc@xxxxxxxxxxxxxxx
> Subject: UHS-I bus speed mode should be set last in UHS initialization
> 
> Hi Chris, Arindam,
> 
> mmc_sd_init_uhs_card function sets the driver type, current limit and
> bus
> speed mode on card as well as on host controller side. Currently bus
> speed
> mode is set by sending CMD6 to card and setting timing mode in host
> controller and then before initiating tuning sequence, it also tries to
> set current limit by sending CMD6 to card which fails on our host
> controller (due to data CRC or timeout errors) if bus speed mode is
> SDR50/SDR104 mode.
> 
> So basically bus speed mode should be set only after current limit is
> set
> in the card and immediately after setting the bus speed mode, tuning
> sequence should be initiated. So following changes is needed. If it
> looks
> fine then I can send you this change in patch.
> 
> diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c index
> 0da37eb..19634d5 100644
> --- a/drivers/mmc/core/sd.c
> +++ b/drivers/mmc/core/sd.c
> @@ -610,13 +610,13 @@ static int mmc_sd_init_uhs_card(struct mmc_card
> *card)
>         if (err)
>                 goto out;
> 
> -       /* Set bus speed mode of the card */
> -       err = sd_set_bus_speed_mode(card, status);
> +       /* Set current limit for the card */
> +       err = sd_set_current_limit(card, status);
>         if (err)
>                 goto out;
> 
> -       /* Set current limit for the card */
> -       err = sd_set_current_limit(card, status);
> +       /* Set bus speed mode of the card */
> +       err = sd_set_bus_speed_mode(card, status);
>         if (err)
>                 goto out;
> 
> Regards,
> Subhash
> 
> --
> Sent by a consultant of the Qualcomm Innovation Center, Inc.
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora
> Forum.
> 
> 
> --
> 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
> 


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


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux