diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2022-03-22 17:16:20 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2022-03-22 17:16:20 -0500 |
commit | f787b6821423fe0d79b63ef29ff3cb48b99af34b (patch) | |
tree | f97636f9f4208b4e7949d9f3bb9b4a271b67aa11 /drivers/pci | |
parent | a9af571b35aadd1faa8a3e75172d18afbbc018cb (diff) | |
parent | 9f72d4757cbe4d1ed669192f6d23817c9e437c4b (diff) | |
download | linux-f787b6821423fe0d79b63ef29ff3cb48b99af34b.tar.bz2 |
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')
-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, |