/*
 * Marvell DB-{88F6281,88F6282}-BP Development Board Setup
 *
 * Saeed Bishara <saeed@marvell.com>
 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 *
 * This file is licensed under the terms of the GNU General Public
 * License version 2.  This program is licensed "as is" without any
 * warranty of any kind, whether express or implied.
 *
 * This file contains the definitions that are common between the 6281
 * and 6282 variants of the Marvell Kirkwood Development Board.
 */

/include/ "kirkwood.dtsi"

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

	chosen {
		bootargs = "console=ttyS0,115200n8 earlyprintk";
	};

	ocp@f1000000 {
		pinctrl@10000 {
			pmx_sdio_gpios: pmx-sdio-gpios {
				marvell,pins = "mpp37", "mpp38";
				marvell,function = "gpio";
			};
		};

		serial@12000 {
			pinctrl-0 = <&pmx_uart0>;
			pinctrl-names = "default";
			clock-frequency = <200000000>;
			status = "ok";
		};

		nand@3000000 {
			pinctrl-0 = <&pmx_nand>;
			pinctrl-names = "default";
			chip-delay = <25>;
			status = "okay";

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

			partition@100000 {
				label = "uImage";
				reg = <0x100000 0x400000>;
			};

			partition@500000 {
				label = "root";
				reg = <0x500000 0x1fb00000>;
			};
		};

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

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

		mvsdio@90000 {
			pinctrl-0 = <&pmx_sdio_gpios>;
			pinctrl-names = "default";
			wp-gpios = <&gpio1 5 0>;
			cd-gpios = <&gpio1 6 0>;
			status = "okay";
		};

		pcie-controller {
			status = "okay";

			pcie@1,0 {
				status = "okay";
			};
		};
	};
};
