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

