Messages in this thread Patch in this message | | | From | Remi Pommarel <> | Subject | [PATCH] PCI: aardvark: Fix PCI_EXP_RTCTL conf register writing | Date | Wed, 22 May 2019 23:33:49 +0200 |
| |
PCI_EXP_RTCTL is used to activate PME interrupt only, so writing into it should not modify other interrupts' mask (such as ISR0).
Fixes: 6302bf3ef78d ("PCI: Init PCIe feature bits for managed host bridge alloc") Signed-off-by: Remi Pommarel <repk@triplefau.lt> --- Please note that I will unlikely be able to answer any comments from May 24th to June 10th. --- drivers/pci/controller/pci-aardvark.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index 134e0306ff00..27102d3b4f9c 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -451,10 +451,14 @@ advk_pci_bridge_emul_pcie_conf_write(struct pci_bridge_emul *bridge, advk_writel(pcie, new, PCIE_CORE_PCIEXP_CAP + reg); break; - case PCI_EXP_RTCTL: - new = (new & PCI_EXP_RTCTL_PMEIE) << 3; - advk_writel(pcie, new, PCIE_ISR0_MASK_REG); + case PCI_EXP_RTCTL: { + /* Only mask/unmask PME interrupt */ + u32 val = advk_readl(pcie, PCIE_ISR0_MASK_REG) & + ~PCIE_MSG_PM_PME_MASK; + val |= (new & PCI_EXP_RTCTL_PMEIE) << 3; + advk_writel(pcie, val, PCIE_ISR0_MASK_REG); break; + } case PCI_EXP_RTSTA: new = (new & PCI_EXP_RTSTA_PME) >> 9; -- 2.20.1
| |