Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 35478master
parent
a15e1a950d
commit
34ad8f4e75
@ -1,166 +0,0 @@ |
|||||||
The Armada XP GPIO controller has two ways of notifying interrupts:
|
|
||||||
using global interrupts or using per-CPU interrupts. In an attempt to
|
|
||||||
use the best available features, the 'marvell,armadaxp-gpio'
|
|
||||||
compatible string selects a variant of the gpio-mvebu driver that
|
|
||||||
makes use of the per-CPU interrupts.
|
|
||||||
|
|
||||||
Unfortunately, this doesn't work properly in a SMP context, because we
|
|
||||||
fall into cases where the GPIO interrupt is enabled on CPU X at the
|
|
||||||
GPIO controller level, but on CPU Y at the interrupt controller
|
|
||||||
level. It is not yet clear how to fix that easily.
|
|
||||||
|
|
||||||
So for 3.8, our approach is to switch to global interrupts for GPIOs,
|
|
||||||
so that we do not fall into this per-CPU interrupts problem.
|
|
||||||
|
|
||||||
This patch therefore fixes GPIO interrupts on Armada XP
|
|
||||||
platforms. Without this patch, GPIO interrupts simply do not work
|
|
||||||
reliably, because their proper operation depends on which CPU the code
|
|
||||||
requesting the interrupt is running.
|
|
||||||
|
|
||||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
||||||
---
|
|
||||||
This is 3.8-rc material.
|
|
||||||
---
|
|
||||||
arch/arm/boot/dts/armada-xp-mv78230.dtsi | 14 ++++++--------
|
|
||||||
arch/arm/boot/dts/armada-xp-mv78260.dtsi | 21 +++++++++------------
|
|
||||||
arch/arm/boot/dts/armada-xp-mv78460.dtsi | 21 +++++++++------------
|
|
||||||
3 files changed, 24 insertions(+), 32 deletions(-)
|
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-mv78230.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-mv78230.dtsi
|
|
||||||
@@ -50,27 +50,25 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio0: gpio@d0018100 {
|
|
||||||
- compatible = "marvell,armadaxp-gpio";
|
|
||||||
- reg = <0xd0018100 0x40>,
|
|
||||||
- <0xd0018800 0x30>;
|
|
||||||
+ compatible = "marvell,orion-gpio";
|
|
||||||
+ reg = <0xd0018100 0x40>;
|
|
||||||
ngpios = <32>;
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupts-cells = <2>;
|
|
||||||
- interrupts = <16>, <17>, <18>, <19>;
|
|
||||||
+ interrupts = <82>, <83>, <84>, <85>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio1: gpio@d0018140 {
|
|
||||||
- compatible = "marvell,armadaxp-gpio";
|
|
||||||
- reg = <0xd0018140 0x40>,
|
|
||||||
- <0xd0018840 0x30>;
|
|
||||||
+ compatible = "marvell,orion-gpio";
|
|
||||||
+ reg = <0xd0018140 0x40>;
|
|
||||||
ngpios = <17>;
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupts-cells = <2>;
|
|
||||||
- interrupts = <20>, <21>, <22>;
|
|
||||||
+ interrupts = <87>, <88>, <89>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-mv78260.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-mv78260.dtsi
|
|
||||||
@@ -51,39 +51,36 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio0: gpio@d0018100 {
|
|
||||||
- compatible = "marvell,armadaxp-gpio";
|
|
||||||
- reg = <0xd0018100 0x40>,
|
|
||||||
- <0xd0018800 0x30>;
|
|
||||||
+ compatible = "marvell,orion-gpio";
|
|
||||||
+ reg = <0xd0018100 0x40>;
|
|
||||||
ngpios = <32>;
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupts-cells = <2>;
|
|
||||||
- interrupts = <16>, <17>, <18>, <19>;
|
|
||||||
+ interrupts = <82>, <83>, <84>, <85>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio1: gpio@d0018140 {
|
|
||||||
- compatible = "marvell,armadaxp-gpio";
|
|
||||||
- reg = <0xd0018140 0x40>,
|
|
||||||
- <0xd0018840 0x30>;
|
|
||||||
+ compatible = "marvell,orion-gpio";
|
|
||||||
+ reg = <0xd0018140 0x40>;
|
|
||||||
ngpios = <32>;
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupts-cells = <2>;
|
|
||||||
- interrupts = <20>, <21>, <22>, <23>;
|
|
||||||
+ interrupts = <87>, <88>, <89>, <90>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio2: gpio@d0018180 {
|
|
||||||
- compatible = "marvell,armadaxp-gpio";
|
|
||||||
- reg = <0xd0018180 0x40>,
|
|
||||||
- <0xd0018870 0x30>;
|
|
||||||
+ compatible = "marvell,orion-gpio";
|
|
||||||
+ reg = <0xd0018180 0x40>;
|
|
||||||
ngpios = <3>;
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupts-cells = <2>;
|
|
||||||
- interrupts = <24>;
|
|
||||||
+ interrupts = <91>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ethernet@d0034000 {
|
|
||||||
--- a/arch/arm/boot/dts/armada-xp-mv78460.dtsi
|
|
||||||
+++ b/arch/arm/boot/dts/armada-xp-mv78460.dtsi
|
|
||||||
@@ -66,39 +66,36 @@
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio0: gpio@d0018100 {
|
|
||||||
- compatible = "marvell,armadaxp-gpio";
|
|
||||||
- reg = <0xd0018100 0x40>,
|
|
||||||
- <0xd0018800 0x30>;
|
|
||||||
+ compatible = "marvell,orion-gpio";
|
|
||||||
+ reg = <0xd0018100 0x40>;
|
|
||||||
ngpios = <32>;
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupts-cells = <2>;
|
|
||||||
- interrupts = <16>, <17>, <18>, <19>;
|
|
||||||
+ interrupts = <82>, <83>, <84>, <85>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio1: gpio@d0018140 {
|
|
||||||
- compatible = "marvell,armadaxp-gpio";
|
|
||||||
- reg = <0xd0018140 0x40>,
|
|
||||||
- <0xd0018840 0x30>;
|
|
||||||
+ compatible = "marvell,orion-gpio";
|
|
||||||
+ reg = <0xd0018140 0x40>;
|
|
||||||
ngpios = <32>;
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupts-cells = <2>;
|
|
||||||
- interrupts = <20>, <21>, <22>, <23>;
|
|
||||||
+ interrupts = <87>, <88>, <89>, <90>;
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio2: gpio@d0018180 {
|
|
||||||
- compatible = "marvell,armadaxp-gpio";
|
|
||||||
- reg = <0xd0018180 0x40>,
|
|
||||||
- <0xd0018870 0x30>;
|
|
||||||
+ compatible = "marvell,orion-gpio";
|
|
||||||
+ reg = <0xd0018180 0x40>;
|
|
||||||
ngpios = <3>;
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
interrupt-controller;
|
|
||||||
#interrupts-cells = <2>;
|
|
||||||
- interrupts = <24>;
|
|
||||||
+ interrupts = <91>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ethernet@d0034000 {
|
|
Loading…
Reference in new issue