On mar., août 22, 2023 at 13:41, Nishanth Menon <[email protected]> wrote:

> From: Nitin Yadav <[email protected]>
>
> U-Boot is fail to boot class U1 UHS SD cards (such as microcenter)
> due to incorrect OTAP and ITAP delay select values. Update OTAP and
> ITAP delay select values based on recommeded RIOT values to fix boot
> issue.

nitpick: recommeded -> recommended

>
> Signed-off-by: Nitin Yadav <[email protected]>
> Signed-off-by: Nishanth Menon <[email protected]>
> ---
> Picked up from TI u-boot
> New patch in the series
>
>  drivers/mmc/am654_sdhci.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/mmc/am654_sdhci.c b/drivers/mmc/am654_sdhci.c
> index fd667aeafdaa..d0b51c0707d4 100644
> --- a/drivers/mmc/am654_sdhci.c
> +++ b/drivers/mmc/am654_sdhci.c
> @@ -442,12 +442,18 @@ static int j721e_4bit_sdhci_set_ios_post(struct 
> sdhci_host *host)
>  {
>       struct udevice *dev = host->mmc->dev;
>       struct am654_sdhci_plat *plat = dev_get_plat(dev);
> -     u32 otap_del_sel, mask, val;
> +     u32 otap_del_sel, itap_del_sel, mask, val;
>  
>       otap_del_sel = plat->otap_del_sel[host->mmc->selected_mode];
> -     mask = OTAPDLYENA_MASK | OTAPDLYSEL_MASK;
> -     val = (1 << OTAPDLYENA_SHIFT) | (otap_del_sel << OTAPDLYSEL_SHIFT);
> +     itap_del_sel = plat->itap_del_sel[host->mmc->selected_mode];
> +     mask = OTAPDLYENA_MASK | OTAPDLYSEL_MASK | ITAPDLYSEL_MASK |
> +             ITAPDLYENA_MASK;
> +     val = (1 << OTAPDLYENA_SHIFT) | (otap_del_sel << OTAPDLYSEL_SHIFT) |
> +             (1 << ITAPDLYENA_SHIFT) | (itap_del_sel << ITAPDLYSEL_SHIFT);
> +     regmap_update_bits(plat->base, PHY_CTRL4, ITAPCHGWIN_MASK,
> +                        1 << ITAPCHGWIN_SHIFT);
>       regmap_update_bits(plat->base, PHY_CTRL4, mask, val);
> +     regmap_update_bits(plat->base, PHY_CTRL4, ITAPCHGWIN_MASK, 0);
>  
>       regmap_update_bits(plat->base, PHY_CTRL5, CLKBUFSEL_MASK,
>                          plat->clkbuf_sel);
> @@ -501,7 +507,7 @@ static int sdhci_am654_get_otap_delay(struct udevice *dev,
>        * Remove the corresponding capability if an otap-del-sel
>        * value is not found
>        */
> -     for (i = MMC_HS; i <= MMC_HS_400; i++) {
> +     for (i = MMC_LEGACY; i <= MMC_HS_400; i++) {

I'm not super familiar with mmc drivers in general, but it feels like
this bit does not really belong in this patch.

Is this another bugfix for removing otap-del-sel for MMC_LEGACY devices
or does U1 UHS SD cards are considered to be of MMC_LEGACY type ?

>               ret = dev_read_u32(dev, td[i].otap_binding,
>                                  &plat->otap_del_sel[i]);
>               if (ret) {
> -- 
> 2.40.0

Reply via email to