// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2019 Stefan Roese <sr@denx.de>
 */

/dts-v1/;

/include/ "mt7628a.dtsi"

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

/ {
	compatible = "gardena,smart-gateway-mt7688", "ralink,mt7688a-soc",
		     "ralink,mt7628a-soc";
	model = "GARDENA smart Gateway (MT7688)";

	memory@0 {
		device_type = "memory";
		reg = <0x0 0x8000000>;
	};

	gpio-keys {
		compatible = "gpio-keys";

		pinctrl-names = "default";
		pinctrl-0 = <&pinmux_gpio_gpio>;	/* GPIO11 */

		button {
			label = "USER_BTN1";
			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
			linux,code =<KEY_PROG1> ;
		};
	};

	leds {
		compatible = "gpio-leds";

		pinctrl-names = "default";
		pinctrl-0 = <&pinmux_pwm0_gpio>,	/* GPIO18 */
			    <&pinmux_pwm1_gpio>,	/* GPIO19 */
			    <&pinmux_sdmode_gpio>,	/* GPIO22..29 */
			    <&pinmux_p0led_an_gpio>;	/* GPIO43 */
		/*
		 * <&pinmux_i2s_gpio> (covers GPIO0..3) is needed here as
		 * well for GPIO3. But this is already claimed for uart1
		 * (see below). So we can't include it in this LED node.
		 */

		power_blue {
			label = "smartgw:power:blue";
			gpios = <&gpio 18 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		power_green {
			label = "smartgw:power:green";
			gpios = <&gpio 19 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		power_red {
			label = "smartgw:power:red";
			gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		radio_blue {
			label = "smartgw:radio:blue";
			gpios = <&gpio 23 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		radio_green {
			label = "smartgw:radio:green";
			gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		radio_red {
			label = "smartgw:radio:red";
			gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		internet_blue {
			label = "smartgw:internet:blue";
			gpios = <&gpio 26 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		internet_green {
			label = "smartgw:internet:green";
			gpios = <&gpio 27 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		internet_red {
			label = "smartgw:internet:red";
			gpios = <&gpio 28 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		ethernet_link {
			label = "smartgw:eth:link";
			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "netdev";
		};

		ethernet_activity {
			label = "smartgw:eth:act";
			gpios = <&gpio 43 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "netdev";
		};
	};

	aliases {
		serial0 = &uart0;
	};
};

&i2c {
	status = "okay";
};

&spi {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&pinmux_spi_spi>, <&pinmux_spi_cs1_cs>;

	flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		spi-max-frequency = <40000000>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "uboot";
				reg = <0x0 0xa0000>;
				read-only;
			};

			partition@a0000 {
				label = "uboot_env0";
				reg = <0xa0000 0x10000>;
			};

			partition@b0000 {
				label = "uboot_env1";
				reg = <0xb0000 0x10000>;
			};

			factory: partition@c0000 {
				label = "factory";
				reg = <0xc0000 0x10000>;
				read-only;
			};
		};
	};

	nand_flash@1 {
		compatible = "spi-nand";
		linux,mtd-name = "gd5f";
		reg = <1>;
		spi-max-frequency = <40000000>;
	};
};

&uart1 {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&pinmux_i2s_gpio>;		/* GPIO0..3 */

	fifo-size = <8>;
	tx-threshold = <8>;

	rts-gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
	cts-gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
};

&uart2 {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&pinmux_p2led_an_gpio>,	/* GPIO41 */
		    <&pinmux_p3led_an_gpio>;	/* GPIO40 */

	rts-gpios = <&gpio 40 GPIO_ACTIVE_LOW>;
	cts-gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
};

&watchdog {
	status = "okay";
};

&wmac {
	status = "okay";
	mediatek,mtd-eeprom = <&factory 0x0000>;
};
