On 28/11/16 21:16, Zach Brown wrote:
> Add PCI ID for Intel byt sdio host controller sub-vended by NI.
> 
> The controller has different behavior because of the board layout NI
> puts it on.
> 
> Signed-off-by: Zach Brown <[email protected]>

Acked-by: Adrian Hunter <[email protected]>

> ---
>  drivers/mmc/host/sdhci-pci-core.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
> 
> diff --git a/drivers/mmc/host/sdhci-pci-core.c 
> b/drivers/mmc/host/sdhci-pci-core.c
> index 1d9e00a..9741505 100644
> --- a/drivers/mmc/host/sdhci-pci-core.c
> +++ b/drivers/mmc/host/sdhci-pci-core.c
> @@ -375,6 +375,13 @@ static int byt_emmc_probe_slot(struct sdhci_pci_slot 
> *slot)
>       return 0;
>  }
>  
> +static int ni_byt_sdio_probe_slot(struct sdhci_pci_slot *slot)
> +{
> +     slot->host->mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_NONREMOVABLE |
> +                              MMC_CAP_WAIT_WHILE_BUSY;
> +     return 0;
> +}
> +
>  static int byt_sdio_probe_slot(struct sdhci_pci_slot *slot)
>  {
>       slot->host->mmc->caps |= MMC_CAP_POWER_OFF_CARD | MMC_CAP_NONREMOVABLE |
> @@ -447,6 +454,15 @@ static const struct sdhci_pci_fixes sdhci_intel_byt_emmc 
> = {
>       .ops            = &sdhci_intel_byt_ops,
>  };
>  
> +static const struct sdhci_pci_fixes sdhci_ni_byt_sdio = {
> +     .quirks         = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
> +     .quirks2        = SDHCI_QUIRK2_HOST_OFF_CARD_ON |
> +                       SDHCI_QUIRK2_PRESET_VALUE_BROKEN,
> +     .allow_runtime_pm = true,
> +     .probe_slot     = ni_byt_sdio_probe_slot,
> +     .ops            = &sdhci_intel_byt_ops,
> +};
> +
>  static const struct sdhci_pci_fixes sdhci_intel_byt_sdio = {
>       .quirks         = SDHCI_QUIRK_NO_ENDATTR_IN_NOPDESC,
>       .quirks2        = SDHCI_QUIRK2_HOST_OFF_CARD_ON |
> @@ -1079,6 +1095,14 @@ static const struct pci_device_id pci_ids[] = {
>       {
>               .vendor         = PCI_VENDOR_ID_INTEL,
>               .device         = PCI_DEVICE_ID_INTEL_BYT_SDIO,
> +             .subvendor      = PCI_VENDOR_ID_NI,
> +             .subdevice      = 0x7884,
> +             .driver_data    = (kernel_ulong_t)&sdhci_ni_byt_sdio,
> +     },
> +
> +     {
> +             .vendor         = PCI_VENDOR_ID_INTEL,
> +             .device         = PCI_DEVICE_ID_INTEL_BYT_SDIO,
>               .subvendor      = PCI_ANY_ID,
>               .subdevice      = PCI_ANY_ID,
>               .driver_data    = (kernel_ulong_t)&sdhci_intel_byt_sdio,
> 

Reply via email to