Commit 1f7226a5 authored by Nishanth Menon's avatar Nishanth Menon
Browse files

arm64: dts: ti: k3-am625-beagleplay: Add HDMI support



The DSS outputs DPI signals via its second video port (VP2). The DPI
output from DSS is 24 bits (RGB888) and is forwarded to an HDMI
transmitter (ITE-IT66121) on the BeaglePlay platform. For audio output,
BeaglePlay uses mcasp1.

Add pinmux info for DSS DPI signals.

Further, add support for HDMI audio and video output.

Signed-off-by: default avatarAradhya Bhatia <a-bhatia1@ti.com>
Link: https://lore.kernel.org/r/20230809084559.17322-6-a-bhatia1@ti.com


Signed-off-by: default avatarNishanth Menon <nm@ti.com>
parent b50ccab9
Loading
Loading
Loading
Loading
+150 −0
Original line number Diff line number Diff line
@@ -192,6 +192,34 @@

	};

	hdmi0: connector-hdmi {
		compatible = "hdmi-connector";
		label = "hdmi";
		type = "a";
		port {
			hdmi_connector_in: endpoint {
				remote-endpoint = <&it66121_out>;
			};
		};
	};

	sound {
		compatible = "simple-audio-card";
		simple-audio-card,name = "it66121 HDMI";
		simple-audio-card,format = "i2s";
		simple-audio-card,bitclock-master = <&hdmi_dailink_master>;
		simple-audio-card,frame-master = <&hdmi_dailink_master>;

		hdmi_dailink_master: simple-audio-card,cpu {
			sound-dai = <&mcasp1>;
			system-clock-direction-out;
		};

		simple-audio-card,codec {
			sound-dai = <&it66121>;
		};
	};

	/* Workaround for errata i2329 - just use mdio bitbang */
	mdio0: mdio {
		compatible = "virtual,mdio-gpio";
@@ -422,6 +450,57 @@
			AM62X_IOPAD(0x01f4, PIN_INPUT_PULLUP, 0) /* (D16) EXTINTn */
		>;
	};

	hdmi_gpio_pins_default: hdmi-gpio-default-pins {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x0094, PIN_INPUT_PULLUP | PIN_DEBOUNCE_CONF6, 7) /* (N20) GPMC0_BE1n.GPIO0_36 */
			AM62X_IOPAD(0x0054, PIN_OUTPUT_PULLUP, 7) /* (P21) GPMC0_AD6.GPIO0_21 */
		>;
	};

	mcasp_hdmi_pins_default: mcasp-hdmi-default-pins {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x0090, PIN_INPUT, 2) /* (M24) GPMC0_BE0n_CLE.MCASP1_ACLKX */
			AM62X_IOPAD(0x0098, PIN_INPUT, 2) /* (U23) GPMC0_WAIT0.MCASP1_AFSX */
			AM62X_IOPAD(0x008c, PIN_OUTPUT, 2) /* (L25) GPMC0_WEn.MCASP1_AXR0 */
			AM62X_IOPAD(0x0088, PIN_INPUT, 2) /* (L24) GPMC0_OEn_REn.MCASP1_AXR1 */
			AM62X_IOPAD(0x0084, PIN_INPUT, 2) /* (L23) GPMC0_ADVn_ALE.MCASP1_AXR2 */
			AM62X_IOPAD(0x007c, PIN_INPUT, 2) /* (P25) GPMC0_CLK.MCASP1_AXR3 */
		>;
	};

	dss0_pins_default: dss0-default-pins {
		pinctrl-single,pins = <
			AM62X_IOPAD(0x0100, PIN_OUTPUT, 0) /* (AC25) VOUT0_VSYNC */
			AM62X_IOPAD(0x00f8, PIN_OUTPUT, 0) /* (AB24) VOUT0_HSYNC */
			AM62X_IOPAD(0x0104, PIN_OUTPUT, 0) /* (AC24) VOUT0_PCLK */
			AM62X_IOPAD(0x00fc, PIN_OUTPUT, 0) /* (Y20) VOUT0_DE */
			AM62X_IOPAD(0x00b8, PIN_OUTPUT, 0) /* (U22) VOUT0_DATA0 */
			AM62X_IOPAD(0x00bc, PIN_OUTPUT, 0) /* (V24) VOUT0_DATA1 */
			AM62X_IOPAD(0x00c0, PIN_OUTPUT, 0) /* (W25) VOUT0_DATA2 */
			AM62X_IOPAD(0x00c4, PIN_OUTPUT, 0) /* (W24) VOUT0_DATA3 */
			AM62X_IOPAD(0x00c8, PIN_OUTPUT, 0) /* (Y25) VOUT0_DATA4 */
			AM62X_IOPAD(0x00cc, PIN_OUTPUT, 0) /* (Y24) VOUT0_DATA5 */
			AM62X_IOPAD(0x00d0, PIN_OUTPUT, 0) /* (Y23) VOUT0_DATA6 */
			AM62X_IOPAD(0x00d4, PIN_OUTPUT, 0) /* (AA25) VOUT0_DATA7 */
			AM62X_IOPAD(0x00d8, PIN_OUTPUT, 0) /* (V21) VOUT0_DATA8 */
			AM62X_IOPAD(0x00dc, PIN_OUTPUT, 0) /* (W21) VOUT0_DATA9 */
			AM62X_IOPAD(0x00e0, PIN_OUTPUT, 0) /* (V20) VOUT0_DATA10 */
			AM62X_IOPAD(0x00e4, PIN_OUTPUT, 0) /* (AA23) VOUT0_DATA11 */
			AM62X_IOPAD(0x00e8, PIN_OUTPUT, 0) /* (AB25) VOUT0_DATA12 */
			AM62X_IOPAD(0x00ec, PIN_OUTPUT, 0) /* (AA24) VOUT0_DATA13 */
			AM62X_IOPAD(0x00f0, PIN_OUTPUT, 0) /* (Y22) VOUT0_DATA14 */
			AM62X_IOPAD(0x00f4, PIN_OUTPUT, 0) /* (AA21) VOUT0_DATA15 */
			AM62X_IOPAD(0x005c, PIN_OUTPUT, 1) /* (R24) GPMC0_AD8.VOUT0_DATA16 */
			AM62X_IOPAD(0x0060, PIN_OUTPUT, 1) /* (R25) GPMC0_AD9.VOUT0_DATA17 */
			AM62X_IOPAD(0x0064, PIN_OUTPUT, 1) /* (T25) GPMC0_AD10.VOUT0_DATA18 */
			AM62X_IOPAD(0x0068, PIN_OUTPUT, 1) /* (R21) GPMC0_AD11.VOUT0_DATA19 */
			AM62X_IOPAD(0x006c, PIN_OUTPUT, 1) /* (T22) GPMC0_AD12.VOUT0_DATA20 */
			AM62X_IOPAD(0x0070, PIN_OUTPUT, 1) /* (T24) GPMC0_AD13.VOUT0_DATA21 */
			AM62X_IOPAD(0x0074, PIN_OUTPUT, 1) /* (U25) GPMC0_AD14.VOUT0_DATA22 */
			AM62X_IOPAD(0x0078, PIN_OUTPUT, 1) /* (U24) GPMC0_AD15.VOUT0_DATA23 */
		>;
	};
};

&mcu_pmx0 {
@@ -670,6 +749,42 @@
	pinctrl-0 = <&i2c2_1v8_pins_default>;
	clock-frequency = <100000>;
	status = "okay";

	it66121: bridge-hdmi@4c {
		compatible = "ite,it66121";
		reg = <0x4c>;
		pinctrl-names = "default";
		pinctrl-0 = <&hdmi_gpio_pins_default>;
		vcn33-supply = <&vdd_3v3>;
		vcn18-supply = <&buck2_reg>;
		vrf12-supply = <&buck3_reg>;
		reset-gpios = <&main_gpio0 21 GPIO_ACTIVE_LOW>;
		interrupt-parent = <&main_gpio0>;
		interrupts = <36 IRQ_TYPE_EDGE_FALLING>;
		#sound-dai-cells = <0>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			port@0 {
				reg = <0>;

				it66121_in: endpoint {
					bus-width = <24>;
					remote-endpoint = <&dpi1_out>;
				};
			};

			port@1 {
				reg = <1>;

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

&main_i2c3 {
@@ -756,3 +871,38 @@
	pinctrl-0 = <&wifi_debug_uart_pins_default>;
	status = "okay";
};

&dss {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&dss0_pins_default>;
};

&dss_ports {
	/* VP2: DPI Output */
	port@1 {
		reg = <1>;

		dpi1_out: endpoint {
			remote-endpoint = <&it66121_in>;
		};
	};
};

&mcasp1 {
	status = "okay";
	#sound-dai-cells = <0>;
	pinctrl-names = "default";
	pinctrl-0 = <&mcasp_hdmi_pins_default>;
	auxclk-fs-ratio = <2177>;
	op-mode = <0>;          /* MCASP_IIS_MODE */
	tdm-slots = <2>;
	serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
	       1 0 0 0
	       0 0 0 0
	       0 0 0 0
	       0 0 0 0
	>;
	tx-num-evt = <32>;
	rx-num-evt = <32>;
};