// SPDX-License-Identifier: GPL-2.0+ OR MIT
//
// Device Tree Source for UniPhier LD20 Global Board
//
// Copyright (C) 2015-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-ld20.dtsi"

/ {
	model = "UniPhier LD20 Global Board (REF_LD20_GP)";
	compatible = "socionext,uniphier-ld20-global",
		     "socionext,uniphier-ld20";

	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 0xc0000000>;
	};

	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 = <12000000>;
		regulator-max-microvolt = <12000000>;
	};

	sound {
		compatible = "audio-graph-card";
		label = "UniPhier LD20";
		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";

	tas5707@1b {
		compatible = "ti,tas5711";
		reg = <0x1b>;
		reset-gpios = <&gpio UNIPHIER_GPIO_PORT(0, 0) GPIO_ACTIVE_LOW>;
		pdn-gpios = <&gpio UNIPHIER_GPIO_PORT(0, 1) 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>;
			};
		};
	};
};

&eth {
	status = "okay";
	phy-mode = "rmii";
	pinctrl-0 = <&pinctrl_ether_rmii>;
	phy-handle = <&ethphy>;
};

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

&usb {
	status = "okay";
};

&nand {
	status = "okay";
};