RE: [PATCH 2/3] mmc: sdhci-of-arasan: Add intel Thunder Bay SOC support to the arasan eMMC driver

From: A, Rashmi
Date: Mon Aug 09 2021 - 01:16:32 EST




> -----Original Message-----
> From: Ulf Hansson <ulf.hansson@xxxxxxxxxx>
> Sent: Friday, August 6, 2021 6:36 PM
> To: A, Rashmi <rashmi.a@xxxxxxxxx>
> Cc: linux-drivers-review-request@xxxxxxxxxxxxxxxxx; Michal Simek
> <michal.simek@xxxxxxxxxx>; linux-mmc <linux-mmc@xxxxxxxxxxxxxxx>; Linux
> ARM <linux-arm-kernel@xxxxxxxxxxxxxxxxxxx>; Linux Kernel Mailing List <linux-
> kernel@xxxxxxxxxxxxxxx>; Kishon <kishon@xxxxxx>; Vinod Koul
> <vkoul@xxxxxxxxxx>; Andy Shevchenko
> <andriy.shevchenko@xxxxxxxxxxxxxxx>; linux-phy@xxxxxxxxxxxxxxxxxxx; Mark
> Gross <mgross@xxxxxxxxxxxxxxx>; kris.pan@xxxxxxxxxxxxxxx; Zhou, Furong
> <furong.zhou@xxxxxxxxx>; Sangannavar, Mallikarjunappa
> <mallikarjunappa.sangannavar@xxxxxxxxx>; Hunter, Adrian
> <adrian.hunter@xxxxxxxxx>; Vaidya, Mahesh R
> <mahesh.r.vaidya@xxxxxxxxx>; Srikandan, Nandhini
> <nandhini.srikandan@xxxxxxxxx>; Demakkanavar, Kenchappa
> <kenchappa.demakkanavar@xxxxxxxxx>
> Subject: Re: [PATCH 2/3] mmc: sdhci-of-arasan: Add intel Thunder Bay SOC
> support to the arasan eMMC driver
>
> On Fri, 30 Jul 2021 at 08:33, <rashmi.a@xxxxxxxxx> wrote:
> >
> > From: Rashmi A <rashmi.a@xxxxxxxxx>
> >
> > Intel Thunder Bay SoC eMMC controller is based on Arasan eMMC 5.1 host
> > controller IP
> >
> > Signed-off-by: Rashmi A <rashmi.a@xxxxxxxxx>
> > Reviewed-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>
>
> Rashmi, is it safe to apply this separately from the phy driver/dt changes?
> Then I can queue this via my mmc tree, if you like.
No, the phy driver/dt changes must go together with "mmc: sdhci-of-arasan: Add intel Thunder Bay SOC support to the arasan eMMC driver" patch.

Regards
Rashmi
>
> Kind regards
> Uffe
>
> > ---
> > drivers/mmc/host/sdhci-of-arasan.c | 29
> ++++++++++++++++++++++++++++-
> > 1 file changed, 28 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/mmc/host/sdhci-of-arasan.c
> > b/drivers/mmc/host/sdhci-of-arasan.c
> > index 839965f7c717..6f202fb7a546 100644
> > --- a/drivers/mmc/host/sdhci-of-arasan.c
> > +++ b/drivers/mmc/host/sdhci-of-arasan.c
> > @@ -185,6 +185,13 @@ static const struct sdhci_arasan_soc_ctl_map
> intel_lgm_sdxc_soc_ctl_map = {
> > .hiword_update = false,
> > };
> >
> > +static const struct sdhci_arasan_soc_ctl_map thunderbay_soc_ctl_map = {
> > + .baseclkfreq = { .reg = 0x0, .width = 8, .shift = 14 },
> > + .clockmultiplier = { .reg = 0x4, .width = 8, .shift = 14 },
> > + .support64b = { .reg = 0x4, .width = 1, .shift = 24 },
> > + .hiword_update = false,
> > +};
> > +
> > static const struct sdhci_arasan_soc_ctl_map intel_keembay_soc_ctl_map
> = {
> > .baseclkfreq = { .reg = 0x0, .width = 8, .shift = 14 },
> > .clockmultiplier = { .reg = 0x4, .width = 8, .shift = 14 }, @@
> > -430,6 +437,15 @@ static const struct sdhci_pltfm_data
> sdhci_arasan_cqe_pdata = {
> > SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN,
> > };
> >
> > +static const struct sdhci_pltfm_data sdhci_arasan_thunderbay_pdata = {
> > + .ops = &sdhci_arasan_cqe_ops,
> > + .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN |
> SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
> > + .quirks2 = SDHCI_QUIRK2_PRESET_VALUE_BROKEN |
> > + SDHCI_QUIRK2_CLOCK_DIV_ZERO_BROKEN |
> > + SDHCI_QUIRK2_STOP_WITH_TC |
> > + SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400,
> > +};
> > +
> > #ifdef CONFIG_PM_SLEEP
> > /**
> > * sdhci_arasan_suspend - Suspend method for the driver @@ -1098,6
> > +1114,12 @@ static struct sdhci_arasan_of_data
> sdhci_arasan_generic_data = {
> > .clk_ops = &arasan_clk_ops,
> > };
> >
> > +static const struct sdhci_arasan_of_data sdhci_arasan_thunderbay_data =
> {
> > + .soc_ctl_map = &thunderbay_soc_ctl_map,
> > + .pdata = &sdhci_arasan_thunderbay_pdata,
> > + .clk_ops = &arasan_clk_ops,
> > +};
> > +
> > static const struct sdhci_pltfm_data sdhci_keembay_emmc_pdata = {
> > .ops = &sdhci_arasan_cqe_ops,
> > .quirks = SDHCI_QUIRK_CAP_CLOCK_BASE_BROKEN | @@ -1231,6
> > +1253,10 @@ static const struct of_device_id sdhci_arasan_of_match[] = {
> > .compatible = "intel,keembay-sdhci-5.1-sdio",
> > .data = &intel_keembay_sdio_data,
> > },
> > + {
> > + .compatible = "intel,thunderbay-sdhci-5.1",
> > + .data = &sdhci_arasan_thunderbay_data,
> > + },
> > /* Generic compatible below here */
> > {
> > .compatible = "arasan,sdhci-8.9a", @@ -1582,7 +1608,8
> > @@ static int sdhci_arasan_probe(struct platform_device *pdev)
> >
> > if (of_device_is_compatible(np, "intel,keembay-sdhci-5.1-emmc") ||
> > of_device_is_compatible(np, "intel,keembay-sdhci-5.1-sd") ||
> > - of_device_is_compatible(np, "intel,keembay-sdhci-5.1-sdio")) {
> > + of_device_is_compatible(np, "intel,keembay-sdhci-5.1-sdio") ||
> > + of_device_is_compatible(np, "intel,thunderbay-sdhci-5.1"))
> > + {
> > sdhci_arasan_update_clockmultiplier(host, 0x0);
> > sdhci_arasan_update_support64b(host, 0x0);
> >
> > --
> > 2.17.1
> >