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

/dts-v1/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "armada-385-linksys.dtsi"

/ {
	model = "Linksys WRT3200ACM";
	compatible = "linksys,rango", "linksys,armada385", "marvell,armada385",
		     "marvell,armada380";
};

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

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

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

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

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

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

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

&gpio_leds {
	power {
		gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
		label = "rango:white:power";
	};

	sata {
		gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
		label = "rango:white:sata";
	};

	wlan_2g {
		gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
		label = "rango:white:wlan_2g";
	};

	wlan_5g {
		gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
		label = "rango:white:wlan_5g";
	};
};

&gpio_leds_pins {
	marvell,pins = "mpp21", "mpp45", "mpp46", "mpp56";
};

&nand {
	/* AMD/Spansion S34ML02G2 256MiB, OEM Layout */
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

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

		partition@200000 {
			label = "u_env";
			reg = <0x200000 0x20000>;    /* 128KiB */
		};

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

		partition@7e0000 {
			label = "devinfo";
			reg = <0x7e0000 0x40000>;   /* 256KiB */
			read-only;
		};

		partition@820000 {
			label = "sysdiag";
			reg = <0x820000 0x1e0000>;   /* 1920KiB */
			read-only;
		};

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

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

		/* kernel2 overlaps with rootfs2 by design */
		partition@5a00000 {
			label = "kernel2";
			reg = <0x5a00000 0x5000000>; /* 80MiB */
		};

		partition@6000000 {
			label = "rootfs2";
			reg = <0x6000000 0x4a00000>; /* 74MiB */
		};

		/*
		 * 86MiB, last MiB is for the BBT, not writable
		 */
		partition@aa00000 {
			label = "syscfg";
			reg = <0xaa00000 0x5600000>;
		};

		/*
		 * 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 = <0x260000 0x5c0000>;   /* 5.75MiB */
		};
	};
};

&sdhci {
	pinctrl-names = "default";
	pinctrl-0 = <&sdhci_pins>;
	no-1-8-v;
	non-removable;
	wp-inverted;
	bus-width = <8>;
	status = "okay";
};

&usb3_1_vbus {
	gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
};

&usb3_1_vbus_pins {
	marvell,pins = "mpp44";
};
