[linux-yocto] [PATCH v2 27/39] arch/arm/mach-axxia: Updated PCIe driver doorbell support
Cristian Bercaru
cristian.bercaru at windriver.com
Thu May 21 02:40:52 PDT 2015
From: SangeethaRao <sangeetha.rao at intel.com>
The support was updated to use DTS entries.
PCIe legacy ISR is updated to not mask link
alarms since this doesn't apply to AXM55xx
Signed-off-by: SangeethaRao <sangeetha.rao at intel.com>
---
arch/arm/boot/dts/axm55xx.dtsi | 4 +++-
arch/arm/mach-axxia/pci.c | 17 +++++------------
2 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/arch/arm/boot/dts/axm55xx.dtsi b/arch/arm/boot/dts/axm55xx.dtsi
index 2d1771b..72ed71f 100644
--- a/arch/arm/boot/dts/axm55xx.dtsi
+++ b/arch/arm/boot/dts/axm55xx.dtsi
@@ -196,6 +196,7 @@
0x00 0x00000000
0x00 0x40000000>;
interrupts = <0 68 4>,
+ <0 71 4>,
<0 73 4>,
<0 74 4>,
<0 75 4>,
@@ -235,7 +236,8 @@
dma-ranges = <0x03000000 0x00000000 0x00000000
0x00 0x00000000
0x00 0x40000000>;
- interrupts = <0 70 4>;
+ interrupts = <0 70 4>,
+ <0 72 4>;
port = <1>;
status = "disabled";
};
diff --git a/arch/arm/mach-axxia/pci.c b/arch/arm/mach-axxia/pci.c
index 08978ec..abb3664 100644
--- a/arch/arm/mach-axxia/pci.c
+++ b/arch/arm/mach-axxia/pci.c
@@ -119,7 +119,7 @@ struct axxia_pciex_port {
unsigned int index;
u8 root_bus_nr;
bool link_up;
- int irq[17]; /* 1 legacy, 16 MSI */
+ int irq[18]; /* 1 legacy, 1 Doorbell (EP), 16 MSI */
void __iomem *regs;
void __iomem *cfg_data;
u32 last_mpage;
@@ -466,17 +466,11 @@ pcie_legacy_isr(int irq, void *arg)
if (intr_status & 0x00020000) {
pr_info("PCIE%d: t2a_fn_indp_err_stat = %#x\n",
port->index, readl(mbase+0x1170));
- int_enb = readl(mbase + PCIE_INT0_ENABLE);
- int_enb &= 0xfffdffff;
- writel(int_enb, mbase + PCIE_INT0_ENABLE);
}
if (intr_status & 0x00040000) {
pr_info("PCIE%d: t2a_fn_indp_other_err_stat = %#x\n",
port->index, readl(mbase+0x1174));
- int_enb = readl(mbase + PCIE_INT0_ENABLE);
- int_enb &= 0xfffbffff;
- writel(int_enb, mbase + PCIE_INT0_ENABLE);
}
if (intr_status & 0x00000800) {
@@ -484,9 +478,6 @@ pcie_legacy_isr(int irq, void *arg)
port->index,
readl(mbase + PCIE_CONFIG),
readl(mbase + PCIE_STATUS));
- int_enb = readl(mbase + PCIE_INT0_ENABLE);
- int_enb &= 0xfffff7ff;
- writel(int_enb, mbase + PCIE_INT0_ENABLE);
}
/*
@@ -693,7 +684,8 @@ static int axxia_pcie_setup(int portno, struct pci_sys_data *sys)
pr_err("PCIE%d: Device is not Root Complex\n", port->index);
if (sys->domain == 0) {
/* PEI0 */
- err = request_irq(port->irq[0]+3, pcie_doorbell_isr,
+ port->irq[1] = irq_of_parse_and_map(port->node, 1);
+ err = request_irq(port->irq[1], pcie_doorbell_isr,
IRQF_SHARED, "pcie_db", port);
if (err) {
pr_err("PCIE%d: Failed to request IRQ#%d (%d)\n",
@@ -703,7 +695,8 @@ static int axxia_pcie_setup(int portno, struct pci_sys_data *sys)
}
} else if (sys->domain == 1) {
/* PEI1 */
- err = request_irq(port->irq[0]+2, pcie_doorbell_isr,
+ port->irq[1] = irq_of_parse_and_map(port->node, 1);
+ err = request_irq(port->irq[1], pcie_doorbell_isr,
IRQF_SHARED, "pcie_db", port);
if (err) {
pr_err("PCIE%d: Failed to request IRQ#%d (%d)\n",
--
1.7.9.5
More information about the linux-yocto
mailing list