// 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 {
	led-power {
		gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
		label = "rango:white:power";
	};

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

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

	led-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";
};
