kernel: bump 5.10 to 5.10.115
[openwrt/staging/chunkeey.git] / target / linux / generic / pending-5.15 / 850-0017-PCI-aardvark-Fix-support-for-PME-requester-on-emulat.patch
index 6aa7dcbd76ba3f40f5454c786549d5e020de6900..2ef9afea5b7d993214da3f3fb2eb68f53441cd89 100644 (file)
@@ -40,7 +40,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
 
 --- a/drivers/pci/controller/pci-aardvark.c
 +++ b/drivers/pci/controller/pci-aardvark.c
-@@ -597,6 +597,11 @@ static void advk_pcie_setup_hw(struct ad
+@@ -590,6 +590,11 @@ static void advk_pcie_setup_hw(struct ad
        reg &= ~PCIE_ISR0_MSI_INT_PENDING;
        advk_writel(pcie, reg, PCIE_ISR0_MASK_REG);
  
@@ -52,7 +52,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
        /* Enable summary interrupt for GIC SPI source */
        reg = PCIE_IRQ_ALL_MASK & (~PCIE_IRQ_ENABLE_INTS_MASK);
        advk_writel(pcie, reg, HOST_CTRL_INT_MASK_REG);
-@@ -863,22 +868,11 @@ advk_pci_bridge_emul_pcie_conf_read(stru
+@@ -856,22 +861,11 @@ advk_pci_bridge_emul_pcie_conf_read(stru
                *value = PCI_EXP_SLTSTA_PDS << 16;
                return PCI_BRIDGE_EMUL_HANDLED;
  
@@ -80,7 +80,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
  
        case PCI_EXP_LNKCAP: {
                u32 val = advk_readl(pcie, PCIE_CORE_PCIEXP_CAP + reg);
-@@ -932,22 +926,19 @@ advk_pci_bridge_emul_pcie_conf_write(str
+@@ -925,22 +919,19 @@ advk_pci_bridge_emul_pcie_conf_write(str
                        advk_pcie_wait_for_retrain(pcie);
                break;
  
@@ -114,14 +114,13 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
  
        case PCI_EXP_DEVCTL:
        case PCI_EXP_DEVCTL2:
-@@ -1452,6 +1443,34 @@ static void advk_pcie_remove_irq_domain(
+@@ -1445,6 +1436,32 @@ static void advk_pcie_remove_irq_domain(
        irq_domain_remove(pcie->irq_domain);
  }
  
 +static void advk_pcie_handle_pme(struct advk_pcie *pcie)
 +{
 +      u32 requester = advk_readl(pcie, PCIE_MSG_LOG_REG) >> 16;
-+      int virq;
 +
 +      advk_writel(pcie, PCIE_MSG_PM_PME_MASK, PCIE_ISR0_REG);
 +
@@ -140,8 +139,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
 +              if (!(le16_to_cpu(pcie->bridge.pcie_conf.rootctl) & PCI_EXP_RTCTL_PMEIE))
 +                      return;
 +
-+              virq = irq_find_mapping(pcie->irq_domain, 0);
-+              if (generic_handle_irq(virq) == -EINVAL)
++              if (generic_handle_domain_irq(pcie->irq_domain, 0) == -EINVAL)
 +                      dev_err_ratelimited(&pcie->pdev->dev, "unhandled PME IRQ\n");
 +      }
 +}
@@ -149,7 +147,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
  static void advk_pcie_handle_msi(struct advk_pcie *pcie)
  {
        u32 msi_val, msi_mask, msi_status, msi_idx;
-@@ -1491,18 +1510,9 @@ static void advk_pcie_handle_int(struct
+@@ -1480,17 +1497,9 @@ static void advk_pcie_handle_int(struct
        isr1_mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
        isr1_status = isr1_val & ((~isr1_mask) & PCIE_ISR1_ALL_MASK);
  
@@ -161,8 +159,7 @@ Signed-off-by: Marek Behún <kabel@kernel.org>
 -               * root bridge. Aardvark HW returns zero for PCI_EXP_FLAGS_IRQ,
 -               * so use PCIe interrupt 0.
 -               */
--              virq = irq_find_mapping(pcie->irq_domain, 0);
--              if (generic_handle_irq(virq) == -EINVAL)
+-              if (generic_handle_domain_irq(pcie->irq_domain, 0) == -EINVAL)
 -                      dev_err_ratelimited(&pcie->pdev->dev, "unhandled PME IRQ\n");
 -      }
 +      /* Process PME interrupt as the first one to do not miss PME requester id */