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