162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Device tree for D-Link DIR-890L
462306a36Sopenharmony_ci * D-Link calls this board "WRGAC36"
562306a36Sopenharmony_ci * this router has the same looks and form factor as D-Link DIR-885L.
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Some differences from DIR-885L include a separate USB2 port, separate LEDs
862306a36Sopenharmony_ci * for USB2 and USB3, a separate VCC supply for the USB2 slot and no
962306a36Sopenharmony_ci * router/extender switch is mounted (there is an empty mount point on the
1062306a36Sopenharmony_ci * PCB) so this device is a pure router. Also the LAN ports are in the right
1162306a36Sopenharmony_ci * order.
1262306a36Sopenharmony_ci *
1362306a36Sopenharmony_ci * Based on the device tree for DIR-885L
1462306a36Sopenharmony_ci * Copyright (C) 2016 Rafał Miłecki <zajec5@gmail.com>
1562306a36Sopenharmony_ci * Copyright (C) 2022 Linus Walleij
1662306a36Sopenharmony_ci */
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci/dts-v1/;
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci#include "bcm47094.dtsi"
2162306a36Sopenharmony_ci#include "bcm5301x-nand-cs0-bch1.dtsi"
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci/ {
2462306a36Sopenharmony_ci	compatible = "dlink,dir-890l", "brcm,bcm47094", "brcm,bcm4708";
2562306a36Sopenharmony_ci	model = "D-Link DIR-890L";
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci	chosen {
2862306a36Sopenharmony_ci		bootargs = "console=ttyS0,115200 earlycon";
2962306a36Sopenharmony_ci	};
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	memory@0 {
3262306a36Sopenharmony_ci		device_type = "memory";
3362306a36Sopenharmony_ci		reg = <0x00000000 0x08000000>,
3462306a36Sopenharmony_ci		      <0x88000000 0x08000000>;
3562306a36Sopenharmony_ci	};
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci	leds {
3862306a36Sopenharmony_ci		/*
3962306a36Sopenharmony_ci		 * LED information is derived from the boot log which
4062306a36Sopenharmony_ci		 * conveniently lists all the LEDs.
4162306a36Sopenharmony_ci		 */
4262306a36Sopenharmony_ci		compatible = "gpio-leds";
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci		led-power-white {
4562306a36Sopenharmony_ci			label = "bcm53xx:white:power";
4662306a36Sopenharmony_ci			gpios = <&chipcommon 0 GPIO_ACTIVE_LOW>;
4762306a36Sopenharmony_ci			linux,default-trigger = "default-on";
4862306a36Sopenharmony_ci		};
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci		led-wan-white {
5162306a36Sopenharmony_ci			label = "bcm53xx:white:wan";
5262306a36Sopenharmony_ci			gpios = <&chipcommon 1 GPIO_ACTIVE_LOW>;
5362306a36Sopenharmony_ci		};
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci		led-power-amber {
5662306a36Sopenharmony_ci			label = "bcm53xx:amber:power";
5762306a36Sopenharmony_ci			gpios = <&chipcommon 2 GPIO_ACTIVE_LOW>;
5862306a36Sopenharmony_ci		};
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci		led-wan-amber {
6162306a36Sopenharmony_ci			label = "bcm53xx:amber:wan";
6262306a36Sopenharmony_ci			gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>;
6362306a36Sopenharmony_ci		};
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci		led-usb3-white {
6662306a36Sopenharmony_ci			label = "bcm53xx:white:usb3";
6762306a36Sopenharmony_ci			gpios = <&chipcommon 8 GPIO_ACTIVE_LOW>;
6862306a36Sopenharmony_ci			trigger-sources = <&xhci_port1>;
6962306a36Sopenharmony_ci			linux,default-trigger = "usbport";
7062306a36Sopenharmony_ci		};
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci		led-usb2-white {
7362306a36Sopenharmony_ci			label = "bcm53xx:white:usb2";
7462306a36Sopenharmony_ci			gpios = <&chipcommon 15 GPIO_ACTIVE_LOW>;
7562306a36Sopenharmony_ci			trigger-sources = <&ohci_port1>, <&ehci_port1>;
7662306a36Sopenharmony_ci			linux,default-trigger = "usbport";
7762306a36Sopenharmony_ci		};
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ci		led-2ghz {
8062306a36Sopenharmony_ci			label = "bcm53xx:white:2ghz";
8162306a36Sopenharmony_ci			gpios = <&chipcommon 13 GPIO_ACTIVE_LOW>;
8262306a36Sopenharmony_ci		};
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci		led-5ghz {
8562306a36Sopenharmony_ci			label = "bcm53xx:white:5ghz";
8662306a36Sopenharmony_ci			gpios = <&chipcommon 14 GPIO_ACTIVE_LOW>;
8762306a36Sopenharmony_ci		};
8862306a36Sopenharmony_ci	};
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci	gpio-keys {
9162306a36Sopenharmony_ci		compatible = "gpio-keys";
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci		button-wps {
9462306a36Sopenharmony_ci			label = "WPS";
9562306a36Sopenharmony_ci			linux,code = <KEY_WPS_BUTTON>;
9662306a36Sopenharmony_ci			gpios = <&chipcommon 7 GPIO_ACTIVE_LOW>;
9762306a36Sopenharmony_ci		};
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci		/* Called "factory reset" in the vendor dmesg */
10062306a36Sopenharmony_ci		button-restart {
10162306a36Sopenharmony_ci			label = "Reset";
10262306a36Sopenharmony_ci			linux,code = <KEY_RESTART>;
10362306a36Sopenharmony_ci			gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
10462306a36Sopenharmony_ci		};
10562306a36Sopenharmony_ci	};
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci	/*
10862306a36Sopenharmony_ci	 * The flash memory is memory mapped at 0x1e000000-0x1fffffff
10962306a36Sopenharmony_ci	 * 64KB blocks; total size 2MB, same that can be
11062306a36Sopenharmony_ci	 * found attached to the spi_nor SPI controller.
11162306a36Sopenharmony_ci	 */
11262306a36Sopenharmony_ci	nvram@1e1f0000 {
11362306a36Sopenharmony_ci		compatible = "brcm,nvram";
11462306a36Sopenharmony_ci		reg = <0x1e1f0000 0x00010000>;
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ci		et0macaddr: et0macaddr {
11762306a36Sopenharmony_ci		};
11862306a36Sopenharmony_ci	};
11962306a36Sopenharmony_ci};
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci&gmac2 {
12262306a36Sopenharmony_ci	/*
12362306a36Sopenharmony_ci	 * The NVRAM curiously does not contain a MAC address
12462306a36Sopenharmony_ci	 * for et2 so since that is the only ethernet interface
12562306a36Sopenharmony_ci	 * actually in use on the platform, we use this et0 MAC
12662306a36Sopenharmony_ci	 * address for et2.
12762306a36Sopenharmony_ci	 */
12862306a36Sopenharmony_ci	nvmem-cells = <&et0macaddr>;
12962306a36Sopenharmony_ci	nvmem-cell-names = "mac-address";
13062306a36Sopenharmony_ci};
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci&spi_nor {
13362306a36Sopenharmony_ci	status = "okay";
13462306a36Sopenharmony_ci};
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci&nandcs {
13762306a36Sopenharmony_ci	/* Spansion S34ML01G2, 128MB with 128KB erase blocks */
13862306a36Sopenharmony_ci	partitions {
13962306a36Sopenharmony_ci		compatible = "fixed-partitions";
14062306a36Sopenharmony_ci		#address-cells = <1>;
14162306a36Sopenharmony_ci		#size-cells = <1>;
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci		/*
14462306a36Sopenharmony_ci		 * This is called "nflash" in the vendor kernel with
14562306a36Sopenharmony_ci		 * "upgrade" and "rootfs" (probably using OpenWrt
14662306a36Sopenharmony_ci		 * splitpart). We call it "firmware" like standard tools
14762306a36Sopenharmony_ci		 * assume. The CFE loader contains incorrect information
14862306a36Sopenharmony_ci		 * about TRX partitions, ignore this, there are no TRX
14962306a36Sopenharmony_ci		 * partitions: this device uses SEAMA.
15062306a36Sopenharmony_ci		 */
15162306a36Sopenharmony_ci		firmware@0 {
15262306a36Sopenharmony_ci			compatible = "seama";
15362306a36Sopenharmony_ci			label = "firmware";
15462306a36Sopenharmony_ci			reg = <0x00000000 0x08000000>;
15562306a36Sopenharmony_ci		};
15662306a36Sopenharmony_ci	};
15762306a36Sopenharmony_ci};
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci&usb2 {
16062306a36Sopenharmony_ci	vcc-gpios = <&chipcommon 21 GPIO_ACTIVE_HIGH>;
16162306a36Sopenharmony_ci};
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci&usb3 {
16462306a36Sopenharmony_ci	vcc-gpios = <&chipcommon 18 GPIO_ACTIVE_HIGH>;
16562306a36Sopenharmony_ci};
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci&usb3_phy {
16862306a36Sopenharmony_ci	status = "okay";
16962306a36Sopenharmony_ci};
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci&srab {
17262306a36Sopenharmony_ci	status = "okay";
17362306a36Sopenharmony_ci
17462306a36Sopenharmony_ci	ports {
17562306a36Sopenharmony_ci		port@0 {
17662306a36Sopenharmony_ci			label = "lan1";
17762306a36Sopenharmony_ci		};
17862306a36Sopenharmony_ci
17962306a36Sopenharmony_ci		port@1 {
18062306a36Sopenharmony_ci			label = "lan2";
18162306a36Sopenharmony_ci		};
18262306a36Sopenharmony_ci
18362306a36Sopenharmony_ci		port@2 {
18462306a36Sopenharmony_ci			label = "lan3";
18562306a36Sopenharmony_ci		};
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci		port@3 {
18862306a36Sopenharmony_ci			label = "lan4";
18962306a36Sopenharmony_ci		};
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci		port@4 {
19262306a36Sopenharmony_ci			label = "wan";
19362306a36Sopenharmony_ci		};
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci		port@5 {
19662306a36Sopenharmony_ci			status = "disabled";
19762306a36Sopenharmony_ci		};
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci		port@7 {
20062306a36Sopenharmony_ci			status = "disabled";
20162306a36Sopenharmony_ci		};
20262306a36Sopenharmony_ci
20362306a36Sopenharmony_ci		port@8 {
20462306a36Sopenharmony_ci			label = "cpu";
20562306a36Sopenharmony_ci			phy-mode = "rgmii";
20662306a36Sopenharmony_ci		};
20762306a36Sopenharmony_ci	};
20862306a36Sopenharmony_ci};
209