* [PATCH] arm64: qcom: dts: Fix broken interrupt trigger settings
@ 2016-08-10 10:51 ` Marc Zyngier
0 siblings, 0 replies; 4+ messages in thread
From: Marc Zyngier @ 2016-08-10 10:51 UTC (permalink / raw)
To: Andy Gross, David Brown
Cc: linux-arm-msm, Stephen Boyd, linux-arm-kernel, Ivan T. Ivanov
When a device uses the GIC as its interrupt controller and generates
SPIs, only the values 1 (edge rising) and 4 (level high) are legal.
Anything else is just plain wrong (can't be programmed into the HW),
and leads to aborted driver probes (USB doesn't work with 4.8-rc1
on a Dragonboard 410C).
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
I've guessed the trigger settings, so someone please verify them.
arch/arm64/boot/dts/qcom/msm8916.dtsi | 8 ++++----
arch/arm64/boot/dts/qcom/msm8996.dtsi | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
index 11bdc24..45427834 100644
--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -483,7 +483,7 @@
compatible = "qcom,ci-hdrc";
reg = <0x78d9000 0x400>;
dr_mode = "peripheral";
- interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
+ interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>;
usb-phy = <&usb_otg>;
status = "disabled";
};
@@ -491,7 +491,7 @@
usb_host: ehci@78d9000 {
compatible = "qcom,ehci-host";
reg = <0x78d9000 0x400>;
- interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
+ interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>;
usb-phy = <&usb_otg>;
status = "disabled";
};
@@ -499,7 +499,7 @@
usb_otg: phy@78d9000 {
compatible = "qcom,usb-otg-snps";
reg = <0x78d9000 0x400>;
- interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_BOTH>,
+ interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 140 IRQ_TYPE_EDGE_RISING>;
qcom,vdd-levels = <500000 1000000 1320000>;
@@ -594,7 +594,7 @@
<0x200a000 0x002100>;
reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
interrupt-names = "periph_irq";
- interrupts = <GIC_SPI 190 IRQ_TYPE_NONE>;
+ interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index 55ec3e8..69ed6e1 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -339,7 +339,7 @@
<0x400a000 0x002100>;
reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
interrupt-names = "periph_irq";
- interrupts = <GIC_SPI 326 IRQ_TYPE_NONE>;
+ interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
--
2.1.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH] arm64: qcom: dts: Fix broken interrupt trigger settings
@ 2016-08-10 10:51 ` Marc Zyngier
0 siblings, 0 replies; 4+ messages in thread
From: Marc Zyngier @ 2016-08-10 10:51 UTC (permalink / raw)
To: linux-arm-kernel
When a device uses the GIC as its interrupt controller and generates
SPIs, only the values 1 (edge rising) and 4 (level high) are legal.
Anything else is just plain wrong (can't be programmed into the HW),
and leads to aborted driver probes (USB doesn't work with 4.8-rc1
on a Dragonboard 410C).
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
I've guessed the trigger settings, so someone please verify them.
arch/arm64/boot/dts/qcom/msm8916.dtsi | 8 ++++----
arch/arm64/boot/dts/qcom/msm8996.dtsi | 2 +-
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
index 11bdc24..45427834 100644
--- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
@@ -483,7 +483,7 @@
compatible = "qcom,ci-hdrc";
reg = <0x78d9000 0x400>;
dr_mode = "peripheral";
- interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
+ interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>;
usb-phy = <&usb_otg>;
status = "disabled";
};
@@ -491,7 +491,7 @@
usb_host: ehci at 78d9000 {
compatible = "qcom,ehci-host";
reg = <0x78d9000 0x400>;
- interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
+ interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>;
usb-phy = <&usb_otg>;
status = "disabled";
};
@@ -499,7 +499,7 @@
usb_otg: phy at 78d9000 {
compatible = "qcom,usb-otg-snps";
reg = <0x78d9000 0x400>;
- interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_BOTH>,
+ interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 140 IRQ_TYPE_EDGE_RISING>;
qcom,vdd-levels = <500000 1000000 1320000>;
@@ -594,7 +594,7 @@
<0x200a000 0x002100>;
reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
interrupt-names = "periph_irq";
- interrupts = <GIC_SPI 190 IRQ_TYPE_NONE>;
+ interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
index 55ec3e8..69ed6e1 100644
--- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
@@ -339,7 +339,7 @@
<0x400a000 0x002100>;
reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
interrupt-names = "periph_irq";
- interrupts = <GIC_SPI 326 IRQ_TYPE_NONE>;
+ interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
qcom,ee = <0>;
qcom,channel = <0>;
#address-cells = <2>;
--
2.1.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] arm64: qcom: dts: Fix broken interrupt trigger settings
2016-08-10 10:51 ` Marc Zyngier
@ 2016-08-10 18:50 ` Stephen Boyd
-1 siblings, 0 replies; 4+ messages in thread
From: Stephen Boyd @ 2016-08-10 18:50 UTC (permalink / raw)
To: Marc Zyngier, Andy Gross, David Brown
Cc: linux-arm-msm, linux-arm-kernel, Ivan T. Ivanov
On 08/10/2016 03:51 AM, Marc Zyngier wrote:
> arch/arm64/boot/dts/qcom/msm8916.dtsi | 8 ++++----
> arch/arm64/boot/dts/qcom/msm8996.dtsi | 2 +-
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
> index 11bdc24..45427834 100644
> --- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
> @@ -483,7 +483,7 @@
> compatible = "qcom,ci-hdrc";
> reg = <0x78d9000 0x400>;
> dr_mode = "peripheral";
> - interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
> + interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>;
> usb-phy = <&usb_otg>;
> status = "disabled";
> };
> @@ -491,7 +491,7 @@
> usb_host: ehci@78d9000 {
> compatible = "qcom,ehci-host";
> reg = <0x78d9000 0x400>;
> - interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
> + interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>;
> usb-phy = <&usb_otg>;
> status = "disabled";
> };
> @@ -499,7 +499,7 @@
> usb_otg: phy@78d9000 {
> compatible = "qcom,usb-otg-snps";
> reg = <0x78d9000 0x400>;
> - interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_BOTH>,
> + interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>,
> <GIC_SPI 140 IRQ_TYPE_EDGE_RISING>;
These are all level high.
>
> qcom,vdd-levels = <500000 1000000 1320000>;
> @@ -594,7 +594,7 @@
> <0x200a000 0x002100>;
> reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
> interrupt-names = "periph_irq";
> - interrupts = <GIC_SPI 190 IRQ_TYPE_NONE>;
> + interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
This is right.
> qcom,ee = <0>;
> qcom,channel = <0>;
> #address-cells = <2>;
> diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> index 55ec3e8..69ed6e1 100644
> --- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> @@ -339,7 +339,7 @@
> <0x400a000 0x002100>;
> reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
> interrupt-names = "periph_irq";
> - interrupts = <GIC_SPI 326 IRQ_TYPE_NONE>;
> + interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
> qcom,ee = <0>;
> qcom,channel = <0>;
> #address-cells = <2>;
This is right too.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] arm64: qcom: dts: Fix broken interrupt trigger settings
@ 2016-08-10 18:50 ` Stephen Boyd
0 siblings, 0 replies; 4+ messages in thread
From: Stephen Boyd @ 2016-08-10 18:50 UTC (permalink / raw)
To: linux-arm-kernel
On 08/10/2016 03:51 AM, Marc Zyngier wrote:
> arch/arm64/boot/dts/qcom/msm8916.dtsi | 8 ++++----
> arch/arm64/boot/dts/qcom/msm8996.dtsi | 2 +-
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/qcom/msm8916.dtsi b/arch/arm64/boot/dts/qcom/msm8916.dtsi
> index 11bdc24..45427834 100644
> --- a/arch/arm64/boot/dts/qcom/msm8916.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8916.dtsi
> @@ -483,7 +483,7 @@
> compatible = "qcom,ci-hdrc";
> reg = <0x78d9000 0x400>;
> dr_mode = "peripheral";
> - interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
> + interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>;
> usb-phy = <&usb_otg>;
> status = "disabled";
> };
> @@ -491,7 +491,7 @@
> usb_host: ehci at 78d9000 {
> compatible = "qcom,ehci-host";
> reg = <0x78d9000 0x400>;
> - interrupts = <GIC_SPI 134 IRQ_TYPE_NONE>;
> + interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>;
> usb-phy = <&usb_otg>;
> status = "disabled";
> };
> @@ -499,7 +499,7 @@
> usb_otg: phy at 78d9000 {
> compatible = "qcom,usb-otg-snps";
> reg = <0x78d9000 0x400>;
> - interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_BOTH>,
> + interrupts = <GIC_SPI 134 IRQ_TYPE_EDGE_RISING>,
> <GIC_SPI 140 IRQ_TYPE_EDGE_RISING>;
These are all level high.
>
> qcom,vdd-levels = <500000 1000000 1320000>;
> @@ -594,7 +594,7 @@
> <0x200a000 0x002100>;
> reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
> interrupt-names = "periph_irq";
> - interrupts = <GIC_SPI 190 IRQ_TYPE_NONE>;
> + interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH>;
This is right.
> qcom,ee = <0>;
> qcom,channel = <0>;
> #address-cells = <2>;
> diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> index 55ec3e8..69ed6e1 100644
> --- a/arch/arm64/boot/dts/qcom/msm8996.dtsi
> +++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi
> @@ -339,7 +339,7 @@
> <0x400a000 0x002100>;
> reg-names = "core", "chnls", "obsrvr", "intr", "cnfg";
> interrupt-names = "periph_irq";
> - interrupts = <GIC_SPI 326 IRQ_TYPE_NONE>;
> + interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH>;
> qcom,ee = <0>;
> qcom,channel = <0>;
> #address-cells = <2>;
This is right too.
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2016-08-10 18:50 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-10 10:51 [PATCH] arm64: qcom: dts: Fix broken interrupt trigger settings Marc Zyngier
2016-08-10 10:51 ` Marc Zyngier
2016-08-10 18:50 ` Stephen Boyd
2016-08-10 18:50 ` Stephen Boyd
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.