[PULL][Xenial] Update for third party Redpine Wifi-BT and Exar USB UART drivers

Shrirang Bagul shrirang.bagul at canonical.com
Fri Apr 21 14:50:51 UTC 2017


On Fri, Apr 21, 2017 at 6:43 PM, Stefan Bader <stefan.bader at canonical.com>
wrote:

> On 21.04.2017 11:12, Shrirang Bagul wrote:
> > git://kernel.ubuntu.com/snb/ubuntu-xenial.git caracalla-kt-for-arev
>
> I really don't understand what the changes to drivers/mmc/host/sdhci.c
> should
> accomplish:
>
> @@ -1745,9 +1746,18 @@ static void sdhci_enable_sdio_irq_nolock(struct
> sdhci_host *host, int enable)
>  static void sdhci_enable_sdio_irq(struct mmc_host *mmc, int enable)
>  {
>         struct sdhci_host *host = mmc_priv(mmc);
> +       struct pci_dev *pci_host;
>         unsigned long flags;
>
> -       sdhci_runtime_pm_get(host);
> +       pci_host = pci_get_subsys(PCI_ANY_ID, PCI_ANY_ID,
> +                       0x1028, 0x07b9, NULL);
> +
> +       if (!pci_host)
> +               sdhci_runtime_pm_get(host);
> +       else {
> +               if (enable)
> +                       sdhci_runtime_pm_get(host);
> +       }
>
>         spin_lock_irqsave(&host->lock, flags);
>         if (enable)
>
> So pci_host set to a value means this is the gw and NULL for anything
> else. At
> least for everything else the behaviour is not changed. Only for the IOT
> device
> the reference (assuming that is what pm_get/put do) is kept between
> enabling the
> IRQ until disabling it (while otherwise it is kept only while modifying
> the state).
> On the positive side it should not cause regressions for everything else
> but
> while not seeing any additional protection for that case, then why change
> it at all?
>
> -Stefan
>

The patch is targeted to be applied only for specific models of Dell IoT
gateways which use
Intel Baytrail-I processors. This patch [1] is required to support SDIO
IRQ's on Baytrail [2].
Because this project will eventually go through  a de-branding /
re-branding process, quirks
based on DMI strings cannot be used to uniquely identify the hardware.
Hence, the use
of PCI host sub-system ID [3] to get runtime pm when sdio IRQ is enabled.

[1]
https://git.congatec.com/arm/qmx6_kernel/commit/2ced65a11885ea84c6d3cd2ec8832d489bb0c3f7
[2] http://www.spinics.net/lists/linux-mmc/msg41440.html
[3] Inspired from :
http://kernel.ubuntu.com/git/ubuntu/ubuntu-xenial.git/commit/?id=38a6598a75d76b6625fca0972cd463fe56cab368

-Shrirang

>
>
> @@ -1758,7 +1768,12 @@ static void sdhci_enable_sdio_irq(struct mmc_host
> *mmc,
> int enable)
>         sdhci_enable_sdio_irq_nolock(host, enable);
>         spin_unlock_irqrestore(&host->lock, flags);
>
> -       sdhci_runtime_pm_put(host);
> +       if (!pci_host)
> +               sdhci_runtime_pm_put(host);
> +       else {
> +               if (!enable)
> +                       sdhci_runtime_pm_put(host);
> +       }
>  }
>
>  static int sdhci_do_start_signal_voltage_switch(struct sdhci_host *host,
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/kernel-team/attachments/20170421/e5cfb987/attachment.html>


More information about the kernel-team mailing list