1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright 2024 Linus Walleij <[email protected]>
4 */
5
6/dts-v1/;
7
8#include "bcm6846.dtsi"
9#include <dt-bindings/gpio/gpio.h>
10#include <dt-bindings/input/input.h>
11#include <dt-bindings/leds/common.h>
12
13/ {
14	model = "Genexis XG6846B Ethernet layer 2/3 router";
15	compatible = "genexis,xg6846b", "brcm,bcm6846", "brcm,bcmbca";
16
17	aliases {
18		serial0 = &uart0;
19	};
20
21	chosen {
22		stdout-path = "serial0:115200n8";
23	};
24
25	/* Micron D9PTK 256 MB RAM */
26	memory@0 {
27		device_type = "memory";
28		reg = <0x0 0x10000000>;
29	};
30
31	reserved-memory {
32		#address-cells = <1>;
33		#size-cells = <1>;
34		ranges;
35
36		secondary-boot@0 {
37			no-map;
38			reg = <0x00000000 0x00008000>;
39		};
40		pmc3-firmware@8000 {
41			no-map;
42			reg = <0x00008000 0x00100000>;
43		};
44	};
45
46	gpio-keys {
47		compatible = "gpio-keys-polled";
48		poll-interval = <20000>;
49
50		/* Called "canyon rescue button" in the vendor DTB */
51		button-restart {
52			label = "Reset";
53			linux,code = <KEY_RESTART>;
54			gpios = <&gpio0 41 GPIO_ACTIVE_LOW>;
55		};
56	};
57};
58
59&gpio0 {
60	status = "okay";
61};
62
63&gpio1 {
64	status = "okay";
65};
66
67&gpio2 {
68	status = "okay";
69	/* Totally 79 GPIOs are available */
70	ngpios = <15>;
71};
72
73&uart0 {
74	status = "okay";
75};
76
77&leds {
78	status = "okay";
79	brcm,serial-shift-bits = <16>;
80
81	led@0 {
82		reg = <0>;
83		active-low;
84		function = "ext";
85		color = <LED_COLOR_ID_GREEN>;
86	};
87
88	led@1 {
89		reg = <1>;
90		active-low;
91		function = "ext";
92		color = <LED_COLOR_ID_AMBER>;
93	};
94
95	led@3 {
96		reg = <3>;
97		active-low;
98		function = LED_FUNCTION_WAN;
99		color = <LED_COLOR_ID_AMBER>;
100	};
101
102	led@4 {
103		reg = <4>;
104		active-low;
105		function = LED_FUNCTION_WAN;
106		color = <LED_COLOR_ID_GREEN>;
107	};
108
109	led@5 {
110		reg = <5>;
111		active-low;
112		function = LED_FUNCTION_POWER;
113		color = <LED_COLOR_ID_GREEN>;
114	};
115
116	led@6 {
117		reg = <6>;
118		active-low;
119		function = LED_FUNCTION_POWER;
120		color = <LED_COLOR_ID_RED>;
121	};
122
123	led@15 {
124		reg = <15>;
125		active-low;
126		function = LED_FUNCTION_USB;
127		color = <LED_COLOR_ID_GREEN>;
128	};
129
130	led@7 {
131		/* Activity 03 */
132		reg = <7>;
133		active-low;
134		function = "lan1";
135		color = <LED_COLOR_ID_AMBER>;
136	};
137
138	led@8 {
139		/* Activity 04 */
140		reg = <8>;
141		active-low;
142		function = "lan1";
143		color = <LED_COLOR_ID_GREEN>;
144	};
145
146	led@9 {
147		/* Activity 03 */
148		reg = <9>;
149		active-low;
150		function = "lan2";
151		color = <LED_COLOR_ID_AMBER>;
152	};
153
154	led@10 {
155		/* Activity 04 */
156		reg = <10>;
157		active-low;
158		function = "lan2";
159		color = <LED_COLOR_ID_GREEN>;
160	};
161
162	led@11 {
163		/* Activity 03 */
164		reg = <11>;
165		active-low;
166		function = "lan3";
167		color = <LED_COLOR_ID_AMBER>;
168	};
169
170	led@12 {
171		/* Activity 04 */
172		reg = <12>;
173		active-low;
174		function = "lan3";
175		color = <LED_COLOR_ID_GREEN>;
176	};
177
178	led@13 {
179		/* Activity 03 */
180		reg = <13>;
181		active-low;
182		function = "lan4";
183		color = <LED_COLOR_ID_AMBER>;
184	};
185
186	led@14 {
187		/* Activity 04 */
188		reg = <14>;
189		active-low;
190		function = "lan4";
191		color = <LED_COLOR_ID_GREEN>;
192	};
193};
194
195&hsspi {
196	status = "okay";
197};
198
199&nand_controller {
200	brcm,wp-not-connected;
201	status = "okay";
202};
203
204&nandcs {
205	nand-on-flash-bbt;
206	brcm,nand-ecc-use-strap;
207
208	/* Winbond W29N02GV, 256MB with 128KB erase blocks */
209	partitions {
210		compatible = "fixed-partitions";
211		#address-cells = <1>;
212		#size-cells = <1>;
213
214		loader@0 {
215			label = "loader";
216			reg = <0x00000000 0x00400000>;
217		};
218		image@400000 {
219			label = "image";
220			reg = <0x00400000 0x0fb00000>;
221		};
222		/* 0x00ff0000-0x00ffffff: bad block list */
223	};
224};
225
226&mdio {
227	status = "okay";
228
229	phy1: ethernet-phy@1 {
230		reg = <1>;
231	};
232	phy2: ethernet-phy@2 {
233		reg = <2>;
234	};
235	phy3: ethernet-phy@3 {
236		reg = <3>;
237	};
238	phy4: ethernet-phy@4 {
239		reg = <4>;
240	};
241	phy21: ethernet-phy@21 {
242		reg = <21>;
243	};
244};
245