// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Device Tree file for the Linksys WRT1900ACS (Shelby)
 *
 * Copyright (C) 2015 Imre Kaloz <kaloz@openwrt.org>
 */

/dts-v1/;
#include "armada-385-linksys.dtsi"

/ {
	model = "Linksys WRT1900ACS";
	compatible = "linksys,shelby", "linksys,armada385", "marvell,armada385",
		     "marvell,armada380";
};

&expander0 {
	wan_amber@0 {
		label = "shelby:amber:wan";
		reg = <0x0>;
	};

	wan_white@1 {
		label = "shelby:white:wan";
		reg = <0x1>;
	};

	wlan_2g@2 {
		label = "shelby:white:wlan_2g";
		reg = <0x2>;
	};

	wlan_5g@3 {
		label = "shelby:white:wlan_5g";
		reg = <0x3>;
	};

	usb2@5 {
		label = "shelby:white:usb2";
		reg = <0x5>;
	};

	usb3_1@6 {
		label = "shelby:white:usb3_1";
		reg = <0x6>;
	};

	usb3_2@7 {
		label = "shelby:white:usb3_2";
		reg = <0x7>;
	};

	wps_white@8 {
		label = "shelby:white:wps";
		reg = <0x8>;
	};

	wps_amber@9 {
		label = "shelby:amber:wps";
		reg = <0x9>;
	};
};

&gpio_leds {
	led-power {
		label = "shelby:white:power";
	};

	led-sata {
		label = "shelby:white:sata";
	};
};

&nand {
	/* 128MiB */
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		partition@0 {
			label = "u-boot";
			reg = <0x0000000 0x200000>;  /* 2MiB */
			read-only;
		};

		partition@100000 {
			label = "u_env";
			reg = <0x200000 0x40000>;    /* 256KiB */
		};

		partition@140000 {
			label = "s_env";
			reg = <0x240000 0x40000>;    /* 256KiB */
		};

		partition@900000 {
			label = "devinfo";
			reg = <0x900000 0x100000>;   /* 1MiB */
			read-only;
		};

		/* kernel1 overlaps with rootfs1 by design */
		partition@a00000 {
			label = "kernel1";
			reg = <0xa00000 0x2800000>;  /* 40MiB */
		};

		partition@1000000 {
			label = "rootfs1";
			reg = <0x1000000 0x2200000>;  /* 34MiB */
		};

		/* kernel2 overlaps with rootfs2 by design */
		partition@3200000 {
			label = "kernel2";
			reg = <0x3200000 0x2800000>; /* 40MiB */
		};

		partition@3800000 {
			label = "rootfs2";
			reg = <0x3800000 0x2200000>; /* 34MiB */
		};

		/*
		 * 38MiB, last MiB is for the BBT, not writable
		 */
		partition@5a00000 {
			label = "syscfg";
			reg = <0x5a00000 0x2600000>;
		};

		/*
		 * Unused area between "s_env" and "devinfo".
		 * Moved here because otherwise the renumbered
		 * partitions would break the bootloader
		 * supplied bootargs
		 */
		partition@180000 {
			label = "unused_area";
			reg = <0x280000 0x680000>;   /* 6.5MiB */
		};
	};
};
