[PATCH 02/10] ARM: dts: exynos: Fix invalid GIC interrupt flags in exynos4210
Interrupt of type IRQ_TYPE_NONE is not allowed for GIC interrupts and generates an error: genirq: Setting trigger mode 0 for irq 16 failed (gic_set_type+0x0/0x68) The GIC requires shared interrupts to be edge rising or level high. Platform declares support for both. Choose level high everywhere. Reported-by: Marek SzyprowskiReported-by: Geert Uytterhoeven Reported-by: Alban Browaeys Cc: Marc Zyngier Signed-off-by: Krzysztof Kozlowski --- arch/arm/boot/dts/exynos4210-pinctrl.dtsi | 20 + arch/arm/boot/dts/exynos4210.dtsi | 36 --- 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/arch/arm/boot/dts/exynos4210-pinctrl.dtsi b/arch/arm/boot/dts/exynos4210-pinctrl.dtsi index 9331c6252eff..152f324f44c7 100644 --- a/arch/arm/boot/dts/exynos4210-pinctrl.dtsi +++ b/arch/arm/boot/dts/exynos4210-pinctrl.dtsi @@ -535,8 +535,14 @@ interrupt-controller; interrupt-parent = <>; - interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>, -<0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>; + interrupts = <0 16 IRQ_TYPE_LEVEL_HIGH>, +<0 17 IRQ_TYPE_LEVEL_HIGH>, +<0 18 IRQ_TYPE_LEVEL_HIGH>, +<0 19 IRQ_TYPE_LEVEL_HIGH>, +<0 20 IRQ_TYPE_LEVEL_HIGH>, +<0 21 IRQ_TYPE_LEVEL_HIGH>, +<0 22 IRQ_TYPE_LEVEL_HIGH>, +<0 23 IRQ_TYPE_LEVEL_HIGH>; #interrupt-cells = <2>; }; @@ -546,8 +552,14 @@ interrupt-controller; interrupt-parent = <>; - interrupts = <0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>, -<0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>; + interrupts = <0 24 IRQ_TYPE_LEVEL_HIGH>, +<0 25 IRQ_TYPE_LEVEL_HIGH>, +<0 26 IRQ_TYPE_LEVEL_HIGH>, +<0 27 IRQ_TYPE_LEVEL_HIGH>, +<0 28 IRQ_TYPE_LEVEL_HIGH>, +<0 29 IRQ_TYPE_LEVEL_HIGH>, +<0 30 IRQ_TYPE_LEVEL_HIGH>, +<0 31 IRQ_TYPE_LEVEL_HIGH>; #interrupt-cells = <2>; }; diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi index 2d9b02967105..736ab8587ab0 100644 --- a/arch/arm/boot/dts/exynos4210.dtsi +++ b/arch/arm/boot/dts/exynos4210.dtsi @@ -109,12 +109,12 @@ #interrupt-cells = <1>; #address-cells = <0>; #size-cells = <0>; - interrupt-map = <0 0 57 0>, - <1 0 69 0>, + interrupt-map = <0 0 57 IRQ_TYPE_LEVEL_HIGH>, + <1 0 69 IRQ_TYPE_LEVEL_HIGH>, <2 12 6>, <3 12 7>, - <4 0 42 0>, - <5 0 48 0>; + <4 0 42 IRQ_TYPE_LEVEL_HIGH>, + <5 0 48 IRQ_TYPE_LEVEL_HIGH>; }; }; @@ -127,18 +127,18 @@ pinctrl_0: pinctrl@1140 { compatible = "samsung,exynos4210-pinctrl"; reg = <0x1140 0x1000>; - interrupts = <0 47 0>; + interrupts = <0 47 IRQ_TYPE_LEVEL_HIGH>; }; pinctrl_1: pinctrl@1100 { compatible = "samsung,exynos4210-pinctrl"; reg = <0x1100 0x1000>; - interrupts = <0 46 0>; + interrupts = <0 46 IRQ_TYPE_LEVEL_HIGH>; wakup_eint: wakeup-interrupt-controller { compatible = "samsung,exynos4210-wakeup-eint"; interrupt-parent = <>; - interrupts = <0 32 0>; + interrupts = <0 32 IRQ_TYPE_LEVEL_HIGH>; }; }; @@ -182,7 +182,7 @@ g2d: g2d@1280 { compatible = "samsung,s5pv210-g2d"; reg = <0x1280 0x1000>; - interrupts = <0 89 0>; + interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>; clocks = < CLK_SCLK_FIMG2D>, < CLK_G2D>; clock-names = "sclk_fimg2d", "fimg2d"; power-domains = <_lcd0>; @@ -424,10 +424,22 @@ { samsung,combiner-nr =
[PATCH 02/10] ARM: dts: exynos: Fix invalid GIC interrupt flags in exynos4210
Interrupt of type IRQ_TYPE_NONE is not allowed for GIC interrupts and generates an error: genirq: Setting trigger mode 0 for irq 16 failed (gic_set_type+0x0/0x68) The GIC requires shared interrupts to be edge rising or level high. Platform declares support for both. Choose level high everywhere. Reported-by: Marek Szyprowski Reported-by: Geert Uytterhoeven Reported-by: Alban Browaeys Cc: Marc Zyngier Signed-off-by: Krzysztof Kozlowski --- arch/arm/boot/dts/exynos4210-pinctrl.dtsi | 20 + arch/arm/boot/dts/exynos4210.dtsi | 36 --- 2 files changed, 40 insertions(+), 16 deletions(-) diff --git a/arch/arm/boot/dts/exynos4210-pinctrl.dtsi b/arch/arm/boot/dts/exynos4210-pinctrl.dtsi index 9331c6252eff..152f324f44c7 100644 --- a/arch/arm/boot/dts/exynos4210-pinctrl.dtsi +++ b/arch/arm/boot/dts/exynos4210-pinctrl.dtsi @@ -535,8 +535,14 @@ interrupt-controller; interrupt-parent = <>; - interrupts = <0 16 0>, <0 17 0>, <0 18 0>, <0 19 0>, -<0 20 0>, <0 21 0>, <0 22 0>, <0 23 0>; + interrupts = <0 16 IRQ_TYPE_LEVEL_HIGH>, +<0 17 IRQ_TYPE_LEVEL_HIGH>, +<0 18 IRQ_TYPE_LEVEL_HIGH>, +<0 19 IRQ_TYPE_LEVEL_HIGH>, +<0 20 IRQ_TYPE_LEVEL_HIGH>, +<0 21 IRQ_TYPE_LEVEL_HIGH>, +<0 22 IRQ_TYPE_LEVEL_HIGH>, +<0 23 IRQ_TYPE_LEVEL_HIGH>; #interrupt-cells = <2>; }; @@ -546,8 +552,14 @@ interrupt-controller; interrupt-parent = <>; - interrupts = <0 24 0>, <0 25 0>, <0 26 0>, <0 27 0>, -<0 28 0>, <0 29 0>, <0 30 0>, <0 31 0>; + interrupts = <0 24 IRQ_TYPE_LEVEL_HIGH>, +<0 25 IRQ_TYPE_LEVEL_HIGH>, +<0 26 IRQ_TYPE_LEVEL_HIGH>, +<0 27 IRQ_TYPE_LEVEL_HIGH>, +<0 28 IRQ_TYPE_LEVEL_HIGH>, +<0 29 IRQ_TYPE_LEVEL_HIGH>, +<0 30 IRQ_TYPE_LEVEL_HIGH>, +<0 31 IRQ_TYPE_LEVEL_HIGH>; #interrupt-cells = <2>; }; diff --git a/arch/arm/boot/dts/exynos4210.dtsi b/arch/arm/boot/dts/exynos4210.dtsi index 2d9b02967105..736ab8587ab0 100644 --- a/arch/arm/boot/dts/exynos4210.dtsi +++ b/arch/arm/boot/dts/exynos4210.dtsi @@ -109,12 +109,12 @@ #interrupt-cells = <1>; #address-cells = <0>; #size-cells = <0>; - interrupt-map = <0 0 57 0>, - <1 0 69 0>, + interrupt-map = <0 0 57 IRQ_TYPE_LEVEL_HIGH>, + <1 0 69 IRQ_TYPE_LEVEL_HIGH>, <2 12 6>, <3 12 7>, - <4 0 42 0>, - <5 0 48 0>; + <4 0 42 IRQ_TYPE_LEVEL_HIGH>, + <5 0 48 IRQ_TYPE_LEVEL_HIGH>; }; }; @@ -127,18 +127,18 @@ pinctrl_0: pinctrl@1140 { compatible = "samsung,exynos4210-pinctrl"; reg = <0x1140 0x1000>; - interrupts = <0 47 0>; + interrupts = <0 47 IRQ_TYPE_LEVEL_HIGH>; }; pinctrl_1: pinctrl@1100 { compatible = "samsung,exynos4210-pinctrl"; reg = <0x1100 0x1000>; - interrupts = <0 46 0>; + interrupts = <0 46 IRQ_TYPE_LEVEL_HIGH>; wakup_eint: wakeup-interrupt-controller { compatible = "samsung,exynos4210-wakeup-eint"; interrupt-parent = <>; - interrupts = <0 32 0>; + interrupts = <0 32 IRQ_TYPE_LEVEL_HIGH>; }; }; @@ -182,7 +182,7 @@ g2d: g2d@1280 { compatible = "samsung,s5pv210-g2d"; reg = <0x1280 0x1000>; - interrupts = <0 89 0>; + interrupts = <0 89 IRQ_TYPE_LEVEL_HIGH>; clocks = < CLK_SCLK_FIMG2D>, < CLK_G2D>; clock-names = "sclk_fimg2d", "fimg2d"; power-domains = <_lcd0>; @@ -424,10 +424,22 @@ { samsung,combiner-nr = <16>; - interrupts = <0 0 0>, <0 1 0>, <0 2 0>, <0 3 0>, -<0 4 0>, <0 5 0>, <0 6 0>, <0