Re: [PATCH] mmc: sdhci-pci: Add support for Intel CNP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1 June 2017 at 11:10, Adrian Hunter <adrian.hunter@xxxxxxxxx> wrote:
> Add PCI ids and enhanced strobe support for Intel CNP. This is combined
> with GLK due to the pending CMDQ support which they both share.
>
> Signed-off-by: Adrian Hunter <adrian.hunter@xxxxxxxxx>

Thanks, applied for next!

Kind regards
Uffe

> ---
>  drivers/mmc/host/sdhci-pci-core.c | 46 ++++++++++++++++++++++++++++++++++++++-
>  drivers/mmc/host/sdhci-pci.h      |  3 +++
>  2 files changed, 48 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/mmc/host/sdhci-pci-core.c b/drivers/mmc/host/sdhci-pci-core.c
> index b3ddc32fa00b..8fa84a013be4 100644
> --- a/drivers/mmc/host/sdhci-pci-core.c
> +++ b/drivers/mmc/host/sdhci-pci-core.c
> @@ -543,6 +543,23 @@ static void sdhci_intel_set_power(struct sdhci_host *host, unsigned char mode,
>         }
>  }
>
> +#define INTEL_HS400_ES_REG 0x78
> +#define INTEL_HS400_ES_BIT BIT(0)
> +
> +static void intel_hs400_enhanced_strobe(struct mmc_host *mmc,
> +                                       struct mmc_ios *ios)
> +{
> +       struct sdhci_host *host = mmc_priv(mmc);
> +       u32 val;
> +
> +       val = sdhci_readl(host, INTEL_HS400_ES_REG);
> +       if (ios->enhanced_strobe)
> +               val |= INTEL_HS400_ES_BIT;
> +       else
> +               val &= ~INTEL_HS400_ES_BIT;
> +       sdhci_writel(host, val, INTEL_HS400_ES_REG);
> +}
> +
>  static const struct sdhci_ops sdhci_intel_byt_ops = {
>         .set_clock              = sdhci_set_clock,
>         .set_power              = sdhci_intel_set_power,
> @@ -579,6 +596,19 @@ static int byt_emmc_probe_slot(struct sdhci_pci_slot *slot)
>         return 0;
>  }
>
> +static int glk_emmc_probe_slot(struct sdhci_pci_slot *slot)
> +{
> +       int ret = byt_emmc_probe_slot(slot);
> +
> +       if (slot->chip->pdev->device != PCI_DEVICE_ID_INTEL_GLK_EMMC) {
> +               slot->host->mmc->caps2 |= MMC_CAP2_HS400_ES,
> +               slot->host->mmc_host_ops.hs400_enhanced_strobe =
> +                                               intel_hs400_enhanced_strobe;
> +       }
> +
> +       return ret;
> +}
> +
>  #ifdef CONFIG_ACPI
>  static int ni_set_max_freq(struct sdhci_pci_slot *slot)
>  {
> @@ -654,6 +684,17 @@ static int byt_sd_probe_slot(struct sdhci_pci_slot *slot)
>         .priv_size      = sizeof(struct intel_host),
>  };
>
> +static const struct sdhci_pci_fixes sdhci_intel_glk_emmc = {
> +       .allow_runtime_pm       = true,
> +       .probe_slot             = glk_emmc_probe_slot,
> +       .quirks                 = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
> +       .quirks2                = SDHCI_QUIRK2_PRESET_VALUE_BROKEN |
> +                                 SDHCI_QUIRK2_CAPS_BIT63_FOR_HS400 |
> +                                 SDHCI_QUIRK2_STOP_WITH_TC,
> +       .ops                    = &sdhci_intel_byt_ops,
> +       .priv_size              = sizeof(struct intel_host),
> +};
> +
>  static const struct sdhci_pci_fixes sdhci_ni_byt_sdio = {
>         .quirks         = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
>         .quirks2        = SDHCI_QUIRK2_HOST_OFF_CARD_ON |
> @@ -1225,9 +1266,12 @@ static int amd_probe(struct sdhci_pci_chip *chip)
>         SDHCI_PCI_DEVICE(INTEL, APL_EMMC,  intel_byt_emmc),
>         SDHCI_PCI_DEVICE(INTEL, APL_SDIO,  intel_byt_sdio),
>         SDHCI_PCI_DEVICE(INTEL, APL_SD,    intel_byt_sd),
> -       SDHCI_PCI_DEVICE(INTEL, GLK_EMMC,  intel_byt_emmc),
> +       SDHCI_PCI_DEVICE(INTEL, GLK_EMMC,  intel_glk_emmc),
>         SDHCI_PCI_DEVICE(INTEL, GLK_SDIO,  intel_byt_sdio),
>         SDHCI_PCI_DEVICE(INTEL, GLK_SD,    intel_byt_sd),
> +       SDHCI_PCI_DEVICE(INTEL, CNP_EMMC,  intel_glk_emmc),
> +       SDHCI_PCI_DEVICE(INTEL, CNP_SD,    intel_byt_sd),
> +       SDHCI_PCI_DEVICE(INTEL, CNPH_SD,   intel_byt_sd),
>         SDHCI_PCI_DEVICE(O2, 8120,     o2),
>         SDHCI_PCI_DEVICE(O2, 8220,     o2),
>         SDHCI_PCI_DEVICE(O2, 8221,     o2),
> diff --git a/drivers/mmc/host/sdhci-pci.h b/drivers/mmc/host/sdhci-pci.h
> index e63fb9b3b776..75196a2b5289 100644
> --- a/drivers/mmc/host/sdhci-pci.h
> +++ b/drivers/mmc/host/sdhci-pci.h
> @@ -37,6 +37,9 @@
>  #define PCI_DEVICE_ID_INTEL_GLK_SD     0x31ca
>  #define PCI_DEVICE_ID_INTEL_GLK_EMMC   0x31cc
>  #define PCI_DEVICE_ID_INTEL_GLK_SDIO   0x31d0
> +#define PCI_DEVICE_ID_INTEL_CNP_EMMC   0x9dc4
> +#define PCI_DEVICE_ID_INTEL_CNP_SD     0x9df5
> +#define PCI_DEVICE_ID_INTEL_CNPH_SD    0xa375
>
>  #define PCI_DEVICE_ID_SYSKONNECT_8000  0x8000
>  #define PCI_DEVICE_ID_VIA_95D0         0x95d0
> --
> 1.9.1
>
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux