mbox series

[v4,0/6] arm64: ti: k3-am62: Add display support

Message ID 20230807153307.22174-1-a-bhatia1@ti.com
Headers show
Series arm64: ti: k3-am62: Add display support | expand

Message

Aradhya Bhatia Aug. 7, 2023, 3:33 p.m. UTC
Hi all,

The patch series adds DT nodes for Display SubSystem (DSS) and other
peripherals required to enable the HDMI audio and video on the AM625 SK,
AM62-LP SK, as well as the AM625 based Beagle-Play platforms. An HDMI
monitor can be connected to the boards for the audio/video outputs.

The series adding the compatible and basic driver support[0] is in the
drm-misc-next and linux-next queues and is expected to be in the
mainline by v6.6-rc1. Patch 5/6 also requires Nishanth Menon's patch[1]
that introduces debounce select mux macros. This patch too is not in
v6.5-rc1 but has been picked up in ti-next[2] and hence, is present in
linux-next.

Patches 4 and 5 have been picked up from TI's vendor tree[3] based off
linux-kernel v6.1.

Regards
Aradhya

Change Log:
V3 -> V4:
  - Added "Fixes" tag for patch 1/6.
  - Rebased to linux-next.
  - Enabled display at board level and disabled at SoC level.
  - Dropped OLDI pinmux configuration as OLDI output comes directly from
    the SoC and muxing is not required.
  - Squashed DSS pinmux patches into their platform specific HDMI
    support patches, because it did not make sense to have only one set
    of pinmux config separated in a patch.

V2 -> V3:
  - Updated the compatible from "ti,am65x-dss" to "ti,am625-dss".
  - Peripheral nodes like HDMI TX, HDMI connector are now added to
    k3-am62x-sk-common.dtsi instead of k3-am625-sk.dts, in order to
    support AM62-LP SK-EVM as well.
  - Dropped the HDMI master clock node as it is not connected on the
    EVM, and should not have been added in the first place.
  - Re-worded and Re-ordered commits.
  - Dropped Rahul Ravikumar's R-bs because of the changes.
  - Added AM625 based Beagle-Play for HDMI support.
  - Added HDMI audio support as well.

V1 -> V2:
 - Removed repetitive data in dss_ports

V3: https://lore.kernel.org/all/20230728173438.12995-1-a-bhatia1@ti.com/
V2: https://lore.kernel.org/all/20220505134303.23208-1-a-bhatia1@ti.com/
V1: https://lore.kernel.org/all/20220427090850.32280-1-a-bhatia1@ti.com/

[0]: https://lore.kernel.org/all/20230616150900.6617-1-a-bhatia1@ti.com/
[1]: https://lore.kernel.org/all/20230619131620.3286650-1-nm@ti.com/
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git/commit/?id=0bec3d7ecc7493b0e530f6f34539841ef6779006
[3]: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/log/?h=ti-linux-6.1.y-cicd

Aradhya Bhatia (4):
  arm64: dts: ti: k3-am62x-sk-common: Update main-i2c1 frequency
  arm64: dts: ti: k3-am62-main: Add node for DSS
  arm64: dts: ti: k3-am62x-sk-common: Add HDMI support
  arm64: defconfig: Enable ITE_IT66121 HDMI transmitter

Jai Luthra (1):
  arm64: dts: ti: am62x-sk: Add overlay for HDMI audio

Nishanth Menon (1):
  arm64: dts: ti: k3-am625-beagleplay: Add HDMI support

 arch/arm64/boot/dts/ti/Makefile               |   3 +
 arch/arm64/boot/dts/ti/k3-am62-main.dtsi      |  25 +++
 .../arm64/boot/dts/ti/k3-am625-beagleplay.dts | 158 ++++++++++++++++++
 .../arm64/boot/dts/ti/k3-am62x-sk-common.dtsi |  95 ++++++++++-
 .../boot/dts/ti/k3-am62x-sk-hdmi-audio.dtso   |  40 +++++
 arch/arm64/configs/defconfig                  |   1 +
 6 files changed, 321 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm64/boot/dts/ti/k3-am62x-sk-hdmi-audio.dtso


base-commit: f7dc24b3413851109c4047b22997bd0d95ed52a2

Comments

Jayesh Choudhary Aug. 8, 2023, 6:30 a.m. UTC | #1
On 07/08/23 21:03, Aradhya Bhatia wrote:
> 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 (SIL9022) on the board.
> 
> Add pinmux info for DSS DPI output.
> 
> Add DT nodes for SIL9022 HDMI transmitter (TX), and the HDMI connector
> on the AM625 SK and AM62-LP SK platforms.
> 
> Additionally, connect the output of DSS (VP2) with input of the HDMI TX,
> and the output of HDMI TX to the input of the HDMI connector.
> 
> Signed-off-by: Aradhya Bhatia <a-bhatia1@ti.com>
> ---
>   .../arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 93 +++++++++++++++++++
>   1 file changed, 93 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi
> index 540ed8a0d7fb..edbe5295373b 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am62x-sk-common.dtsi
> @@ -114,6 +114,17 @@ sound_master: simple-audio-card,codec {
>   			clocks = <&tlv320_mclk>;
>   		};
>   	};
> +
> +	hdmi0: connector-hdmi {
> +		compatible = "hdmi-connector";
> +		label = "hdmi";
> +		type = "a";
> +		port {
> +			hdmi_connector_in: endpoint {
> +				remote-endpoint = <&sii9022_out>;
> +			};
> +		};
> +	};
>   };
>   
>   &main_pmx0 {
> @@ -226,6 +237,39 @@ AM62X_IOPAD(0x08c, PIN_OUTPUT, 2) /* (L25/J17) GPMC0_WEN.MCASP1_AXR0 */
>   			AM62X_IOPAD(0x084, PIN_INPUT, 2) /* (L23/K20) GPMC0_ADVN_ALE.MCASP1_AXR2 */
>   		>;
>   	};
> +
> +	main_dss0_pins_default: main-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 */

Rest of the pinmux in the file uses padding of 3. Here you are using
padding of 4. Consistency would be good.


> +		>;
> +	};
>   };
>   
>   &mcu_pmx0 {
> @@ -313,6 +357,38 @@ tlv320aic3106: audio-codec@1b {
>   		IOVDD-supply = <&vcc_3v3_sys>;
>   		DRVDD-supply = <&vcc_3v3_sys>;
>   	};
> +
> +	sii9022: bridge-hdmi@3b {
> +		compatible = "sil,sii9022";
> +		reg = <0x3b>;
> +

Line break not needed.

> +		interrupt-parent = <&exp1>;
> +		interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
> +

Same.

> +		#sound-dai-cells = <0>;
> +		sil,i2s-data-lanes = < 0 >;
> +
> +		ports {
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			port@0 {
> +				reg = <0>;
> +
> +				sii9022_in: endpoint {
> +					remote-endpoint = <&dpi1_out>;
> +				};
> +			};
> +
> +			port@1 {
> +				reg = <1>;
> +
> +				sii9022_out: endpoint {
> +					remote-endpoint = <&hdmi_connector_in>;
> +				};
> +			};
> +		};
> +	};
>   };
>   
>   &sdhci0 {
> @@ -410,3 +486,20 @@ &mcasp1 {
>   	tx-num-evt = <32>;
>   	rx-num-evt = <32>;
>   };
> +
> +&dss {
> +	status = "okay";
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&main_dss0_pins_default>;
> +};
> +
> +&dss_ports {
> +	/* VP2: DPI Output */
> +	port@1 {
> +		reg = <1>;
> +
> +		dpi1_out: endpoint {
> +			remote-endpoint = <&sii9022_in>;
> +		};
> +	};
> +};