]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
arm64: dts: ti: k3-am625-phyboard-lyra-rdk: Add HDMI support
authorGarrett Giordano <ggiordano@phytec.com>
Mon, 4 Dec 2023 22:28:10 +0000 (14:28 -0800)
committerNishanth Menon <nm@ti.com>
Wed, 6 Dec 2023 15:02:35 +0000 (09:02 -0600)
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 for DSS DPI output and HDMI Interrupt.

Add DT nodes for SIL9022 HDMI transmitter (TX), and the HDMI connector
on the phyBOARD-Lyra.

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: Garrett Giordano <ggiordano@phytec.com>
Reviewed-by: Wadim Egorov <w.egorov@phytec.de>
Link: https://lore.kernel.org/r/20231204222811.2344460-2-ggiordano@phytec.com
Signed-off-by: Nishanth Menon <nm@ti.com>
arch/arm64/boot/dts/ti/k3-am625-phyboard-lyra-rdk.dts

index 171354b13e3383cffba153d90e8ebc7daf005ad5..81319d68b624686d692968df8d56a07fbd38f9ba 100644 (file)
                standby-gpios = <&gpio_exp 1 GPIO_ACTIVE_HIGH>;
        };
 
+       hdmi0: connector-hdmi {
+               compatible = "hdmi-connector";
+               label = "hdmi";
+               type = "a";
+
+               port {
+                       hdmi_connector_in: endpoint {
+                               remote-endpoint = <&sii9022_out>;
+                       };
+               };
+       };
+
        keys {
                compatible = "gpio-keys";
                autorepeat;
                >;
        };
 
+       hdmi_int_pins_default: hdmi-int-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x040, PIN_INPUT, 7) /* (N23) GPMC0_AD1.GPIO0_16 */
+               >;
+       };
+
+       main_dss0_pins_default: main-dss0-default-pins {
+               pinctrl-single,pins = <
+                       AM62X_IOPAD(0x0b8, PIN_OUTPUT, 0) /* (U22) VOUT0_DATA0 */
+                       AM62X_IOPAD(0x0bc, PIN_OUTPUT, 0) /* (V24) VOUT0_DATA1 */
+                       AM62X_IOPAD(0x0e0, PIN_OUTPUT, 0) /* (V20) VOUT0_DATA10 */
+                       AM62X_IOPAD(0x0e4, PIN_OUTPUT, 0) /* (AA23) VOUT0_DATA11 */
+                       AM62X_IOPAD(0x0e8, PIN_OUTPUT, 0) /* (AB25) VOUT0_DATA12 */
+                       AM62X_IOPAD(0x0ec, PIN_OUTPUT, 0) /* (AA24) VOUT0_DATA13 */
+                       AM62X_IOPAD(0x0f0, PIN_OUTPUT, 0) /* (Y22) VOUT0_DATA14 */
+                       AM62X_IOPAD(0x0f4, PIN_OUTPUT, 0) /* (AA21) VOUT0_DATA15 */
+                       AM62X_IOPAD(0x0c0, PIN_OUTPUT, 0) /* (W25) VOUT0_DATA2 */
+                       AM62X_IOPAD(0x0c4, PIN_OUTPUT, 0) /* (W24) VOUT0_DATA3 */
+                       AM62X_IOPAD(0x0c8, PIN_OUTPUT, 0) /* (Y25) VOUT0_DATA4 */
+                       AM62X_IOPAD(0x0cc, PIN_OUTPUT, 0) /* (Y24) VOUT0_DATA5 */
+                       AM62X_IOPAD(0x0d0, PIN_OUTPUT, 0) /* (Y23) VOUT0_DATA6 */
+                       AM62X_IOPAD(0x0d4, PIN_OUTPUT, 0) /* (AA25) VOUT0_DATA7 */
+                       AM62X_IOPAD(0x0d8, PIN_OUTPUT, 0) /* (V21) VOUT0_DATA8 */
+                       AM62X_IOPAD(0x0dc, PIN_OUTPUT, 0) /* (W21) VOUT0_DATA9 */
+                       AM62X_IOPAD(0x0fc, PIN_OUTPUT, 0) /* (Y20) VOUT0_DE */
+                       AM62X_IOPAD(0x0f8, PIN_OUTPUT, 0) /* (AB24) VOUT0_HSYNC */
+                       AM62X_IOPAD(0x104, PIN_OUTPUT, 0) /* (AC24) VOUT0_PCLK */
+                       AM62X_IOPAD(0x100, PIN_OUTPUT, 0) /* (AC25) VOUT0_VSYNC */
+               >;
+       };
+
        main_i2c1_pins_default: main-i2c1-default-pins {
                pinctrl-single,pins = <
                        AM62X_IOPAD(0x1e8, PIN_INPUT_PULLUP, 0) /* (B17) I2C1_SCL */
        };
 };
 
+&dss {
+       pinctrl-names = "default";
+       pinctrl-0 = <&main_dss0_pins_default>;
+       status = "okay";
+};
+
+&dss_ports {
+       #address-cells = <1>;
+       #size-cells = <0>;
+
+       /* VP2: DPI/HDMI Output */
+       port@1 {
+               reg = <1>;
+
+               dpi1_out: endpoint {
+                       remote-endpoint = <&sii9022_in>;
+               };
+       };
+};
+
 &main_i2c1 {
        pinctrl-names = "default";
        pinctrl-0 = <&main_i2c1_pins_default>;
                                  "GPIO6_ETH1_USER_RESET", "GPIO7_AUDIO_USER_RESET";
        };
 
+       sii9022: bridge-hdmi@39 {
+               compatible = "sil,sii9022";
+               reg = <0x39>;
+
+               interrupt-parent = <&main_gpio0>;
+               interrupts = <16 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hdmi_int_pins_default>;
+
+               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>;
+                               };
+                       };
+               };
+       };
+
        eeprom@51 {
                compatible = "atmel,24c02";
                pagesize = <16>;