/*
 * Device Tree Source for Meraki MR24 (Ikarem)
 *
 * Copyright (C) 2016 Chris Blake <chrisrblake93@gmail.com>
 *
 * Based on Cisco Meraki GPL Release r23-20150601 MR24 DTS
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without
 * any warranty of any kind, whether express or implied.
 */

/dts-v1/;

#include "apm82181.dtsi"

/ {
	model = "Meraki MR24 Access Point";
	compatible = "meraki,mr24", "meraki,ikarem", "apm,bluestone";

	aliases {
		serial0 = &UART1;
		led-boot = &status;
		led-failsafe = &failsafe;
		led-running = &status;
		led-upgrade = &status;
	};

	chosen {
		linux,stdout-path = "/plb/opb/serial@ef600400";
	};

};


&CRYPTO {
	status = "okay";
};

&PKA {
	status = "okay";
};

&TRNG {
	status = "okay";
};

&EBC0 {
	/* Ikarem has 32MB of NAND */
	ndfc@1,0 {
		status = "okay";
		/* 32 MiB NAND Flash */
		nand {
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "u-boot";
				reg = <0x00000000 0x00170000>;
				read-only;
			};

			partition@170000 {
				label = "oops";
				reg = <0x00170000 0x00010000>;
			};

			partition@180000 {
				label = "ubi";
				reg = <0x00180000 0x01e80000>;
			};
		};
	};
};

&UART1 {
	status = "okay";
};

&GPIO0 {
	status = "okay";
};

&IIC0 {
	status = "okay";
	/* Boot ROM is at 0x52-0x53, do not touch */
	/* Unknown chip at 0x6e, not sure what it is */
};

&EMAC0 {
	status = "okay";

	phy-mode = "rgmii-id";
	phy-map = <0x2>;
	phy-address = <0x1>;
	phy-handle = <&phy>;

	mdio {
		phy: phy@1 {
			compatible = "ethernet-phy-ieee802.3-c22";
			reg = <1>;
		};
	};
};

&POB0 {
	gpio-leds {
		compatible = "gpio-leds";

		status: power-green {
			label = "mr24:green:power";
			gpios = <&GPIO0 18 GPIO_ACTIVE_LOW>;
		};

		failsafe: power-orange {
			label = "mr24:orange:power";
			gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>;
		};

		lan {
			label = "mr24:green:wan";
			gpios = <&GPIO0 17 GPIO_ACTIVE_LOW>;
		};

		ssi-0 {
			label = "mr24:green:wifi1";
			gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>;
		};

		ssi-1 {
			label = "mr24:green:wifi2";
			gpios = <&GPIO0 22 GPIO_ACTIVE_LOW>;
		};

		ssi-2 {
			label = "mr24:green:wifi3";
			gpios = <&GPIO0 21 GPIO_ACTIVE_LOW>;
		};

		ssi-3 {
			label = "mr24:green:wifi4";
			gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>;
		};
	};

	gpio_keys_polled {
		compatible = "gpio-keys-polled";
		#address-cells = <1>;
		#size-cells = <0>;
		poll-interval = <60>;	/* 3 * 20 = 60ms */
		autorepeat;

		button@1 {
			label = "Reset button";
			linux,code = <KEY_RESTART>;
			gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>;
		};
	};
};

&PCIE0 {
	status = "okay";
};

&MSI {
	status = "okay";
};
