ipq40xx: fix pcie msi IRQ trigger level
From: Niklas Cassel <niklas.cassel@linaro.org> |The databook clearly states that the MSI IRQ (msi_ctrl_int) is a level |triggered interrupt. | |The msi_ctrl_int will be high for as long as any MSI status bit is set, |thus the IRQ type should be set to IRQ_TYPE_LEVEL_HIGH, causing the |IRQ handler to keep getting called, as long as any MSI status bit is set. |[...] |Not having the correct IRQ type defined will cause us to lose interrupts, |which in turn causes timeouts in the PCIe endpoint drivers. | |Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org> |Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
parent
46b949a067
commit
18e942b6c4
@ -0,0 +1,32 @@
|
|||||||
|
From: Niklas Cassel <niklas.cassel@linaro.org>
|
||||||
|
Subject: [PATCH] ARM: dts: qcom: ipq4019: Fix MSI IRQ type
|
||||||
|
Date: Thu, 24 Jan 2019 14:00:47 +0100
|
||||||
|
|
||||||
|
The databook clearly states that the MSI IRQ (msi_ctrl_int) is a level
|
||||||
|
triggered interrupt.
|
||||||
|
|
||||||
|
The msi_ctrl_int will be high for as long as any MSI status bit is set,
|
||||||
|
thus the IRQ type should be set to IRQ_TYPE_LEVEL_HIGH, causing the
|
||||||
|
IRQ handler to keep getting called, as long as any MSI status bit is set.
|
||||||
|
|
||||||
|
A git grep shows that ipq4019 is the only SoC using snps,dw-pcie that has
|
||||||
|
configured this IRQ incorrectly.
|
||||||
|
|
||||||
|
Not having the correct IRQ type defined will cause us to lose interrupts,
|
||||||
|
which in turn causes timeouts in the PCIe endpoint drivers.
|
||||||
|
|
||||||
|
Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
|
||||||
|
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||||
|
---
|
||||||
|
|
||||||
|
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||||
|
@@ -400,7 +400,7 @@
|
||||||
|
ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>,
|
||||||
|
<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>;
|
||||||
|
|
||||||
|
- interrupts = <GIC_SPI 141 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
+ interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
interrupt-names = "msi";
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
interrupt-map-mask = <0 0 0 0x7>;
|
@ -0,0 +1,32 @@
|
|||||||
|
From: Niklas Cassel <niklas.cassel@linaro.org>
|
||||||
|
Subject: [PATCH] ARM: dts: qcom: ipq4019: Fix MSI IRQ type
|
||||||
|
Date: Thu, 24 Jan 2019 14:00:47 +0100
|
||||||
|
|
||||||
|
The databook clearly states that the MSI IRQ (msi_ctrl_int) is a level
|
||||||
|
triggered interrupt.
|
||||||
|
|
||||||
|
The msi_ctrl_int will be high for as long as any MSI status bit is set,
|
||||||
|
thus the IRQ type should be set to IRQ_TYPE_LEVEL_HIGH, causing the
|
||||||
|
IRQ handler to keep getting called, as long as any MSI status bit is set.
|
||||||
|
|
||||||
|
A git grep shows that ipq4019 is the only SoC using snps,dw-pcie that has
|
||||||
|
configured this IRQ incorrectly.
|
||||||
|
|
||||||
|
Not having the correct IRQ type defined will cause us to lose interrupts,
|
||||||
|
which in turn causes timeouts in the PCIe endpoint drivers.
|
||||||
|
|
||||||
|
Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
|
||||||
|
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||||
|
---
|
||||||
|
|
||||||
|
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||||
|
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
|
||||||
|
@@ -404,7 +404,7 @@
|
||||||
|
ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>,
|
||||||
|
<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>;
|
||||||
|
|
||||||
|
- interrupts = <GIC_SPI 141 IRQ_TYPE_EDGE_RISING>;
|
||||||
|
+ interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
interrupt-names = "msi";
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
interrupt-map-mask = <0 0 0 0x7>;
|
Loading…
x
Reference in New Issue
Block a user