Skip to content

Commit b0258f6

Browse files
committed
riscv: dts: microchip: update mpfs gpio interrupts to better match the SoC
There are 3 GPIO controllers on this SoC, of which: - GPIO controller 0 has 14 GPIOs - GPIO controller 1 has 24 GPIOs - GPIO controller 2 has 32 GPIOs All GPIOs are capable of generating interrupts, for a total of 70. There are only 41 IRQs available however, so a configurable mux is used to ensure all GPIOs can be used for interrupt generation. 38 of the 41 interrupts are in what the documentation calls "direct mode", as they provide an exclusive connection from a GPIO to the PLIC. The 3 remaining interrupts are used to mux the interrupts which do not have a exclusive connection, one for each GPIO controller. The mux was overlooked when the bindings and driver were originally written for the GPIO controllers on Polarfire SoC, and the interrupts property in the GPIO nodes used to try and convey what the mapping was. Instead, the mux should be a device in its own right, and the GPIO controllers should be connected to it, rather than to the PLIC. Now that a binding exists for that mux, fix the inaccurate description of the interrupt controller hierarchy. GPIO controllers 0 and 1 do not have all 32 possible GPIO lines, so ngpios needs to be set to match the number of lines/interrupts. The m100pfsevp has conflicting interrupt mappings for controllers 0 and 2, as they cannot both be using an interrupt in "direct mode" at the same time, so the default replaces this impossible configuration. Reviewed-by: Linus Walleij <linusw@kernel.org> Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
1 parent 4a1739c commit b0258f6

8 files changed

Lines changed: 235 additions & 51 deletions

File tree

arch/riscv/boot/dts/microchip/mpfs-beaglev-fire.dts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,35 @@
164164
};
165165
};
166166

167+
&irqmux {
168+
interrupt-map = <0 &plic 13>, <1 &plic 14>, <2 &plic 15>,
169+
<3 &plic 16>, <4 &plic 17>, <5 &plic 18>,
170+
<6 &plic 19>, <7 &plic 20>, <8 &plic 21>,
171+
<9 &plic 22>, <10 &plic 23>, <11 &plic 24>,
172+
<12 &plic 25>, <13 &plic 26>,
173+
174+
<32 &plic 27>, <33 &plic 28>, <34 &plic 29>,
175+
<35 &plic 30>, <36 &plic 31>, <37 &plic 32>,
176+
<38 &plic 33>, <39 &plic 34>, <40 &plic 35>,
177+
<41 &plic 36>, <42 &plic 37>, <43 &plic 38>,
178+
<44 &plic 39>, <45 &plic 40>, <46 &plic 41>,
179+
<47 &plic 42>, <48 &plic 43>, <49 &plic 44>,
180+
<50 &plic 45>, <51 &plic 46>, <52 &plic 47>,
181+
<53 &plic 48>, <54 &plic 49>, <55 &plic 50>,
182+
183+
<64 &plic 53>, <65 &plic 53>, <66 &plic 53>,
184+
<67 &plic 53>, <68 &plic 53>, <69 &plic 53>,
185+
<70 &plic 53>, <71 &plic 53>, <72 &plic 53>,
186+
<73 &plic 53>, <74 &plic 53>, <75 &plic 53>,
187+
<76 &plic 53>, <77 &plic 53>, <78 &plic 53>,
188+
<79 &plic 53>, <80 &plic 53>, <81 &plic 53>,
189+
<82 &plic 53>, <83 &plic 53>, <84 &plic 53>,
190+
<85 &plic 53>, <86 &plic 53>, <87 &plic 53>,
191+
<88 &plic 53>, <89 &plic 53>, <90 &plic 53>,
192+
<91 &plic 53>, <92 &plic 53>, <93 &plic 53>,
193+
<94 &plic 53>, <95 &plic 53>;
194+
};
195+
167196
&mac0 {
168197
status = "okay";
169198
phy-mode = "sgmii";

arch/riscv/boot/dts/microchip/mpfs-disco-kit.dts

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -97,24 +97,10 @@
9797
};
9898

9999
&gpio1 {
100-
interrupts = <27>, <28>, <29>, <30>,
101-
<31>, <32>, <33>, <47>,
102-
<35>, <36>, <37>, <38>,
103-
<39>, <40>, <41>, <42>,
104-
<43>, <44>, <45>, <46>,
105-
<47>, <48>, <49>, <50>;
106100
status = "okay";
107101
};
108102

109103
&gpio2 {
110-
interrupts = <53>, <53>, <53>, <53>,
111-
<53>, <53>, <53>, <53>,
112-
<53>, <53>, <53>, <53>,
113-
<53>, <53>, <53>, <53>,
114-
<53>, <53>, <53>, <53>,
115-
<53>, <53>, <53>, <53>,
116-
<53>, <53>, <53>, <53>,
117-
<53>, <53>, <53>, <53>;
118104
status = "okay";
119105
};
120106

@@ -130,6 +116,35 @@
130116
status = "okay";
131117
};
132118

119+
&irqmux {
120+
interrupt-map = <0 &plic 13>, <1 &plic 14>, <2 &plic 15>,
121+
<3 &plic 16>, <4 &plic 17>, <5 &plic 18>,
122+
<6 &plic 19>, <7 &plic 20>, <8 &plic 21>,
123+
<9 &plic 22>, <10 &plic 23>, <11 &plic 24>,
124+
<12 &plic 25>, <13 &plic 26>,
125+
126+
<32 &plic 27>, <33 &plic 28>, <34 &plic 29>,
127+
<35 &plic 30>, <36 &plic 31>, <37 &plic 32>,
128+
<38 &plic 33>, <39 &plic 34>, <40 &plic 35>,
129+
<41 &plic 36>, <42 &plic 37>, <43 &plic 38>,
130+
<44 &plic 39>, <45 &plic 40>, <46 &plic 41>,
131+
<47 &plic 42>, <48 &plic 43>, <49 &plic 44>,
132+
<50 &plic 45>, <51 &plic 46>, <52 &plic 47>,
133+
<53 &plic 48>, <54 &plic 49>, <55 &plic 50>,
134+
135+
<64 &plic 53>, <65 &plic 53>, <66 &plic 53>,
136+
<67 &plic 53>, <68 &plic 53>, <69 &plic 53>,
137+
<70 &plic 53>, <71 &plic 53>, <72 &plic 53>,
138+
<73 &plic 53>, <74 &plic 53>, <75 &plic 53>,
139+
<76 &plic 53>, <77 &plic 53>, <78 &plic 53>,
140+
<79 &plic 53>, <80 &plic 53>, <81 &plic 53>,
141+
<82 &plic 53>, <83 &plic 53>, <84 &plic 53>,
142+
<85 &plic 53>, <86 &plic 53>, <87 &plic 53>,
143+
<88 &plic 53>, <89 &plic 53>, <90 &plic 53>,
144+
<91 &plic 53>, <92 &plic 53>, <93 &plic 53>,
145+
<94 &plic 53>, <95 &plic 53>;
146+
};
147+
133148
&mac0 {
134149
phy-mode = "sgmii";
135150
phy-handle = <&phy0>;

arch/riscv/boot/dts/microchip/mpfs-icicle-kit-common.dtsi

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,6 @@
7676
};
7777

7878
&gpio2 {
79-
interrupts = <53>, <53>, <53>, <53>,
80-
<53>, <53>, <53>, <53>,
81-
<53>, <53>, <53>, <53>,
82-
<53>, <53>, <53>, <53>,
83-
<53>, <53>, <53>, <53>,
84-
<53>, <53>, <53>, <53>,
85-
<53>, <53>, <53>, <53>,
86-
<53>, <53>, <53>, <53>;
8779
status = "okay";
8880
};
8981

@@ -135,6 +127,35 @@
135127
status = "okay";
136128
};
137129

130+
&irqmux {
131+
interrupt-map = <0 &plic 13>, <1 &plic 14>, <2 &plic 15>,
132+
<3 &plic 16>, <4 &plic 17>, <5 &plic 18>,
133+
<6 &plic 19>, <7 &plic 20>, <8 &plic 21>,
134+
<9 &plic 22>, <10 &plic 23>, <11 &plic 24>,
135+
<12 &plic 25>, <13 &plic 26>,
136+
137+
<32 &plic 27>, <33 &plic 28>, <34 &plic 29>,
138+
<35 &plic 30>, <36 &plic 31>, <37 &plic 32>,
139+
<38 &plic 33>, <39 &plic 34>, <40 &plic 35>,
140+
<41 &plic 36>, <42 &plic 37>, <43 &plic 38>,
141+
<44 &plic 39>, <45 &plic 40>, <46 &plic 41>,
142+
<47 &plic 42>, <48 &plic 43>, <49 &plic 44>,
143+
<50 &plic 45>, <51 &plic 46>, <52 &plic 47>,
144+
<53 &plic 48>, <54 &plic 49>, <55 &plic 50>,
145+
146+
<64 &plic 53>, <65 &plic 53>, <66 &plic 53>,
147+
<67 &plic 53>, <68 &plic 53>, <69 &plic 53>,
148+
<70 &plic 53>, <71 &plic 53>, <72 &plic 53>,
149+
<73 &plic 53>, <74 &plic 53>, <75 &plic 53>,
150+
<76 &plic 53>, <77 &plic 53>, <78 &plic 53>,
151+
<79 &plic 53>, <80 &plic 53>, <81 &plic 53>,
152+
<82 &plic 53>, <83 &plic 53>, <84 &plic 53>,
153+
<85 &plic 53>, <86 &plic 53>, <87 &plic 53>,
154+
<88 &plic 53>, <89 &plic 53>, <90 &plic 53>,
155+
<91 &plic 53>, <92 &plic 53>, <93 &plic 53>,
156+
<94 &plic 53>, <95 &plic 53>;
157+
};
158+
138159
&mac0 {
139160
phy-mode = "sgmii";
140161
phy-handle = <&phy0>;

arch/riscv/boot/dts/microchip/mpfs-m100pfsevp.dts

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,36 @@
5252
status = "okay";
5353
};
5454

55+
&irqmux {
56+
interrupt-map = <0 &plic 13>, <1 &plic 14>, <2 &plic 15>,
57+
<3 &plic 16>, <4 &plic 17>, <5 &plic 18>,
58+
<6 &plic 19>, <7 &plic 20>, <8 &plic 21>,
59+
<9 &plic 22>, <10 &plic 23>, <11 &plic 24>,
60+
<12 &plic 25>, <13 &plic 26>,
61+
62+
<32 &plic 27>, <33 &plic 28>, <34 &plic 29>,
63+
<35 &plic 30>, <36 &plic 31>, <37 &plic 32>,
64+
<38 &plic 33>, <39 &plic 34>, <40 &plic 35>,
65+
<41 &plic 36>, <42 &plic 37>, <43 &plic 38>,
66+
<44 &plic 39>, <45 &plic 40>, <46 &plic 41>,
67+
<47 &plic 42>, <48 &plic 43>, <49 &plic 44>,
68+
<50 &plic 45>, <51 &plic 46>, <52 &plic 47>,
69+
<53 &plic 48>, <54 &plic 49>, <55 &plic 50>,
70+
71+
<64 &plic 53>, <65 &plic 53>, <66 &plic 53>,
72+
<67 &plic 53>, <68 &plic 53>, <69 &plic 53>,
73+
<70 &plic 53>, <71 &plic 53>, <72 &plic 53>,
74+
<73 &plic 53>, <74 &plic 53>, <75 &plic 53>,
75+
<76 &plic 53>, <77 &plic 53>, <78 &plic 53>,
76+
<79 &plic 53>, <80 &plic 53>, <81 &plic 53>,
77+
<82 &plic 53>, <83 &plic 53>, <84 &plic 53>,
78+
<85 &plic 53>, <86 &plic 53>, <87 &plic 53>,
79+
<88 &plic 53>, <89 &plic 53>, <90 &plic 53>,
80+
<91 &plic 53>, <92 &plic 53>, <93 &plic 53>,
81+
<94 &plic 53>, <95 &plic 53>;
82+
};
83+
5584
&gpio0 {
56-
interrupts = <13>, <14>, <15>, <16>,
57-
<17>, <18>, <19>, <20>,
58-
<21>, <22>, <23>, <24>,
59-
<25>, <26>;
6085
ngpios = <14>;
6186
status = "okay";
6287

@@ -75,14 +100,6 @@
75100
};
76101

77102
&gpio2 {
78-
interrupts = <13>, <14>, <15>, <16>,
79-
<17>, <18>, <19>, <20>,
80-
<21>, <22>, <23>, <24>,
81-
<25>, <26>, <27>, <28>,
82-
<29>, <30>, <31>, <32>,
83-
<33>, <34>, <35>, <36>,
84-
<37>, <38>, <39>, <40>,
85-
<41>, <42>, <43>, <44>;
86103
status = "okay";
87104
};
88105

arch/riscv/boot/dts/microchip/mpfs-polarberry.dts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,35 @@
3030
};
3131
};
3232

33+
&irqmux {
34+
interrupt-map = <0 &plic 13>, <1 &plic 14>, <2 &plic 15>,
35+
<3 &plic 16>, <4 &plic 17>, <5 &plic 18>,
36+
<6 &plic 19>, <7 &plic 20>, <8 &plic 21>,
37+
<9 &plic 22>, <10 &plic 23>, <11 &plic 24>,
38+
<12 &plic 25>, <13 &plic 26>,
39+
40+
<32 &plic 27>, <33 &plic 28>, <34 &plic 29>,
41+
<35 &plic 30>, <36 &plic 31>, <37 &plic 32>,
42+
<38 &plic 33>, <39 &plic 34>, <40 &plic 35>,
43+
<41 &plic 36>, <42 &plic 37>, <43 &plic 38>,
44+
<44 &plic 39>, <45 &plic 40>, <46 &plic 41>,
45+
<47 &plic 42>, <48 &plic 43>, <49 &plic 44>,
46+
<50 &plic 45>, <51 &plic 46>, <52 &plic 47>,
47+
<53 &plic 48>, <54 &plic 49>, <55 &plic 50>,
48+
49+
<64 &plic 53>, <65 &plic 53>, <66 &plic 53>,
50+
<67 &plic 53>, <68 &plic 53>, <69 &plic 53>,
51+
<70 &plic 53>, <71 &plic 53>, <72 &plic 53>,
52+
<73 &plic 53>, <74 &plic 53>, <75 &plic 53>,
53+
<76 &plic 53>, <77 &plic 53>, <78 &plic 53>,
54+
<79 &plic 53>, <80 &plic 53>, <81 &plic 53>,
55+
<82 &plic 53>, <83 &plic 53>, <84 &plic 53>,
56+
<85 &plic 53>, <86 &plic 53>, <87 &plic 53>,
57+
<88 &plic 53>, <89 &plic 53>, <90 &plic 53>,
58+
<91 &plic 53>, <92 &plic 53>, <93 &plic 53>,
59+
<94 &plic 53>, <95 &plic 53>;
60+
};
61+
3362
/*
3463
* phy0 is connected to mac0, but the port itself is on the (optional) carrier
3564
* board.

arch/riscv/boot/dts/microchip/mpfs-sev-kit.dts

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,36 @@
5656
status = "okay";
5757
};
5858

59+
&irqmux {
60+
interrupt-map = <0 &plic 13>, <1 &plic 14>, <2 &plic 15>,
61+
<3 &plic 16>, <4 &plic 17>, <5 &plic 18>,
62+
<6 &plic 19>, <7 &plic 20>, <8 &plic 21>,
63+
<9 &plic 22>, <10 &plic 23>, <11 &plic 24>,
64+
<12 &plic 25>, <13 &plic 26>,
65+
66+
<32 &plic 27>, <33 &plic 28>, <34 &plic 29>,
67+
<35 &plic 30>, <36 &plic 31>, <37 &plic 32>,
68+
<38 &plic 33>, <39 &plic 34>, <40 &plic 35>,
69+
<41 &plic 36>, <42 &plic 37>, <43 &plic 38>,
70+
<44 &plic 39>, <45 &plic 40>, <46 &plic 41>,
71+
<47 &plic 42>, <48 &plic 43>, <49 &plic 44>,
72+
<50 &plic 45>, <51 &plic 46>, <52 &plic 47>,
73+
<53 &plic 48>, <54 &plic 49>, <55 &plic 50>,
74+
75+
<64 &plic 53>, <65 &plic 53>, <66 &plic 53>,
76+
<67 &plic 53>, <68 &plic 53>, <69 &plic 53>,
77+
<70 &plic 53>, <71 &plic 53>, <72 &plic 53>,
78+
<73 &plic 53>, <74 &plic 53>, <75 &plic 53>,
79+
<76 &plic 53>, <77 &plic 53>, <78 &plic 53>,
80+
<79 &plic 53>, <80 &plic 53>, <81 &plic 53>,
81+
<82 &plic 53>, <83 &plic 53>, <84 &plic 53>,
82+
<85 &plic 53>, <86 &plic 53>, <87 &plic 53>,
83+
<88 &plic 53>, <89 &plic 53>, <90 &plic 53>,
84+
<91 &plic 53>, <92 &plic 53>, <93 &plic 53>,
85+
<94 &plic 53>, <95 &plic 53>;
86+
};
87+
5988
&gpio2 {
60-
interrupts = <53>, <53>, <53>, <53>,
61-
<53>, <53>, <53>, <53>,
62-
<53>, <53>, <53>, <53>,
63-
<53>, <53>, <53>, <53>,
64-
<53>, <53>, <53>, <53>,
65-
<53>, <53>, <53>, <53>,
66-
<53>, <53>, <53>, <53>,
67-
<53>, <53>, <53>, <53>;
6889
status = "okay";
6990
};
7091

arch/riscv/boot/dts/microchip/mpfs-tysom-m.dts

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,36 @@
6969
};
7070
};
7171

72+
&irqmux {
73+
interrupt-map = <0 &plic 13>, <1 &plic 14>, <2 &plic 15>,
74+
<3 &plic 16>, <4 &plic 17>, <5 &plic 18>,
75+
<6 &plic 19>, <7 &plic 20>, <8 &plic 21>,
76+
<9 &plic 22>, <10 &plic 23>, <11 &plic 24>,
77+
<12 &plic 25>, <13 &plic 26>,
78+
79+
<32 &plic 27>, <33 &plic 28>, <34 &plic 29>,
80+
<35 &plic 30>, <36 &plic 31>, <37 &plic 32>,
81+
<38 &plic 33>, <39 &plic 34>, <40 &plic 35>,
82+
<41 &plic 36>, <42 &plic 37>, <43 &plic 38>,
83+
<44 &plic 39>, <45 &plic 40>, <46 &plic 41>,
84+
<47 &plic 42>, <48 &plic 43>, <49 &plic 44>,
85+
<50 &plic 45>, <51 &plic 46>, <52 &plic 47>,
86+
<53 &plic 48>, <54 &plic 49>, <55 &plic 50>,
87+
88+
<64 &plic 53>, <65 &plic 53>, <66 &plic 53>,
89+
<67 &plic 53>, <68 &plic 53>, <69 &plic 53>,
90+
<70 &plic 53>, <71 &plic 53>, <72 &plic 53>,
91+
<73 &plic 53>, <74 &plic 53>, <75 &plic 53>,
92+
<76 &plic 53>, <77 &plic 53>, <78 &plic 53>,
93+
<79 &plic 53>, <80 &plic 53>, <81 &plic 53>,
94+
<82 &plic 53>, <83 &plic 53>, <84 &plic 53>,
95+
<85 &plic 53>, <86 &plic 53>, <87 &plic 53>,
96+
<88 &plic 53>, <89 &plic 53>, <90 &plic 53>,
97+
<91 &plic 53>, <92 &plic 53>, <93 &plic 53>,
98+
<94 &plic 53>, <95 &plic 53>;
99+
};
100+
72101
&gpio1 {
73-
interrupts = <27>, <28>, <29>, <30>,
74-
<31>, <32>, <33>, <47>,
75-
<35>, <36>, <37>, <38>,
76-
<39>, <40>, <41>, <42>,
77-
<43>, <44>, <45>, <46>,
78-
<47>, <48>, <49>, <50>;
79102
status = "okay";
80103
};
81104

0 commit comments

Comments
 (0)