HI Jaehoon, > -----Original Message----- > From: Jaehoon Chung <jh80.ch...@samsung.com> > Sent: Tuesday, August 3, 2021 3:45 AM > To: Ashok Reddy Soma <ashok...@xilinx.com>; u-boot@lists.denx.de > Cc: peng....@nxp.com; faiz_ab...@ti.com; s...@chromium.org; > mich...@walle.cc; git <g...@xilinx.com>; mon...@monstr.eu; > somaashokre...@gmail.com; T Karthik Reddy <tkart...@xilinx.com> > Subject: Re: [PATCH v4 6/7] mmc: zynq_sdhci: Wait till sd card detect state is > stable > > Hi Ashok, > > On 8/2/21 7:16 PM, Ashok Reddy Soma wrote: > > From: T Karthik Reddy <t.karthik.re...@xilinx.com> > > > > As per SD spec when SD host controller is reset, it takes 1000msec to > > detect the card state. In case, if we enable the sd bus voltage & card > > detect state is not stable, then host controller will disable the sd > > bus voltage. > > > > In case of warm/subsystem reboot, due to unstable card detect state > > host controller is disabling the sd bus voltage to sd card causing sd > > card timeout error. So we wait for a maximum of 1000msec to get the > > card detect state stable before we enable the sd bus voltage. > > > > This current fix is workaround for now, this needs to be analysed > > further. Zynqmp platform should behave the same as Versal, but we did > > not encounter this issue as of now. So we are fixing it for Versal > > only. > > > > Signed-off-by: T Karthik Reddy <t.karthik.re...@xilinx.com> > > Signed-off-by: Ashok Reddy Soma <ashok.reddy.s...@xilinx.com> > > --- > > > > (no changes since v2) > > > > Changes in v2: > > - Changed return error from -EIO to -ETIMEDOUT in arasan_sdhci_probe() > > in card detect state stable workaround > > > > drivers/mmc/zynq_sdhci.c | 17 +++++++++++++++++ > > 1 file changed, 17 insertions(+) > > > > diff --git a/drivers/mmc/zynq_sdhci.c b/drivers/mmc/zynq_sdhci.c index > > 9a1693940a..89776f48eb 100644 > > --- a/drivers/mmc/zynq_sdhci.c > > +++ b/drivers/mmc/zynq_sdhci.c > > @@ -776,6 +776,23 @@ static int arasan_sdhci_probe(struct udevice *dev) > > return ret; > > upriv->mmc = host->mmc; > > > > + /* > > + * Wait for 1000msec till the card detect state gets stable > > + * else host controller will set sd power bus voltage to 0. > > + */ > > According to commit-msg, this is workaround code, right? > Then could you add FIXME or WORKAROUND in comment.
Sure, I will add WORKAROUND in comment and send V5. Thanks, Ashok > > Best Regards, > Jaehoon Chung > > > + if (IS_ENABLED(CONFIG_ARCH_VERSAL)) { > > + u32 timeout = 1000; > > + > > + while (((sdhci_readl(host, SDHCI_PRESENT_STATE) & > > + SDHCI_CARD_STATE_STABLE) == 0) && timeout--) { > > + mdelay(1); > > + } > > + if (!timeout) { > > + dev_err(dev, "Sdhci card detect state not stable\n"); > > + return -ETIMEDOUT; > > + } > > + } > > + > > return sdhci_probe(dev); > > } > > > >