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

Colin Ian King colin.king at canonical.com
Sat Apr 22 12:06:07 UTC 2017


On 22/04/17 11:53, Shrirang Bagul wrote:
> On Fri, 2017-04-21 at 19:32 +0100, Colin Ian King wrote:
>> 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/2ced65a11885ea84c6d3cd2ec8832
>>> d489bb0c3f7
>>> [2] http://www.spinics.net/lists/linux-mmc/msg41440.html
>>> [3] Inspired from :
>>> http://kernel.ubuntu.com/git/ubuntu/ubuntu-xenial.git/commit/?id=38a6598a75d76b66
>>> 25fca0972cd463fe56cab368
>>>
>>> -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?
> No. The PCI IDs on all SKU's of this product will not change.

OK, thanks for that info.

Acked-by: Colin Ian King <colin.king at canonical.com>

> 
> -Shrirang
>>
>> 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