Hi Mattijs,

On 23/08/23 13:36, Mattijs Korpershoek wrote:
On mar., août 22, 2023 at 13:41, Nishanth Menon <n...@ti.com> wrote:

From: Nitin Yadav <n-ya...@ti.com>

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 <n-ya...@ti.com>
Signed-off-by: Nishanth Menon <n...@ti.com>
---
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 ?
yes, its two different fix. Internally I posted two patches for them. can be referred in below links:

https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.1.y-cicd&id=b5a2f7972fd142df03a15ba58829aa068c891abf

https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/?h=ti-linux-6.1.y-cicd&id=527095165281cbc60a1b42995c1e55e6756cbe93


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

--
Regards,
Nitin

Reply via email to