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

	spi3 {
		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";
	};
};
