arm64: dts: imx8mm-beacon: Add HDMI video with sound
authorAdam Ford <aford173@gmail.com>
Thu, 15 Jun 2023 21:53:13 +0000 (16:53 -0500)
committerShawn Guo <shawnguo@kernel.org>
Tue, 18 Jul 2023 01:27:24 +0000 (09:27 +0800)
The Beacon Embedded imx8mm development kit has a DSI
to HDMI bridge chip.  The bridge supports stereo audio
and hot-plugging.

Signed-off-by: Adam Ford <aford173@gmail.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
arch/arm64/boot/dts/freescale/imx8mm-beacon-kit.dts

index 74a7b0c..66d68ce 100644 (file)
        chosen {
                stdout-path = &uart2;
        };
+
+       connector {
+               compatible = "hdmi-connector";
+               type = "a";
+
+               port {
+                       hdmi_connector_in: endpoint {
+                               remote-endpoint = <&adv7535_out>;
+                       };
+               };
+       };
+
+       reg_hdmi: regulator-hdmi-dvdd {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_reg_hdmi>;
+               regulator-name = "hdmi_pwr_en";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&gpio2 11 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+               startup-delay-us = <70000>;
+               regulator-always-on;
+       };
+
+       sound-hdmi {
+               compatible = "simple-audio-card";
+               simple-audio-card,name = "sound-hdmi";
+               simple-audio-card,format = "i2s";
+
+               simple-audio-card,cpu {
+                       sound-dai = <&sai5 0>;
+                       system-clock-direction-out;
+               };
+
+               simple-audio-card,codec {
+                       sound-dai = <&adv_bridge>;
+               };
+       };
+};
+
+&i2c2 {
+       adv_bridge: hdmi@3d {
+               compatible = "adi,adv7535";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_hdmi_bridge>;
+               reg = <0x3d>, <0x3c>, <0x3e>, <0x3f>;
+               reg-names = "main", "cec", "edid", "packet";
+               adi,dsi-lanes = <4>;
+               avdd-supply = <&reg_hdmi>;
+               a2vdd-supply = <&reg_hdmi>;
+               dvdd-supply = <&reg_hdmi>;
+               pvdd-supply = <&reg_hdmi>;
+               v1p2-supply = <&reg_hdmi>;
+               v3p3-supply = <&reg_hdmi>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
+               #sound-dai-cells = <0>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+
+                               adv7535_in: endpoint {
+                                       remote-endpoint = <&dsi_out>;
+                               };
+                       };
+
+                       port@1 {
+                               reg = <1>;
+
+                               adv7535_out: endpoint {
+                                       remote-endpoint = <&hdmi_connector_in>;
+                               };
+                       };
+               };
+       };
+};
+
+&lcdif {
+       status = "okay";
+};
+
+&mipi_dsi {
+       samsung,esc-clock-frequency = <20000000>;
+       status = "okay";
+
+       ports {
+               port@1 {
+                       reg = <1>;
+
+                       dsi_out: endpoint {
+                               remote-endpoint = <&adv7535_in>;
+                       };
+               };
+       };
+};
+
+&sai5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_sai5>;
+       assigned-clocks = <&clk IMX8MM_CLK_SAI5>;
+       assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
+       assigned-clock-rates = <24576000>;
+       #sound-dai-cells = <0>;
+       status = "okay";
+};
+
+&iomuxc {
+       pinctrl_hdmi_bridge: hdmibridgegrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9               0x19
+               >;
+       };
+
+       pinctrl_reg_hdmi: reghdmigrp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SD1_STROBE_GPIO2_IO11              0x16
+               >;
+       };
+
+       pinctrl_sai5: sai5grp {
+               fsl,pins = <
+                       MX8MM_IOMUXC_SAI5_RXD3_SAI5_TX_DATA0    0xd6
+                       MX8MM_IOMUXC_SAI5_RXD2_SAI5_TX_BCLK     0xd6
+                       MX8MM_IOMUXC_SAI5_RXD1_SAI5_TX_SYNC     0xd6
+               >;
+       };
 };