mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 01:54:09 +08:00
20f12758c9
Commit0976c946a6
"arm/versatile: Fix versatile irq specifications" has an off-by-one error on the Versatile AB that has been regressing the Versatile AB hardware for some time. However it seems like the interrupt assignments have never been correct and I have now adjusted them according to the specification. The masks for the valid interrupts made it impossible to assign the right SIC interrupt for the MMCI, so I went in and fixed these to correspond to the specifications, and added references if anyone wants to double-check. Due to the Versatile PB including the Versatile AB as a base DTS file, we need to override and correct some values to correspond to the actual changes in the hardware. For the Versatile PB I don't think the IRQ line assignment for MMCI has ever been correct for either of the two MMCI blocks. It would be nice if someone with the physical PB board could test this. Patch tested on the Versatile AB, QEMU for Versatile AB and QEMU for Versatile PB. Cc: Rob Herring <robh@kernel.org> Cc: Grant Likely <grant.likely@linaro.org> Cc: stable@vger.kernel.org Fixes:0976c946a6
("arm/versatile: Fix versatile irq specifications") Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Olof Johansson <olof@lixom.net>
114 lines
2.7 KiB
Plaintext
114 lines
2.7 KiB
Plaintext
#include <versatile-ab.dts>
|
|
|
|
/ {
|
|
model = "ARM Versatile PB";
|
|
compatible = "arm,versatile-pb";
|
|
|
|
amba {
|
|
/* The Versatile PB is using more SIC IRQ lines than the AB */
|
|
sic: intc@10003000 {
|
|
clear-mask = <0xffffffff>;
|
|
/*
|
|
* Valid interrupt lines mask according to
|
|
* figure 3-30 page 3-74 of ARM DUI 0224B
|
|
*/
|
|
valid-mask = <0x7fe003ff>;
|
|
};
|
|
|
|
gpio2: gpio@101e6000 {
|
|
compatible = "arm,pl061", "arm,primecell";
|
|
reg = <0x101e6000 0x1000>;
|
|
interrupts = <8>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
clocks = <&pclk>;
|
|
clock-names = "apb_pclk";
|
|
};
|
|
|
|
gpio3: gpio@101e7000 {
|
|
compatible = "arm,pl061", "arm,primecell";
|
|
reg = <0x101e7000 0x1000>;
|
|
interrupts = <9>;
|
|
gpio-controller;
|
|
#gpio-cells = <2>;
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
clocks = <&pclk>;
|
|
clock-names = "apb_pclk";
|
|
};
|
|
|
|
pci-controller@10001000 {
|
|
compatible = "arm,versatile-pci";
|
|
device_type = "pci";
|
|
reg = <0x10001000 0x1000
|
|
0x41000000 0x10000
|
|
0x42000000 0x100000>;
|
|
bus-range = <0 0xff>;
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
#interrupt-cells = <1>;
|
|
|
|
ranges = <0x01000000 0 0x00000000 0x43000000 0 0x00010000 /* downstream I/O */
|
|
0x02000000 0 0x50000000 0x50000000 0 0x10000000 /* non-prefetchable memory */
|
|
0x42000000 0 0x60000000 0x60000000 0 0x10000000>; /* prefetchable memory */
|
|
|
|
interrupt-map-mask = <0x1800 0 0 7>;
|
|
interrupt-map = <0x1800 0 0 1 &sic 28
|
|
0x1800 0 0 2 &sic 29
|
|
0x1800 0 0 3 &sic 30
|
|
0x1800 0 0 4 &sic 27
|
|
|
|
0x1000 0 0 1 &sic 27
|
|
0x1000 0 0 2 &sic 28
|
|
0x1000 0 0 3 &sic 29
|
|
0x1000 0 0 4 &sic 30
|
|
|
|
0x0800 0 0 1 &sic 30
|
|
0x0800 0 0 2 &sic 27
|
|
0x0800 0 0 3 &sic 28
|
|
0x0800 0 0 4 &sic 29
|
|
|
|
0x0000 0 0 1 &sic 29
|
|
0x0000 0 0 2 &sic 30
|
|
0x0000 0 0 3 &sic 27
|
|
0x0000 0 0 4 &sic 28>;
|
|
};
|
|
|
|
fpga {
|
|
mmc@5000 {
|
|
/*
|
|
* Overrides the interrupt assignment from
|
|
* the Versatile AB board file.
|
|
*/
|
|
interrupts-extended = <&sic 22 &sic 23>;
|
|
};
|
|
uart@9000 {
|
|
compatible = "arm,pl011", "arm,primecell";
|
|
reg = <0x9000 0x1000>;
|
|
interrupt-parent = <&sic>;
|
|
interrupts = <6>;
|
|
clocks = <&xtal24mhz>, <&pclk>;
|
|
clock-names = "uartclk", "apb_pclk";
|
|
};
|
|
sci@a000 {
|
|
compatible = "arm,primecell";
|
|
reg = <0xa000 0x1000>;
|
|
interrupt-parent = <&sic>;
|
|
interrupts = <5>;
|
|
clocks = <&xtal24mhz>;
|
|
clock-names = "apb_pclk";
|
|
};
|
|
mmc@b000 {
|
|
compatible = "arm,pl180", "arm,primecell";
|
|
reg = <0xb000 0x1000>;
|
|
interrupt-parent = <&sic>;
|
|
interrupts = <1>, <2>;
|
|
clocks = <&xtal24mhz>, <&pclk>;
|
|
clock-names = "mclk", "apb_pclk";
|
|
};
|
|
};
|
|
};
|
|
};
|