mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-13 03:16:49 +07:00
5f79c651e8
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> Signed-off-by: Jason Cooper <jason@lakedaemon.net>
110 lines
2.2 KiB
Plaintext
110 lines
2.2 KiB
Plaintext
/*
|
|
* Device Tree Include file for Marvell Armada XP family SoC
|
|
*
|
|
* Copyright (C) 2012 Marvell
|
|
*
|
|
* Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
|
*
|
|
* This file is licensed under the terms of the GNU General Public
|
|
* License version 2. This program is licensed "as is" without any
|
|
* warranty of any kind, whether express or implied.
|
|
*
|
|
* Contains definitions specific to the Armada XP MV78460 SoC that are not
|
|
* common to all Armada XP SoCs.
|
|
*/
|
|
|
|
/include/ "armada-xp.dtsi"
|
|
|
|
/ {
|
|
model = "Marvell Armada XP MV78460 SoC";
|
|
compatible = "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp";
|
|
|
|
aliases {
|
|
gpio0 = &gpio0;
|
|
gpio1 = &gpio1;
|
|
gpio2 = &gpio2;
|
|
};
|
|
|
|
|
|
cpus {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
cpu@0 {
|
|
device_type = "cpu";
|
|
compatible = "marvell,sheeva-v7";
|
|
reg = <0>;
|
|
clocks = <&cpuclk 0>;
|
|
};
|
|
|
|
cpu@1 {
|
|
device_type = "cpu";
|
|
compatible = "marvell,sheeva-v7";
|
|
reg = <1>;
|
|
clocks = <&cpuclk 1>;
|
|
};
|
|
|
|
cpu@2 {
|
|
device_type = "cpu";
|
|
compatible = "marvell,sheeva-v7";
|
|
reg = <2>;
|
|
clocks = <&cpuclk 2>;
|
|
};
|
|
|
|
cpu@3 {
|
|
device_type = "cpu";
|
|
compatible = "marvell,sheeva-v7";
|
|
reg = <3>;
|
|
clocks = <&cpuclk 3>;
|
|
};
|
|
};
|
|
|
|
soc {
|
|
pinctrl {
|
|
compatible = "marvell,mv78460-pinctrl";
|
|
reg = <0xd0018000 0x38>;
|
|
};
|
|
|
|
gpio0: gpio@d0018100 {
|
|
compatible = "marvell,orion-gpio";
|
|
reg = <0xd0018100 0x40>;
|
|
ngpios = <32>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupts-cells = <2>;
|
|
interrupts = <82>, <83>, <84>, <85>;
|
|
};
|
|
|
|
gpio1: gpio@d0018140 {
|
|
compatible = "marvell,orion-gpio";
|
|
reg = <0xd0018140 0x40>;
|
|
ngpios = <32>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupts-cells = <2>;
|
|
interrupts = <87>, <88>, <89>, <90>;
|
|
};
|
|
|
|
gpio2: gpio@d0018180 {
|
|
compatible = "marvell,orion-gpio";
|
|
reg = <0xd0018180 0x40>;
|
|
ngpios = <3>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupts-cells = <2>;
|
|
interrupts = <91>;
|
|
};
|
|
|
|
ethernet@d0034000 {
|
|
compatible = "marvell,armada-370-neta";
|
|
reg = <0xd0034000 0x2500>;
|
|
interrupts = <14>;
|
|
clocks = <&gateclk 1>;
|
|
status = "disabled";
|
|
};
|
|
};
|
|
};
|