Message ID | 20200716090726.13343-1-manivannan.sadhasivam@linaro.org |
---|---|
State | Accepted |
Commit | 8505147403584f322bf1cb66b1c796bc11f29ad4 |
Headers | show |
Series | mmc: msm_sdhci: Use mmc_of_parse for setting host_caps | expand |
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 > >
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>
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 --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);
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(+) -- 2.17.1