// SPDX-License-Identifier: GPL-2.0+ OR MIT
//
// Device Tree Source for UniPhier LD11 Global Board
//
// Copyright (C) 2016-2017 Socionext Inc.
//   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
//           Kunihiko Hayashi <hayashi.kunihiko@socionext.com>

/dts-v1/;
#include <dt-bindings/gpio/uniphier-gpio.h>
#include "uniphier-ld11.dtsi"

/ {
	model = "UniPhier LD11 Global Board (REF_LD11_GP)";
	compatible = "socionext,uniphier-ld11-global",
		     "socionext,uniphier-ld11";

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

	aliases {
		serial0 = &serial0;
		serial1 = &serial1;
		serial2 = &serial2;
		serial3 = &serial3;
		i2c0 = &i2c0;
		i2c1 = &i2c1;
		i2c2 = &i2c2;
		i2c3 = &i2c3;
		i2c4 = &i2c4;
		i2c5 = &i2c5;
		ethernet0 = &eth;
	};

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

	dvdd_reg: reg-fixed {
		compatible = "regulator-fixed";
		regulator-name = "DVDD";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
	};

	amp_vcc_reg: reg-fixed {
		compatible = "regulator-fixed";
		regulator-name = "AMP_VCC";
		regulator-min-microvolt = <24000000>;
		regulator-max-microvolt = <24000000>;
	};

	sound {
		compatible = "audio-graph-card";
		label = "UniPhier LD11";
		widgets = "Headphone", "Headphones";
		dais = <&i2s_port2
			&i2s_port3
			&i2s_port4
			&spdif_port0
			&comp_spdif_port0>;
		hp-det-gpio = <&gpio UNIPHIER_GPIO_IRQ(0) GPIO_ACTIVE_LOW>;
	};

	spdif-out {
		compatible = "linux,spdif-dit";
		#sound-dai-cells = <0>;

		port@0 {
			spdif_tx: endpoint {
				remote-endpoint = <&spdif_hiecout1>;
			};
		};
	};

	comp-spdif-out {
		compatible = "linux,spdif-dit";
		#sound-dai-cells = <0>;

		port@0 {
			comp_spdif_tx: endpoint {
				remote-endpoint = <&comp_spdif_hiecout1>;
			};
		};
	};
};

&serial0 {
	status = "okay";
};

&serial1 {
	status = "okay";
};

&i2s_hpcmout1 {
	dai-format = "i2s";
	remote-endpoint = <&tas_speaker>;
};

&spdif_hiecout1 {
	remote-endpoint = <&spdif_tx>;
};

&comp_spdif_hiecout1 {
	remote-endpoint = <&comp_spdif_tx>;
};

&i2c0 {
	status = "okay";

	tas5707a@1d {
		compatible = "ti,tas5711";
		reg = <0x1d>;
		reset-gpios = <&gpio UNIPHIER_GPIO_PORT(23, 4) GPIO_ACTIVE_LOW>;
		pdn-gpios = <&gpio UNIPHIER_GPIO_PORT(23, 5) GPIO_ACTIVE_LOW>;
		#sound-dai-cells = <0>;
		AVDD-supply = <&dvdd_reg>;
		DVDD-supply = <&dvdd_reg>;
		PVDD_A-supply = <&amp_vcc_reg>;
		PVDD_B-supply = <&amp_vcc_reg>;
		PVDD_C-supply = <&amp_vcc_reg>;
		PVDD_D-supply = <&amp_vcc_reg>;

		port@0 {
			tas_speaker: endpoint {
				dai-format = "i2s";
				remote-endpoint = <&i2s_hpcmout1>;
			};
		};
	};

	eeprom@50 {
		compatible = "st,24c64", "atmel,24c64";
		reg = <0x50>;
		pagesize = <32>;
	};
};

&usb0 {
	status = "okay";
};

&usb1 {
	status = "okay";
};

&usb2 {
	status = "okay";
};

&eth {
	status = "okay";
	phy-handle = <&ethphy>;
};

&mdio {
	ethphy: ethernet-phy@1 {
		reg = <1>;
	};
};

&nand {
	status = "okay";

	nand@0 {
		reg = <0>;
	};
};