Re: [PATCH 1/2] drivers: mmc: Add wait_dat0 support for Freescale eSDHC driver

Jaehoon Chung
2021-08-28T05:08:29Z

On 8/18/21 4:46 AM, stcarlso@linux.microsoft.com wrote:
> From: Stephen Carlson <stcarlso@linux.microsoft.com>
>
> Adds an implementation of the wait_dat0 MMC operation for the Freescale
> eSHDC driver, allowing the driver to continue when the card is ready
> rather than waiting for the worst case time on each MMC switch operation.
>
> Signed-off-by: Stephen Carlson <stcarlso@linux.microsoft.com>
> ---
> drivers/mmc/fsl_esdhc.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/drivers/mmc/fsl_esdhc.c b/drivers/mmc/fsl_esdhc.c
> index 1d98fa65c4..f74289a677 100644
> --- a/drivers/mmc/fsl_esdhc.c
> +++ b/drivers/mmc/fsl_esdhc.c
> @@ -27,6 +27,7 @@
> #include <dm/device_compat.h>
> #include <linux/bitops.h>
> #include <linux/delay.h>
> +#include <linux/iopoll.h>
> #include <linux/dma-mapping.h>
> #include <sdhci.h>
>
> @@ -1145,6 +1146,20 @@ int fsl_esdhc_hs400_prepare_ddr(struct udevice *dev)
> return 0;
> }
>
> +static int fsl_esdhc_wait_dat0(struct udevice *dev, int state,
> + int timeout_us)
> +{
> + int ret;

nitpick, doesn't need to use the ret variable.

> + u32 tmp;
> + struct fsl_esdhc_priv *priv = dev_get_priv(dev);
> + struct fsl_esdhc *regs = priv->esdhc_regs;
> +
> + ret = readx_poll_timeout(esdhc_read32, &regs->prsstat, tmp,
> + !!(tmp & PRSSTAT_DAT0) == !!state,
> + timeout_us);
> + return ret;

return readx_poll_timeout(); ?

Other things look good to me.

Reviewed-by: Jaehoon Chung <jh80.chung@samsung.com>

Best Regards,
Jaehoon Chung

> +}
> +
> static const struct dm_mmc_ops fsl_esdhc_ops = {
> .get_cd = fsl_esdhc_get_cd,
> .send_cmd = fsl_esdhc_send_cmd,
> @@ -1154,6 +1169,7 @@ static const struct dm_mmc_ops fsl_esdhc_ops = {
> #endif
> .reinit = fsl_esdhc_reinit,
> .hs400_prepare_ddr = fsl_esdhc_hs400_prepare_ddr,
> + .wait_dat0 = fsl_esdhc_wait_dat0,
> };
>
> static const struct udevice_id fsl_esdhc_ids[] = {
>