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

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

/ {
	model = "Linksys WRT1200AC";
	compatible = "linksys,caiman", "linksys,armada385", "marvell,armada385",
		     "marvell,armada380";
};

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

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

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

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

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

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

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

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

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

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

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