summaryrefslogtreecommitdiffstats
path: root/arch/arm/boot/dts/broadcom/bcm47094-dlink-dir-890l.dts
blob: 3124dfd01b9447e047dd9b5956a38c076ef55cec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/*
 * Device tree for D-Link DIR-890L
 * D-Link calls this board "WRGAC36"
 * this router has the same looks and form factor as D-Link DIR-885L.
 *
 * Some differences from DIR-885L include a separate USB2 port, separate LEDs
 * for USB2 and USB3, a separate VCC supply for the USB2 slot and no
 * router/extender switch is mounted (there is an empty mount point on the
 * PCB) so this device is a pure router. Also the LAN ports are in the right
 * order.
 *
 * Based on the device tree for DIR-885L
 * Copyright (C) 2016 Rafał Miłecki <zajec5@gmail.com>
 * Copyright (C) 2022 Linus Walleij
 */

/dts-v1/;

#include "bcm47094.dtsi"
#include "bcm5301x-nand-cs0-bch1.dtsi"

/ {
	compatible = "dlink,dir-890l", "brcm,bcm47094", "brcm,bcm4708";
	model = "D-Link DIR-890L";

	chosen {
		bootargs = "console=ttyS0,115200 earlycon";
	};

	memory@0 {
		device_type = "memory";
		reg = <0x00000000 0x08000000>,
		      <0x88000000 0x08000000>;
	};

	leds {
		/*
		 * LED information is derived from the boot log which
		 * conveniently lists all the LEDs.
		 */
		compatible = "gpio-leds";

		led-power-white {
			label = "bcm53xx:white:power";
			gpios = <&chipcommon 0 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "default-on";
		};

		led-wan-white {
			label = "bcm53xx:white:wan";
			gpios = <&chipcommon 1 GPIO_ACTIVE_LOW>;
		};

		led-power-amber {
			label = "bcm53xx:amber:power";
			gpios = <&chipcommon 2 GPIO_ACTIVE_LOW>;
		};

		led-wan-amber {
			label = "bcm53xx:amber:wan";
			gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
		};

		led-usb3-white {
			label = "bcm53xx:white:usb3";
			gpios = <&chipcommon 8 GPIO_ACTIVE_LOW>;
			trigger-sources = <&xhci_port1>;
			linux,default-trigger = "usbport";
		};

		led-usb2-white {
			label = "bcm53xx:white:usb2";
			gpios = <&chipcommon 15 GPIO_ACTIVE_LOW>;
			trigger-sources = <&ohci_port1>, <&ehci_port1>;
			linux,default-trigger = "usbport";
		};

		led-2ghz {
			label = "bcm53xx:white:2ghz";
			gpios = <&chipcommon 13 GPIO_ACTIVE_LOW>;
		};

		led-5ghz {
			label = "bcm53xx:white:5ghz";
			gpios = <&chipcommon 14 GPIO_ACTIVE_LOW>;
		};
	};

	gpio-keys {
		compatible = "gpio-keys";

		button-wps {
			label = "WPS";
			linux,code = <KEY_WPS_BUTTON>;
			gpios = <&chipcommon 7 GPIO_ACTIVE_LOW>;
		};

		/* Called "factory reset" in the vendor dmesg */
		button-restart {
			label = "Reset";
			linux,code = <KEY_RESTART>;
			gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
		};
	};

	/*
	 * The flash memory is memory mapped at 0x1e000000-0x1fffffff
	 * 64KB blocks; total size 2MB, same that can be
	 * found attached to the spi_nor SPI controller.
	 */
	nvram@1e1f0000 {
		compatible = "brcm,nvram";
		reg = <0x1e1f0000 0x00010000>;

		et0macaddr: et0macaddr {
		};
	};
};

&gmac2 {
	/*
	 * The NVRAM curiously does not contain a MAC address
	 * for et2 so since that is the only ethernet interface
	 * actually in use on the platform, we use this et0 MAC
	 * address for et2.
	 */
	nvmem-cells = <&et0macaddr>;
	nvmem-cell-names = "mac-address";
};

&spi_nor {
	status = "okay";
};

&nandcs {
	/* Spansion S34ML01G2, 128MB with 128KB erase blocks */
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		/*
		 * This is called "nflash" in the vendor kernel with
		 * "upgrade" and "rootfs" (probably using OpenWrt
		 * splitpart). We call it "firmware" like standard tools
		 * assume. The CFE loader contains incorrect information
		 * about TRX partitions, ignore this, there are no TRX
		 * partitions: this device uses SEAMA.
		 */
		firmware@0 {
			compatible = "seama";
			label = "firmware";
			reg = <0x00000000 0x08000000>;
		};
	};
};

&usb2 {
	vcc-gpios = <&chipcommon 21 GPIO_ACTIVE_HIGH>;
};

&usb3 {
	vcc-gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
};

&usb3_phy {
	status = "okay";
};

&srab {
	status = "okay";

	ports {
		port@0 {
			label = "lan1";
		};

		port@1 {
			label = "lan2";
		};

		port@2 {
			label = "lan3";
		};

		port@3 {
			label = "lan4";
		};

		port@4 {
			label = "wan";
		};

		port@5 {
			status = "disabled";
		};

		port@7 {
			status = "disabled";
		};

		port@8 {
			label = "cpu";
			phy-mode = "rgmii";
		};
	};
};