// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2013 Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
 *
 */

/dts-v1/;

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "kirkwood.dtsi"
#include "kirkwood-6192.dtsi"

/ {
	model = "LaCie LaPlug";
	compatible = "lacie,laplug", "marvell,kirkwood-88f6192", "marvell,kirkwood";

	memory {
		device_type = "memory";
		reg = <0x00000000 0x8000000>; /* 128 MB */
	};

	chosen {
		bootargs = "console=ttyS0,115200n8 earlyprintk";
		stdout-path = &uart0;
	};

	ocp@f1000000 {
		serial@12000 {
			status = "okay";
		};

		i2c@11000 {
			status = "okay";

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

		pinctrl: pin-controller@10000 {
			pmx_usb_power_enable: pmx-usb-power-enable {
				marvell,pins = "mpp14";
				marvell,function = "gpio";
			};
		};
	};

	gpio_keys {
		compatible = "gpio-keys";

		power {
			label = "Power push button";
			linux,code = <KEY_POWER>;
			gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
		};
	};

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

		red-fail {
			label = "laplug_v2:red:power";
			gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
		};
		blue-power {
			label = "laplug_v2:blue:power";
			gpios = <&gpio0 29 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "default-on";
		};
	};

	gpio_poweroff {
		compatible = "gpio-poweroff";
		gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-0 = <&pmx_usb_power_enable>;
		pinctrl-names = "default";

		usb_power_back1: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			regulator-name = "USB Power Back 1";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&gpio0 15 GPIO_ACTIVE_HIGH>;
		};

		usb_power_back2: regulator@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			regulator-name = "USB Power Back 2";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&gpio0 28 GPIO_ACTIVE_HIGH>;
		};

		usb_power_front: regulator@3 {
			compatible = "regulator-fixed";
			reg = <3>;
			regulator-name = "USB Power Front";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&gpio1 3 GPIO_ACTIVE_HIGH>;
		};
	};
};

&nand {
	/* Total size : 512MB */
	status = "okay";

	partition@0 {
		label = "u-boot";
		reg = <0x0 0x100000>; /* 1MB */
		read-only;
	};

	partition@100000 {
		label = "uImage";
		reg = <0x100000 0x1000000>; /* 16MB */
	};

	partition@1100000 {
		label = "rootfs";
		reg = <0x1100000 0x1EF00000>; /* 495MB */
	};
};

&mdio {
	status = "okay";

	ethphy0: ethernet-phy@0 {
		device_type = "ethernet-phy";
		reg = <0>;
	};
};

&eth0 {
	status = "okay";
	ethernet0-port@0 {
		phy-handle = <&ethphy0>;
	};
};

&pciec {
        status = "okay";
};

&pcie0 {
	status = "okay";
};
