diff mbox series

[U-Boot,v2] mmc: sti_sdhci: Fix sdhci_setup_cfg() call.

Message ID 20190724075102.26679-1-patrice.chotard@st.com
State Accepted
Commit 2e01fcf17c221cba2b54d0f238a39f12b0ef361a
Delegated to: Patrice Chotard
Headers show
Series [U-Boot,v2] mmc: sti_sdhci: Fix sdhci_setup_cfg() call. | expand

Commit Message

Patrice CHOTARD July 24, 2019, 7:51 a.m. UTC
host->mmc, host->mmc->dev and host->mmc->priv must be set
before calling sdhci_setup_cfg() to avoid hang during mmc
initialization.

Thanks to commit 3d296365e4e8
("mmc: sdhci: Add support for sdhci-caps-mask") which put
this issue into evidence.

Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
---

Changes in v2:
  - move host->mmc->priv initialization before sdhci_setup_cfg() call

 drivers/mmc/sti_sdhci.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Kever Yang July 24, 2019, 9:12 a.m. UTC | #1
On 2019/7/24 下午3:51, Patrice Chotard wrote:
> host->mmc, host->mmc->dev and host->mmc->priv must be set
> before calling sdhci_setup_cfg() to avoid hang during mmc
> initialization.
>
> Thanks to commit 3d296365e4e8
> ("mmc: sdhci: Add support for sdhci-caps-mask") which put
> this issue into evidence.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>
> Changes in v2:
>    - move host->mmc->priv initialization before sdhci_setup_cfg() call
>
>   drivers/mmc/sti_sdhci.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/sti_sdhci.c b/drivers/mmc/sti_sdhci.c
> index 8ed47e113d..d6c75ea601 100644
> --- a/drivers/mmc/sti_sdhci.c
> +++ b/drivers/mmc/sti_sdhci.c
> @@ -97,14 +97,14 @@ static int sti_sdhci_probe(struct udevice *dev)
>   		       SDHCI_QUIRK_NO_HISPD_BIT;
>   
>   	host->host_caps = MMC_MODE_DDR_52MHz;
> +	host->mmc = &plat->mmc;
> +	host->mmc->dev = dev;
> +	host->mmc->priv = host;
>   
>   	ret = sdhci_setup_cfg(&plat->cfg, host, 50000000, 400000);
>   	if (ret)
>   		return ret;
>   
> -	host->mmc = &plat->mmc;
> -	host->mmc->priv = host;
> -	host->mmc->dev = dev;
>   	upriv->mmc = host->mmc;


Same issue like rockchip_sdhci.c.

Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
>   
>   	return sdhci_probe(dev);
Patrice CHOTARD Aug. 26, 2019, 1:48 p.m. UTC | #2
On 7/24/19 9:51 AM, Patrice Chotard wrote:
> host->mmc, host->mmc->dev and host->mmc->priv must be set
> before calling sdhci_setup_cfg() to avoid hang during mmc
> initialization.
>
> Thanks to commit 3d296365e4e8
> ("mmc: sdhci: Add support for sdhci-caps-mask") which put
> this issue into evidence.
>
> Signed-off-by: Patrice Chotard <patrice.chotard@st.com>
> ---
>
> Changes in v2:
>   - move host->mmc->priv initialization before sdhci_setup_cfg() call
>
>  drivers/mmc/sti_sdhci.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/mmc/sti_sdhci.c b/drivers/mmc/sti_sdhci.c
> index 8ed47e113d..d6c75ea601 100644
> --- a/drivers/mmc/sti_sdhci.c
> +++ b/drivers/mmc/sti_sdhci.c
> @@ -97,14 +97,14 @@ static int sti_sdhci_probe(struct udevice *dev)
>  		       SDHCI_QUIRK_NO_HISPD_BIT;
>  
>  	host->host_caps = MMC_MODE_DDR_52MHz;
> +	host->mmc = &plat->mmc;
> +	host->mmc->dev = dev;
> +	host->mmc->priv = host;
>  
>  	ret = sdhci_setup_cfg(&plat->cfg, host, 50000000, 400000);
>  	if (ret)
>  		return ret;
>  
> -	host->mmc = &plat->mmc;
> -	host->mmc->priv = host;
> -	host->mmc->dev = dev;
>  	upriv->mmc = host->mmc;
>  
>  	return sdhci_probe(dev);


Applied on STM32 tree

Thanks
diff mbox series

Patch

diff --git a/drivers/mmc/sti_sdhci.c b/drivers/mmc/sti_sdhci.c
index 8ed47e113d..d6c75ea601 100644
--- a/drivers/mmc/sti_sdhci.c
+++ b/drivers/mmc/sti_sdhci.c
@@ -97,14 +97,14 @@  static int sti_sdhci_probe(struct udevice *dev)
 		       SDHCI_QUIRK_NO_HISPD_BIT;
 
 	host->host_caps = MMC_MODE_DDR_52MHz;
+	host->mmc = &plat->mmc;
+	host->mmc->dev = dev;
+	host->mmc->priv = host;
 
 	ret = sdhci_setup_cfg(&plat->cfg, host, 50000000, 400000);
 	if (ret)
 		return ret;
 
-	host->mmc = &plat->mmc;
-	host->mmc->priv = host;
-	host->mmc->dev = dev;
 	upriv->mmc = host->mmc;
 
 	return sdhci_probe(dev);