/*
 * Device Tree Source for UniPhier PXs3 Reference Board
 *
 * Copyright (C) 2017 Socionext Inc.
 *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
 *
 * SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 */

/dts-v1/;
#include "uniphier-pxs3.dtsi"
#include "uniphier-support-card.dtsi"

/ {
	model = "UniPhier PXs3 Reference Board";
	compatible = "socionext,uniphier-pxs3-ref", "socionext,uniphier-pxs3";

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

	aliases {
		serial0 = &serial0;
		serial1 = &serial1;
		serial2 = &serial2;
		serial3 = &serial3;
		i2c0 = &i2c0;
		i2c1 = &i2c1;
		i2c2 = &i2c2;
		i2c3 = &i2c3;
		i2c6 = &i2c6;
	};

	memory@80000000 {
		device_type = "memory";
		reg = <0 0x80000000 0 0xa0000000>;
	};
};

&ethsc {
	interrupts = <4 8>;
};

&serial0 {
	status = "okay";
};

&gpio {
	xirq4 {
		gpio-hog;
		gpios = <UNIPHIER_GPIO_IRQ(4) 0>;
		input;
	};
};

&i2c0 {
	status = "okay";
};

&i2c1 {
	status = "okay";
};

&i2c2 {
	status = "okay";
};

&i2c3 {
	status = "okay";
};

&usb0 {
	status = "okay";
};

&usb1 {
	status = "okay";
};

&nand {
	status = "okay";
};
