blob: aa431b97cc6487022d13921887aad573fff17c2a [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001From 702a8f4744ed5b480f2b2411858184afdb10f9fd Mon Sep 17 00:00:00 2001
2From: Matthew Hagan <mnhagan88@gmail.com>
3Date: Fri, 6 Aug 2021 21:44:35 +0100
4Subject: [PATCH] ARM: dts: NSP: Add DT files for Meraki MX65 series
5
6MX65 & MX65W Hardware info:
7 - CPU: Broadcom BCM58625 Cortex A9 @ 1200Mhz
8 - RAM: 2 GB (4 x 4Gb SK Hynix H5TC4G83CFR)
9 - Storage: 1 GB (Micron MT29F8G08ABACA)
10 - Networking: BCM58625 switch (2x 1GbE ports)
11 2x Qualcomm QCA8337 switches (10x 1GbE ports total)
12 - PSE: Broadcom BCM59111KMLG connected to LAN ports 11 & 12
13 - USB: 1x USB2.0
14 - Serial: Internal header
15 - WLAN(MX65W Only): 2x Broadcom BCM43520KMLG on the PCI bus.
16
17Note that a driver and firmware image for the BCM59111 PSE has been
18released under GPL, but this is not present in the kernel.
19
20Signed-off-by: Matthew Hagan <mnhagan88@gmail.com>
21Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
22---
23 arch/arm/boot/dts/Makefile | 2 +
24 arch/arm/boot/dts/bcm958625-meraki-alamo.dtsi | 279 ++++++++++++++++++
25 arch/arm/boot/dts/bcm958625-meraki-mx65.dts | 24 ++
26 arch/arm/boot/dts/bcm958625-meraki-mx65w.dts | 32 ++
27 4 files changed, 337 insertions(+)
28 create mode 100644 arch/arm/boot/dts/bcm958625-meraki-alamo.dtsi
29 create mode 100644 arch/arm/boot/dts/bcm958625-meraki-mx65.dts
30 create mode 100644 arch/arm/boot/dts/bcm958625-meraki-mx65w.dts
31
32--- a/arch/arm/boot/dts/Makefile
33+++ b/arch/arm/boot/dts/Makefile
34@@ -152,6 +152,8 @@ dtb-$(CONFIG_ARCH_BCM_NSP) += \
35 bcm958625-meraki-mx64-a0.dtb \
36 bcm958625-meraki-mx64w.dtb \
37 bcm958625-meraki-mx64w-a0.dtb \
38+ bcm958625-meraki-mx65.dtb \
39+ bcm958625-meraki-mx65w.dtb \
40 bcm958625hr.dtb \
41 bcm988312hr.dtb \
42 bcm958625k.dtb
43--- /dev/null
44+++ b/arch/arm/boot/dts/bcm958625-meraki-alamo.dtsi
45@@ -0,0 +1,279 @@
46+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
47+/*
48+ * Device Tree Bindings for Cisco Meraki MX65 series (Alamo).
49+ *
50+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
51+ */
52+
53+#include "bcm958625-meraki-mx6x-common.dtsi"
54+
55+/ {
56+ keys {
57+ compatible = "gpio-keys-polled";
58+ autorepeat;
59+ poll-interval = <20>;
60+
61+ reset {
62+ label = "reset";
63+ linux,code = <KEY_RESTART>;
64+ gpios = <&gpioa 8 GPIO_ACTIVE_LOW>;
65+ };
66+ };
67+
68+ leds {
69+ compatible = "gpio-leds";
70+
71+ led-0 {
72+ /* green:wan1-left */
73+ function = LED_FUNCTION_ACTIVITY;
74+ function-enumerator = <0>;
75+ color = <LED_COLOR_ID_GREEN>;
76+ gpios = <&gpioa 25 GPIO_ACTIVE_LOW>;
77+ };
78+
79+ led-1 {
80+ /* green:wan1-right */
81+ function = LED_FUNCTION_ACTIVITY;
82+ function-enumerator = <1>;
83+ color = <LED_COLOR_ID_GREEN>;
84+ gpios = <&gpioa 24 GPIO_ACTIVE_LOW>;
85+ };
86+
87+ led-2 {
88+ /* green:wan2-left */
89+ function = LED_FUNCTION_ACTIVITY;
90+ function-enumerator = <2>;
91+ color = <LED_COLOR_ID_GREEN>;
92+ gpios = <&gpioa 27 GPIO_ACTIVE_LOW>;
93+ };
94+
95+ led-3 {
96+ /* green:wan2-right */
97+ function = LED_FUNCTION_ACTIVITY;
98+ function-enumerator = <3>;
99+ color = <LED_COLOR_ID_GREEN>;
100+ gpios = <&gpioa 26 GPIO_ACTIVE_LOW>;
101+ };
102+
103+ led-4 {
104+ /* amber:power */
105+ function = LED_FUNCTION_POWER;
106+ color = <LED_COLOR_ID_AMBER>;
107+ gpios = <&gpioa 3 GPIO_ACTIVE_HIGH>;
108+ default-state = "on";
109+ };
110+
111+ led-5 {
112+ /* white:status */
113+ function = LED_FUNCTION_STATUS;
114+ color = <LED_COLOR_ID_WHITE>;
115+ gpios = <&gpioa 31 GPIO_ACTIVE_HIGH>;
116+ };
117+ };
118+
119+ mdio-mii-mux {
120+ compatible = "mdio-mux-mmioreg";
121+ reg = <0x1803f1c0 0x4>;
122+ mux-mask = <0x2000>;
123+ mdio-parent-bus = <&mdio_ext>;
124+ #address-cells = <1>;
125+ #size-cells = <0>;
126+
127+ mdio@0 {
128+ reg = <0x0>;
129+ #address-cells = <1>;
130+ #size-cells = <0>;
131+
132+ phy_port6: phy@0 {
133+ reg = <0>;
134+ };
135+
136+ phy_port7: phy@1 {
137+ reg = <1>;
138+ };
139+
140+ phy_port8: phy@2 {
141+ reg = <2>;
142+ };
143+
144+ phy_port9: phy@3 {
145+ reg = <3>;
146+ };
147+
148+ phy_port10: phy@4 {
149+ reg = <4>;
150+ };
151+
152+ switch@10 {
153+ compatible = "qca,qca8337";
154+ reg = <0x10>;
155+ dsa,member = <1 0>;
156+
157+ ports {
158+ #address-cells = <1>;
159+ #size-cells = <0>;
160+ port@0 {
161+ reg = <0>;
162+ ethernet = <&sgmii1>;
163+ phy-mode = "sgmii";
164+ fixed-link {
165+ speed = <1000>;
166+ full-duplex;
167+ };
168+ };
169+
170+ port@1 {
171+ reg = <1>;
172+ label = "lan8";
173+ phy-handle = <&phy_port6>;
174+ };
175+
176+ port@2 {
177+ reg = <2>;
178+ label = "lan9";
179+ phy-handle = <&phy_port7>;
180+ };
181+
182+ port@3 {
183+ reg = <3>;
184+ label = "lan10";
185+ phy-handle = <&phy_port8>;
186+ };
187+
188+ port@4 {
189+ reg = <4>;
190+ label = "lan11";
191+ phy-handle = <&phy_port9>;
192+ };
193+
194+ port@5 {
195+ reg = <5>;
196+ label = "lan12";
197+ phy-handle = <&phy_port10>;
198+ };
199+ };
200+ };
201+ };
202+
203+ mdio-mii@2000 {
204+ reg = <0x2000>;
205+ #address-cells = <1>;
206+ #size-cells = <0>;
207+
208+ phy_port1: phy@0 {
209+ reg = <0>;
210+ };
211+
212+ phy_port2: phy@1 {
213+ reg = <1>;
214+ };
215+
216+ phy_port3: phy@2 {
217+ reg = <2>;
218+ };
219+
220+ phy_port4: phy@3 {
221+ reg = <3>;
222+ };
223+
224+ phy_port5: phy@4 {
225+ reg = <4>;
226+ };
227+
228+ switch@10 {
229+ compatible = "qca,qca8337";
230+ reg = <0x10>;
231+ dsa,member = <2 0>;
232+
233+ ports {
234+ #address-cells = <1>;
235+ #size-cells = <0>;
236+ port@0 {
237+ reg = <0>;
238+ ethernet = <&sgmii0>;
239+ phy-mode = "sgmii";
240+ fixed-link {
241+ speed = <1000>;
242+ full-duplex;
243+ };
244+ };
245+
246+ port@1 {
247+ reg = <1>;
248+ label = "lan3";
249+ phy-handle = <&phy_port1>;
250+ };
251+
252+ port@2 {
253+ reg = <2>;
254+ label = "lan4";
255+ phy-handle = <&phy_port2>;
256+ };
257+
258+ port@3 {
259+ reg = <3>;
260+ label = "lan5";
261+ phy-handle = <&phy_port3>;
262+ };
263+
264+ port@4 {
265+ reg = <4>;
266+ label = "lan6";
267+ phy-handle = <&phy_port4>;
268+ };
269+
270+ port@5 {
271+ reg = <5>;
272+ label = "lan7";
273+ phy-handle = <&phy_port5>;
274+ };
275+ };
276+ };
277+ };
278+ };
279+};
280+
281+&srab {
282+ compatible = "brcm,bcm58625-srab", "brcm,nsp-srab";
283+ status = "okay";
284+ dsa,member = <0 0>;
285+
286+ ports {
287+ port@0 {
288+ label = "wan1";
289+ reg = <0>;
290+ };
291+
292+ port@1 {
293+ label = "wan2";
294+ reg = <1>;
295+ };
296+
297+ sgmii0: port@4 {
298+ label = "sw0";
299+ reg = <4>;
300+ fixed-link {
301+ speed = <1000>;
302+ full-duplex;
303+ };
304+ };
305+
306+ sgmii1: port@5 {
307+ label = "sw1";
308+ reg = <5>;
309+ fixed-link {
310+ speed = <1000>;
311+ full-duplex;
312+ };
313+ };
314+
315+ port@8 {
316+ ethernet = <&amac2>;
317+ reg = <8>;
318+ fixed-link {
319+ speed = <1000>;
320+ full-duplex;
321+ };
322+ };
323+ };
324+};
325--- /dev/null
326+++ b/arch/arm/boot/dts/bcm958625-meraki-mx65.dts
327@@ -0,0 +1,24 @@
328+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
329+/*
330+ * Device Tree Bindings for Cisco Meraki MX65.
331+ *
332+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
333+ */
334+
335+/dts-v1/;
336+
337+#include "bcm958625-meraki-alamo.dtsi"
338+
339+/ {
340+ model = "Cisco Meraki MX65";
341+ compatible = "meraki,mx65", "brcm,bcm58625", "brcm,nsp";
342+
343+ chosen {
344+ stdout-path = "serial0:115200n8";
345+ };
346+
347+ memory@60000000 {
348+ device_type = "memory";
349+ reg = <0x60000000 0x80000000>;
350+ };
351+};
352--- /dev/null
353+++ b/arch/arm/boot/dts/bcm958625-meraki-mx65w.dts
354@@ -0,0 +1,32 @@
355+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
356+/*
357+ * Device Tree Bindings for Cisco Meraki MX65W.
358+ *
359+ * Copyright (C) 2020-2021 Matthew Hagan <mnhagan88@gmail.com>
360+ */
361+
362+/dts-v1/;
363+
364+#include "bcm958625-meraki-alamo.dtsi"
365+
366+/ {
367+ model = "Cisco Meraki MX65W";
368+ compatible = "meraki,mx65w", "brcm,bcm58625", "brcm,nsp";
369+
370+ chosen {
371+ stdout-path = "serial0:115200n8";
372+ };
373+
374+ memory@60000000 {
375+ device_type = "memory";
376+ reg = <0x60000000 0x80000000>;
377+ };
378+};
379+
380+&pcie0 {
381+ status = "okay";
382+};
383+
384+&pcie1 {
385+ status = "okay";
386+};