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

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

/ {
	model = "Linksys WRT1900ACv2";
	compatible = "linksys,cobra", "linksys,armada385", "marvell,armada385",
		     "marvell,armada380";
};

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

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

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

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

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

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

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

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

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

&gpio_leds {
	power {
		label = "cobra:white:power";
	};

	sata {
		label = "cobra: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 */
		};
	};
};
