// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Copyright (c) 2016 Endless Computers, Inc.
 * Author: Carlo Caione <carlo@endlessm.com>
 */

/dts-v1/;

#include "meson-gxl-s905x-p212.dtsi"
#include <dt-bindings/sound/meson-aiu.h>

/ {
	compatible = "amlogic,p212", "amlogic,s905x", "amlogic,meson-gxl";
	model = "Amlogic Meson GXL (S905X) P212 Development Board";

	dio2133: analog-amplifier {
		compatible = "simple-audio-amplifier";
		sound-name-prefix = "AU2";
		VCC-supply = <&hdmi_5v>;
		enable-gpios = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
	};

	cvbs-connector {
		compatible = "composite-video-connector";

		port {
			cvbs_connector_in: endpoint {
				remote-endpoint = <&cvbs_vdac_out>;
			};
		};
	};

	hdmi-connector {
		compatible = "hdmi-connector";
		type = "a";

		port {
			hdmi_connector_in: endpoint {
				remote-endpoint = <&hdmi_tx_tmds_out>;
			};
		};
	};

	sound {
		compatible = "amlogic,gx-sound-card";
		model = "S905X-P212";
		audio-aux-devs = <&dio2133>;
		audio-widgets = "Line", "Lineout";
		audio-routing = "AU2 INL", "ACODEC LOLN",
				"AU2 INR", "ACODEC LORN",
				"Lineout", "AU2 OUTL",
				"Lineout", "AU2 OUTR";
		assigned-clocks = <&clkc CLKID_MPLL0>,
				  <&clkc CLKID_MPLL1>,
				  <&clkc CLKID_MPLL2>;
		assigned-clock-parents = <0>, <0>, <0>;
		assigned-clock-rates = <294912000>,
				       <270950400>,
				       <393216000>;
		dai-link-0 {
			sound-dai = <&aiu AIU_CPU CPU_I2S_FIFO>;
		};

		dai-link-1 {
			sound-dai = <&aiu AIU_CPU CPU_I2S_ENCODER>;
			dai-format = "i2s";
			mclk-fs = <256>;

			codec-0 {
				sound-dai = <&aiu AIU_HDMI CTRL_I2S>;
			};

			codec-1 {
				sound-dai = <&aiu AIU_ACODEC CTRL_I2S>;
			};
		};

		dai-link-2 {
			sound-dai = <&aiu AIU_HDMI CTRL_OUT>;

			codec-0 {
				sound-dai = <&hdmi_tx>;
			};
		};

		dai-link-3 {
			sound-dai = <&aiu AIU_ACODEC CTRL_OUT>;

			codec-0 {
				sound-dai = <&acodec>;
			};
		};
	};
};

&acodec {
	AVDD-supply = <&vddio_ao18>;
	status = "okay";
};

&aiu {
	status = "okay";
};

&cec_AO {
	status = "okay";
	pinctrl-0 = <&ao_cec_pins>;
	pinctrl-names = "default";
	hdmi-phandle = <&hdmi_tx>;
};

&cvbs_vdac_port {
	cvbs_vdac_out: endpoint {
		remote-endpoint = <&cvbs_connector_in>;
	};
};

&hdmi_tx {
	status = "okay";
	pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
	pinctrl-names = "default";
	hdmi-supply = <&hdmi_5v>;
};

&hdmi_tx_tmds_port {
	hdmi_tx_tmds_out: endpoint {
		remote-endpoint = <&hdmi_connector_in>;
	};
};

/* This UART is brought out to the DB9 connector */
&uart_AO {
	status = "okay";
};