diff options
Diffstat (limited to 'target/linux/mvebu/patches-3.8/005-arm_mvebu_use_global_interrupts_for_gpio.patch')
-rw-r--r-- | target/linux/mvebu/patches-3.8/005-arm_mvebu_use_global_interrupts_for_gpio.patch | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/target/linux/mvebu/patches-3.8/005-arm_mvebu_use_global_interrupts_for_gpio.patch b/target/linux/mvebu/patches-3.8/005-arm_mvebu_use_global_interrupts_for_gpio.patch deleted file mode 100644 index e190a3301..000000000 --- a/target/linux/mvebu/patches-3.8/005-arm_mvebu_use_global_interrupts_for_gpio.patch +++ /dev/null @@ -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 { |