diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2022-03-22 23:16:20 +0100 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2022-03-22 23:16:20 +0100 |
commit | f787b6821423fe0d79b63ef29ff3cb48b99af34b (patch) | |
tree | f97636f9f4208b4e7949d9f3bb9b4a271b67aa11 /drivers/pci/hotplug | |
parent | Merge branch 'pci/enumeration' (diff) | |
parent | PCI: pciehp: Add Qualcomm quirk for Command Completed erratum (diff) | |
download | linux-f787b6821423fe0d79b63ef29ff3cb48b99af34b.tar.xz linux-f787b6821423fe0d79b63ef29ff3cb48b99af34b.zip |
Merge branch 'pci/hotplug'
- Clear pciehp cmd_busy bit when command completes in polling mode to avoid
spurious timeouts (Liguang Zhang)
- Add quirk to work around Qualcomm hardware defect in Command Completed
signaling (Manivannan Sadhasivam)
* pci/hotplug:
PCI: pciehp: Add Qualcomm quirk for Command Completed erratum
PCI: pciehp: Clear cmd_busy bit in polling mode
Diffstat (limited to 'drivers/pci/hotplug')
-rw-r--r-- | drivers/pci/hotplug/pciehp_hpc.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c index 1c1ebf3dad43..040ae076ec0e 100644 --- a/drivers/pci/hotplug/pciehp_hpc.c +++ b/drivers/pci/hotplug/pciehp_hpc.c @@ -98,6 +98,8 @@ static int pcie_poll_cmd(struct controller *ctrl, int timeout) if (slot_status & PCI_EXP_SLTSTA_CC) { pcie_capability_write_word(pdev, PCI_EXP_SLTSTA, PCI_EXP_SLTSTA_CC); + ctrl->cmd_busy = 0; + smp_mb(); return 1; } msleep(10); @@ -1084,6 +1086,8 @@ static void quirk_cmd_compl(struct pci_dev *pdev) } DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, PCI_ANY_ID, PCI_CLASS_BRIDGE_PCI, 8, quirk_cmd_compl); +DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_QCOM, 0x0110, + PCI_CLASS_BRIDGE_PCI, 8, quirk_cmd_compl); DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_QCOM, 0x0400, PCI_CLASS_BRIDGE_PCI, 8, quirk_cmd_compl); DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_QCOM, 0x0401, |