diff mbox series

mmc: msm_sdhci: Use mmc_of_parse for setting host_caps

Message ID 20200716090726.13343-1-manivannan.sadhasivam@linaro.org
State Accepted
Commit 8505147403584f322bf1cb66b1c796bc11f29ad4
Delegated to: Peng Fan
Headers show
Series mmc: msm_sdhci: Use mmc_of_parse for setting host_caps | expand

Commit Message

Manivannan Sadhasivam July 16, 2020, 9:07 a.m. UTC
Since the introduction of 'get_cd' callback in sdhci core,
dragonboard410c's MMC interface is broken. It turns out that 'get_cd'
callback checks for the host_caps for validating the chip select. And
since the msm_sdhci driver is not parsing the host_caps from DT, not
all of the cababilities are parsed properly. This results in the MMC
interfaces to be broken.

Hence, fix this by adding a call to 'mmc_of_parse' during driver probe.

Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
 drivers/mmc/msm_sdhci.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Aníbal Limón July 16, 2020, 1:50 p.m. UTC | #1
I tested the patch using,

https://snapshots.linaro.org/96boards/dragonboard410c/linaro/uboot/28/

And now the mmc devices appears.

On Thu, 16 Jul 2020 at 04:07, Manivannan Sadhasivam <
manivannan.sadhasivam@linaro.org> wrote:

> Since the introduction of 'get_cd' callback in sdhci core,
> dragonboard410c's MMC interface is broken. It turns out that 'get_cd'
> callback checks for the host_caps for validating the chip select. And
> since the msm_sdhci driver is not parsing the host_caps from DT, not
> all of the cababilities are parsed properly. This results in the MMC
> interfaces to be broken.
>
> Hence, fix this by adding a call to 'mmc_of_parse' during driver probe.
>
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
>
Tested-by: Aníbal Limón <anibal.limon@linaro.org>

> ---
>  drivers/mmc/msm_sdhci.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/drivers/mmc/msm_sdhci.c b/drivers/mmc/msm_sdhci.c
> index da3ae2ec35..23e2e0fbc3 100644
> --- a/drivers/mmc/msm_sdhci.c
> +++ b/drivers/mmc/msm_sdhci.c
> @@ -142,6 +142,10 @@ static int msm_sdc_probe(struct udevice *dev)
>                 writel(caps, host->ioaddr +
> SDHCI_VENDOR_SPEC_CAPABILITIES0);
>         }
>
> +       ret = mmc_of_parse(dev, &plat->cfg);
> +       if (ret)
> +               return ret;
> +
>         host->mmc = &plat->mmc;
>         host->mmc->dev = dev;
>         ret = sdhci_setup_cfg(&plat->cfg, host, 0, 0);
> --
> 2.17.1
>
>
Ramon Fried July 16, 2020, 4:48 p.m. UTC | #2
On Thu, Jul 16, 2020 at 4:50 PM Anibal Limon <anibal.limon@linaro.org> wrote:
>
> I tested the patch using,
>
> https://snapshots.linaro.org/96boards/dragonboard410c/linaro/uboot/28/
>
> And now the mmc devices appears.
>
> On Thu, 16 Jul 2020 at 04:07, Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> wrote:
>>
>> Since the introduction of 'get_cd' callback in sdhci core,
>> dragonboard410c's MMC interface is broken. It turns out that 'get_cd'
>> callback checks for the host_caps for validating the chip select. And
>> since the msm_sdhci driver is not parsing the host_caps from DT, not
>> all of the cababilities are parsed properly. This results in the MMC
>> interfaces to be broken.
>>
>> Hence, fix this by adding a call to 'mmc_of_parse' during driver probe.
>>
>> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
>
> Tested-by: Aníbal Limón <anibal.limon@linaro.org>
>>
>> ---
>>  drivers/mmc/msm_sdhci.c | 4 ++++
>>  1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/mmc/msm_sdhci.c b/drivers/mmc/msm_sdhci.c
>> index da3ae2ec35..23e2e0fbc3 100644
>> --- a/drivers/mmc/msm_sdhci.c
>> +++ b/drivers/mmc/msm_sdhci.c
>> @@ -142,6 +142,10 @@ static int msm_sdc_probe(struct udevice *dev)
>>                 writel(caps, host->ioaddr + SDHCI_VENDOR_SPEC_CAPABILITIES0);
>>         }
>>
>> +       ret = mmc_of_parse(dev, &plat->cfg);
>> +       if (ret)
>> +               return ret;
>> +
>>         host->mmc = &plat->mmc;
>>         host->mmc->dev = dev;
>>         ret = sdhci_setup_cfg(&plat->cfg, host, 0, 0);
>> --
>> 2.17.1
>>
Reviewed-By: Ramon Fried <rfried.dev@gmail.com>
Jaehoon Chung July 17, 2020, 12:36 a.m. UTC | #3
On 7/16/20 6:07 PM, Manivannan Sadhasivam wrote:
> Since the introduction of 'get_cd' callback in sdhci core,
> dragonboard410c's MMC interface is broken. It turns out that 'get_cd'
> callback checks for the host_caps for validating the chip select. And
> since the msm_sdhci driver is not parsing the host_caps from DT, not
> all of the cababilities are parsed properly. This results in the MMC
> interfaces to be broken.
> 
> Hence, fix this by adding a call to 'mmc_of_parse' during driver probe.
> 
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>

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

Best Regards,
Jaehoon Chung

> ---
>  drivers/mmc/msm_sdhci.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/mmc/msm_sdhci.c b/drivers/mmc/msm_sdhci.c
> index da3ae2ec35..23e2e0fbc3 100644
> --- a/drivers/mmc/msm_sdhci.c
> +++ b/drivers/mmc/msm_sdhci.c
> @@ -142,6 +142,10 @@ static int msm_sdc_probe(struct udevice *dev)
>  		writel(caps, host->ioaddr + SDHCI_VENDOR_SPEC_CAPABILITIES0);
>  	}
>  
> +	ret = mmc_of_parse(dev, &plat->cfg);
> +	if (ret)
> +		return ret;
> +
>  	host->mmc = &plat->mmc;
>  	host->mmc->dev = dev;
>  	ret = sdhci_setup_cfg(&plat->cfg, host, 0, 0);
>
diff mbox series

Patch

diff --git a/drivers/mmc/msm_sdhci.c b/drivers/mmc/msm_sdhci.c
index da3ae2ec35..23e2e0fbc3 100644
--- a/drivers/mmc/msm_sdhci.c
+++ b/drivers/mmc/msm_sdhci.c
@@ -142,6 +142,10 @@  static int msm_sdc_probe(struct udevice *dev)
 		writel(caps, host->ioaddr + SDHCI_VENDOR_SPEC_CAPABILITIES0);
 	}
 
+	ret = mmc_of_parse(dev, &plat->cfg);
+	if (ret)
+		return ret;
+
 	host->mmc = &plat->mmc;
 	host->mmc->dev = dev;
 	ret = sdhci_setup_cfg(&plat->cfg, host, 0, 0);