// 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.
		 */

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

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

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

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

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

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

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

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

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

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

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