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

Colin Ian King colin.king at canonical.com
Fri Apr 21 18:32:33 UTC 2017


On 21/04/17 15:50, Shrirang Bagul wrote:
> 
> 
> On Fri, Apr 21, 2017 at 6:43 PM, Stefan Bader
> <stefan.bader at canonical.com <mailto:stefan.bader at canonical.com>> wrote:
> 
>     On 21.04.2017 11 <tel:21.04.2017%2011>:12, Shrirang Bagul wrote:
>     > git://kernel.ubuntu.com/snb/ubuntu-xenial.git
>     <http://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


OK, thanks for the explanation. I can understand now why the keying on
the Dell IoT gateway is not based on a DMI check. Will the PCI IDs of
the system change in the future with different models?

As for the this patch, it does not appear to change the behaviour for
systems other than the one that has that specific PCI IDs.

Colin.

> 
> 
> 
>     @@ -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,
> 
> 






More information about the kernel-team mailing list