// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Device Tree file for Lenovo Iomega ix4-300d
 *
 * Copyright (C) 2014, Benoit Masson <yahoo@perenite.com>
 */

/dts-v1/;

#include <dt-bindings/input/input.h>
#include <dt-bindings/gpio/gpio.h>
#include "armada-xp-mv78230.dtsi"

/ {
	model = "Lenovo Iomega ix4-300d";
	compatible = "lenovo,ix4-300d", "marvell,armadaxp-mv78230",
		     "marvell,armadaxp", "marvell,armada-370-xp";

	chosen {
		stdout-path = "serial0:115200n8";
	};

	memory@0 {
		device_type = "memory";
		reg = <0 0x00000000 0 0x20000000>; /* 512MB */
	};

	soc {
		ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xd0000000 0x100000
			MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000
			MBUS_ID(0x09, 0x09) 0 0 0xf1100000 0x10000
			MBUS_ID(0x09, 0x05) 0 0 0xf1110000 0x10000>;

		internal-regs {
			serial@12000 {
				status = "okay";
			};

			ethernet@70000 {
				pinctrl-0 = <&ge0_rgmii_pins>;
				pinctrl-names = "default";
				status = "okay";
				phy = <&phy0>;
				phy-mode = "rgmii-id";
			};

			ethernet@74000 {
				pinctrl-0 = <&ge1_rgmii_pins>;
				pinctrl-names = "default";
				status = "okay";
				phy = <&phy1>;
				phy-mode = "rgmii-id";
			};

			usb@50000 {
				status = "okay";
			};

			usb@51000 {
				status = "okay";
			};

			i2c@11000 {
				clock-frequency = <400000>;
				status = "okay";

				adt7473@2e {
					compatible = "adi,adt7473";
					reg = <0x2e>;
				};

				eeprom@50 {
					compatible = "atmel,24c64";
					reg = <0x50>;
				};

				pcf8563@51 {
					compatible = "nxp,pcf8563";
					reg = <0x51>;
				};

			};

			nand-controller@d0000 {
				status = "okay";

				nand@0 {
					reg = <0>;
					label = "pxa3xx_nand-0";
					nand-rb = <0>;
					nand-on-flash-bbt;

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

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

						partition@e0000 {
							label = "u-boot-env";
							reg = <0x000e0000 0x00020000>;
							read-only;
						};

						partition@100000 {
							label = "u-boot-env2";
							reg = <0x00100000 0x00020000>;
							read-only;
						};

						partition@120000 {
							label = "zImage";
							reg = <0x00120000 0x00400000>;
						};

						partition@520000 {
							label = "initrd";
							reg = <0x00520000 0x00400000>;
						};

						partition@e00000 {
							label = "boot";
							reg = <0x00e00000 0x3f200000>;
						};
					};
				};
			};
		};
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-0 = <&power_button_pin &reset_button_pin
			&select_button_pin &scroll_button_pin>;
		pinctrl-names = "default";

		power-button {
			label = "Power Button";
			linux,code = <KEY_POWER>;
			gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
		};

		reset-button {
			label = "Reset Button";
			linux,code = <KEY_RESTART>;
			gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
		};

		select-button {
			label = "Select Button";
			linux,code = <BTN_SELECT>;
			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
		};

		scroll-button {
			label = "Scroll Button";
			linux,code = <KEY_SCROLLDOWN>;
			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
		};
	};

	spi-3 {
		compatible = "spi-gpio";
		status = "okay";
		gpio-sck = <&gpio0 25 GPIO_ACTIVE_LOW>;
		gpio-mosi = <&gpio1 15 GPIO_ACTIVE_LOW>; /*gpio 47*/
		cs-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
		num-chipselects = <1>;
		#address-cells = <1>;
		#size-cells = <0>;

		gpio_spi: gpio_spi@0 {
			compatible = "fairchild,74hc595";
			gpio-controller;
			#gpio-cells = <2>;
			reg = <0>;
			registers-number = <1>;
			spi-max-frequency = <100000>;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";
		pinctrl-0 = <&hdd_led_pin>;
		pinctrl-names = "default";

		hdd-led {
			label = "ix4-300d:hdd:blue";
			gpios = <&gpio0 26 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		power-led {
			label = "ix4-300d:power:white";
			gpios = <&gpio_spi 1 GPIO_ACTIVE_LOW>;
			/* init blinking while booting */
			linux,default-trigger = "timer";
			default-state = "on";
		};

		sysfail-led {
			label = "ix4-300d:sysfail:red";
			gpios = <&gpio_spi 2 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		sys-led {
			label = "ix4-300d:sys:blue";
			gpios = <&gpio_spi 3 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		hddfail-led {
			label = "ix4-300d:hddfail:red";
			gpios = <&gpio_spi 4 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

	};

	/*
	 * Warning: you need both eth1 & 0 PHY initialized (i.e having
	 * them up does the tweak) for poweroff to shutdown otherwise it
	 * reboots
	 */
	gpio-poweroff {
		compatible = "gpio-poweroff";
		pinctrl-0 = <&poweroff_pin>;
		pinctrl-names = "default";
		gpios = <&gpio0 24 GPIO_ACTIVE_HIGH>;
	};
};
&pciec {
	status = "okay";

	/* Quad port sata: Marvell 88SX7042 */
	pcie@1,0 {
		/* Port 0, Lane 0 */
		status = "okay";
	};

	/* USB 3.0 xHCI controller: NEC D720200F1 */
	pcie@5,0 {
		/* Port 1, Lane 0 */
		status = "okay";
	};
};

&mdio {
	phy0: ethernet-phy@0 { /* Marvell 88E1318 */
		reg = <0>;
	};

	phy1: ethernet-phy@1 { /* Marvell 88E1318 */
		reg = <1>;
	};
};

&pinctrl {
	poweroff_pin: poweroff-pin {
		marvell,pins = "mpp24";
		marvell,function = "gpio";
	};

	power_button_pin: power-button-pin {
		marvell,pins = "mpp44";
		marvell,function = "gpio";
	};

	reset_button_pin: reset-button-pin {
		marvell,pins = "mpp45";
		marvell,function = "gpio";
	};
	select_button_pin: select-button-pin {
		marvell,pins = "mpp41";
		marvell,function = "gpio";
	};

	scroll_button_pin: scroll-button-pin {
		marvell,pins = "mpp42";
		marvell,function = "gpio";
	};

	hdd_led_pin: hdd-led-pin {
		marvell,pins = "mpp26";
		marvell,function = "gpio";
	};
};
