diff options
author | Geert Uytterhoeven <geert+renesas@glider.be> | 2015-02-17 10:04:43 -0500 |
---|---|---|
committer | Simon Horman <horms+renesas@verge.net.au> | 2015-02-23 16:37:49 -0500 |
commit | e4ba0a9bddff3ba52cec100414d2f178440efc91 (patch) | |
tree | eef8366235c36441849f36ed66b1ad548510cd32 /arch/arm/boot/dts | |
parent | a656c603889c256e3d05e79e57714aa88d179903 (diff) |
ARM: shmobile: r8a73a4: Move pfc node to work around probe ordering bug
Currently the pin function controller (which is also a GPIO controller)
is instantiated before the interrupt controllers due to the order in the
DTS. At that time, the irq domains for the interrupt controllers
referenced by its interrupts-extended property cannot be found yet:
irq: no irq domain found for /interrupt-controller@e61c0000 !
Nevertheless, the core OF probing code ignores this failure, besides a
debug message that's not normally printed:
not all legacy IRQ resources mapped for pfc
and continues initialization of the device. Then, the sh-pfc driver
cannot find any IRQ resources, and thinks no interrupts are available,
causing gpio-keys to fail later:
gpio-keys keyboard: Unable to claim irq 0; error -22
gpio-keys: probe of keyboard failed with error -22
Move the pin function controller node after the interrupt controller
nodes it references to work around the bug in the core OF probing code.
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
Diffstat (limited to 'arch/arm/boot/dts')
-rw-r--r-- | arch/arm/boot/dts/r8a73a4.dtsi | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/arch/arm/boot/dts/r8a73a4.dtsi b/arch/arm/boot/dts/r8a73a4.dtsi index 77bd35cd8911..d41201d258ca 100644 --- a/arch/arm/boot/dts/r8a73a4.dtsi +++ b/arch/arm/boot/dts/r8a73a4.dtsi | |||
@@ -92,29 +92,6 @@ | |||
92 | }; | 92 | }; |
93 | }; | 93 | }; |
94 | 94 | ||
95 | pfc: pfc@e6050000 { | ||
96 | compatible = "renesas,pfc-r8a73a4"; | ||
97 | reg = <0 0xe6050000 0 0x9000>; | ||
98 | gpio-controller; | ||
99 | #gpio-cells = <2>; | ||
100 | interrupts-extended = | ||
101 | <&irqc0 0 0>, <&irqc0 1 0>, <&irqc0 2 0>, <&irqc0 3 0>, | ||
102 | <&irqc0 4 0>, <&irqc0 5 0>, <&irqc0 6 0>, <&irqc0 7 0>, | ||
103 | <&irqc0 8 0>, <&irqc0 9 0>, <&irqc0 10 0>, <&irqc0 11 0>, | ||
104 | <&irqc0 12 0>, <&irqc0 13 0>, <&irqc0 14 0>, <&irqc0 15 0>, | ||
105 | <&irqc0 16 0>, <&irqc0 17 0>, <&irqc0 18 0>, <&irqc0 19 0>, | ||
106 | <&irqc0 20 0>, <&irqc0 21 0>, <&irqc0 22 0>, <&irqc0 23 0>, | ||
107 | <&irqc0 24 0>, <&irqc0 25 0>, <&irqc0 26 0>, <&irqc0 27 0>, | ||
108 | <&irqc0 28 0>, <&irqc0 29 0>, <&irqc0 30 0>, <&irqc0 31 0>, | ||
109 | <&irqc1 0 0>, <&irqc1 1 0>, <&irqc1 2 0>, <&irqc1 3 0>, | ||
110 | <&irqc1 4 0>, <&irqc1 5 0>, <&irqc1 6 0>, <&irqc1 7 0>, | ||
111 | <&irqc1 8 0>, <&irqc1 9 0>, <&irqc1 10 0>, <&irqc1 11 0>, | ||
112 | <&irqc1 12 0>, <&irqc1 13 0>, <&irqc1 14 0>, <&irqc1 15 0>, | ||
113 | <&irqc1 16 0>, <&irqc1 17 0>, <&irqc1 18 0>, <&irqc1 19 0>, | ||
114 | <&irqc1 20 0>, <&irqc1 21 0>, <&irqc1 22 0>, <&irqc1 23 0>, | ||
115 | <&irqc1 24 0>, <&irqc1 25 0>; | ||
116 | }; | ||
117 | |||
118 | i2c5: i2c@e60b0000 { | 95 | i2c5: i2c@e60b0000 { |
119 | #address-cells = <1>; | 96 | #address-cells = <1>; |
120 | #size-cells = <0>; | 97 | #size-cells = <0>; |
@@ -210,6 +187,29 @@ | |||
210 | <0 57 IRQ_TYPE_LEVEL_HIGH>; | 187 | <0 57 IRQ_TYPE_LEVEL_HIGH>; |
211 | }; | 188 | }; |
212 | 189 | ||
190 | pfc: pfc@e6050000 { | ||
191 | compatible = "renesas,pfc-r8a73a4"; | ||
192 | reg = <0 0xe6050000 0 0x9000>; | ||
193 | gpio-controller; | ||
194 | #gpio-cells = <2>; | ||
195 | interrupts-extended = | ||
196 | <&irqc0 0 0>, <&irqc0 1 0>, <&irqc0 2 0>, <&irqc0 3 0>, | ||
197 | <&irqc0 4 0>, <&irqc0 5 0>, <&irqc0 6 0>, <&irqc0 7 0>, | ||
198 | <&irqc0 8 0>, <&irqc0 9 0>, <&irqc0 10 0>, <&irqc0 11 0>, | ||
199 | <&irqc0 12 0>, <&irqc0 13 0>, <&irqc0 14 0>, <&irqc0 15 0>, | ||
200 | <&irqc0 16 0>, <&irqc0 17 0>, <&irqc0 18 0>, <&irqc0 19 0>, | ||
201 | <&irqc0 20 0>, <&irqc0 21 0>, <&irqc0 22 0>, <&irqc0 23 0>, | ||
202 | <&irqc0 24 0>, <&irqc0 25 0>, <&irqc0 26 0>, <&irqc0 27 0>, | ||
203 | <&irqc0 28 0>, <&irqc0 29 0>, <&irqc0 30 0>, <&irqc0 31 0>, | ||
204 | <&irqc1 0 0>, <&irqc1 1 0>, <&irqc1 2 0>, <&irqc1 3 0>, | ||
205 | <&irqc1 4 0>, <&irqc1 5 0>, <&irqc1 6 0>, <&irqc1 7 0>, | ||
206 | <&irqc1 8 0>, <&irqc1 9 0>, <&irqc1 10 0>, <&irqc1 11 0>, | ||
207 | <&irqc1 12 0>, <&irqc1 13 0>, <&irqc1 14 0>, <&irqc1 15 0>, | ||
208 | <&irqc1 16 0>, <&irqc1 17 0>, <&irqc1 18 0>, <&irqc1 19 0>, | ||
209 | <&irqc1 20 0>, <&irqc1 21 0>, <&irqc1 22 0>, <&irqc1 23 0>, | ||
210 | <&irqc1 24 0>, <&irqc1 25 0>; | ||
211 | }; | ||
212 | |||
213 | thermal@e61f0000 { | 213 | thermal@e61f0000 { |
214 | compatible = "renesas,thermal-r8a73a4", "renesas,rcar-thermal"; | 214 | compatible = "renesas,thermal-r8a73a4", "renesas,rcar-thermal"; |
215 | reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>, | 215 | reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>, |