// SPDX-License-Identifier: GPL-2.0
/*
 * Device Tree file for OpenBlocks A7 board
 *
 * Copyright (C) 2013 Free Electrons
 *
 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 *
 */

/dts-v1/;

#include "kirkwood.dtsi"
#include "kirkwood-6282.dtsi"

/ {
	model = "Plat'Home OpenBlocksA7";
	compatible = "plathome,openblocks-a7", "marvell,kirkwood-88f6283", "marvell,kirkwood";

	memory {
		device_type = "memory";
		reg = <0x00000000 0x40000000>; /* 1 GB */
	};

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

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

		serial@12100 {
			status = "okay";
		};

		sata@80000 {
			nr-ports = <1>;
			status = "okay";
		};

		i2c@11100 {
			status = "okay";

			s24c02: s24c02@50 {
				compatible = "atmel,24c02";
				reg = <0x50>;
			};
		};

		pinctrl: pin-controller@10000 {
			pinctrl-0 = <&pmx_dip_switches &pmx_gpio_header
				     &pmx_gpio_header_gpo>;
			pinctrl-names = "default";

			pmx_uart0: pmx-uart0 {
				marvell,pins = "mpp10", "mpp11", "mpp15",
					"mpp16";
				marvell,function = "uart0";
			};

			pmx_uart1: pmx-uart1 {
				marvell,pins = "mpp13", "mpp14", "mpp8",
					"mpp9";
				marvell,function = "uart1";
			};

			pmx_sysrst: pmx-sysrst {
				marvell,pins = "mpp6";
				marvell,function = "sysrst";
			};

			pmx_dip_switches: pmx-dip-switches {
				marvell,pins = "mpp44", "mpp45", "mpp46", "mpp47";
				marvell,function = "gpio";
			};

			/*
			 * Accessible on connector J202. The MPP
			 * listed below are pin 1-7, pin 8 is unused,
			 * pin 9 is external reset input and pin 10 is
			 * ground.
			 */
			pmx_gpio_header: pmx-gpio-header {
				marvell,pins = "mpp17", "mpp29", "mpp28",
					       "mpp35", "mpp34", "mpp40";
				marvell,function = "gpio";
			};

			pmx_gpio_header_gpo: pxm-gpio-header-gpo {
				marvell,pins = "mpp7";
				marvell,function = "gpo";
			};

			pmx_gpio_init: pmx-init {
				marvell,pins = "mpp38";
				marvell,function = "gpio";
			};

			pmx_usb_oc: pmx-usb-oc {
				marvell,pins = "mpp39";
				marvell,function = "gpio";
			};

			pmx_leds: pmx-leds {
				marvell,pins = "mpp41", "mpp42", "mpp43";
				marvell,function = "gpio";
			};
		};
	};

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

		led-red {
			label = "obsa7:red:stat";
			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
		};

		led-green {
			label = "obsa7:green:stat";
			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
		};

		led-yellow {
			label = "obsa7:yellow:stat";
			gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
		};
        };

	gpio_keys {
		compatible = "gpio-keys";
		pinctrl-0 = <&pmx_gpio_init>;
		pinctrl-names = "default";

		button {
			label = "Init Button";
			linux,code = <KEY_POWER>;
			gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
		};
	};
};

&nand {
	chip-delay = <25>;
	status = "okay";

	partition@0 {
		label = "uboot";
		reg = <0x0 0x1c0000>;
	};

	partition@1c0000 {
		label = "env";
		reg = <0x1c0000 0x2c0000>;
	};

	partition@480000 {
		label = "test";
		reg = <0x480000 0x160000>;
	};

	partition@5e0000 {
		label = "conf";
		reg = <0x5e0000 0x540000>;
	};

	partition@b20000 {
		label = "linux";
		reg = <0xb20000 0x3d40000>;
	};

	partition@4860000 {
		label = "user";
		reg = <0x4860000 0xb7a0000>;
	};
};

&mdio {
	status = "okay";

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

	ethphy1: ethernet-phy@1 {
		reg = <1>;
	};
};

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

&eth1 {
	status = "okay";
	ethernet1-port@0 {
		phy-handle = <&ethphy1>;
	};
};
