Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: dts: imx: Add TDA19971 HDMI Receiver to GW551x

The GW551x has a front-panel microHDMI connector routed to a TDA19971
which is connected the the IPU CSI.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>

authored by

Tim Harvey and committed by
Shawn Guo
3117e851 96d861c2

+138
+138
arch/arm/boot/dts/imx6qdl-gw551x.dtsi
··· 46 46 */ 47 47 48 48 #include <dt-bindings/gpio/gpio.h> 49 + #include <dt-bindings/media/tda1997x.h> 50 + #include <dt-bindings/sound/fsl-imx-audmux.h> 49 51 50 52 / { 51 53 /* these are used by bootloader for disabling nodes */ ··· 100 98 regulator-name = "usb_otg_vbus"; 101 99 regulator-min-microvolt = <5000000>; 102 100 regulator-max-microvolt = <5000000>; 101 + }; 102 + 103 + sound-digital { 104 + compatible = "simple-audio-card"; 105 + simple-audio-card,name = "tda1997x-audio"; 106 + 107 + simple-audio-card,dai-link@0 { 108 + format = "i2s"; 109 + 110 + cpu { 111 + sound-dai = <&ssi2>; 112 + }; 113 + 114 + codec { 115 + bitclock-master; 116 + frame-master; 117 + sound-dai = <&hdmi_receiver>; 118 + }; 119 + }; 120 + }; 121 + }; 122 + 123 + &audmux { 124 + pinctrl-names = "default"; 125 + pinctrl-0 = <&pinctrl_audmux>; /* AUD5<->tda1997x */ 126 + status = "okay"; 127 + 128 + ssi1 { 129 + fsl,audmux-port = <0>; 130 + fsl,port-config = < 131 + (IMX_AUDMUX_V2_PTCR_TFSDIR | 132 + IMX_AUDMUX_V2_PTCR_TFSEL(4+8) | /* RXFS */ 133 + IMX_AUDMUX_V2_PTCR_TCLKDIR | 134 + IMX_AUDMUX_V2_PTCR_TCSEL(4+8) | /* RXC */ 135 + IMX_AUDMUX_V2_PTCR_SYN) 136 + IMX_AUDMUX_V2_PDCR_RXDSEL(4) 137 + >; 138 + }; 139 + 140 + aud5 { 141 + fsl,audmux-port = <4>; 142 + fsl,port-config = < 143 + IMX_AUDMUX_V2_PTCR_SYN 144 + IMX_AUDMUX_V2_PDCR_RXDSEL(0)>; 103 145 }; 104 146 }; 105 147 ··· 310 264 #gpio-cells = <2>; 311 265 }; 312 266 267 + hdmi_receiver: hdmi-receiver@48 { 268 + compatible = "nxp,tda19971"; 269 + pinctrl-names = "default"; 270 + pinctrl-0 = <&pinctrl_tda1997x>; 271 + reg = <0x48>; 272 + interrupt-parent = <&gpio1>; 273 + interrupts = <7 IRQ_TYPE_LEVEL_LOW>; 274 + DOVDD-supply = <&reg_3p3>; 275 + AVDD-supply = <&reg_1p8b>; 276 + DVDD-supply = <&reg_1p8a>; 277 + #sound-dai-cells = <0>; 278 + nxp,audout-format = "i2s"; 279 + nxp,audout-layout = <0>; 280 + nxp,audout-width = <16>; 281 + nxp,audout-mclk-fs = <128>; 282 + /* 283 + * The 8bpp YUV422 semi-planar mode outputs CbCr[11:4] 284 + * and Y[11:4] across 16bits in the same cycle 285 + * which we map to VP[15:08]<->CSI_DATA[19:12] 286 + */ 287 + nxp,vidout-portcfg = 288 + /*G_Y_11_8<->VP[15:12]<->CSI_DATA[19:16]*/ 289 + < TDA1997X_VP24_V15_12 TDA1997X_G_Y_11_8 >, 290 + /*G_Y_7_4<->VP[11:08]<->CSI_DATA[15:12]*/ 291 + < TDA1997X_VP24_V11_08 TDA1997X_G_Y_7_4 >, 292 + /*R_CR_CBCR_11_8<->VP[07:04]<->CSI_DATA[11:08]*/ 293 + < TDA1997X_VP24_V07_04 TDA1997X_R_CR_CBCR_11_8 >, 294 + /*R_CR_CBCR_7_4<->VP[03:00]<->CSI_DATA[07:04]*/ 295 + < TDA1997X_VP24_V03_00 TDA1997X_R_CR_CBCR_7_4 >; 296 + 297 + port { 298 + tda1997x_to_ipu1_csi0_mux: endpoint { 299 + remote-endpoint = <&ipu1_csi0_mux_from_parallel_sensor>; 300 + bus-width = <16>; 301 + hsync-active = <1>; 302 + vsync-active = <1>; 303 + data-active = <1>; 304 + }; 305 + }; 306 + }; 307 + }; 308 + 309 + &ipu1_csi0_from_ipu1_csi0_mux { 310 + bus-width = <16>; 311 + }; 312 + 313 + &ipu1_csi0_mux_from_parallel_sensor { 314 + remote-endpoint = <&tda1997x_to_ipu1_csi0_mux>; 315 + bus-width = <16>; 316 + }; 317 + 318 + &ipu1_csi0 { 319 + pinctrl-names = "default"; 320 + pinctrl-0 = <&pinctrl_ipu1_csi0>; 313 321 }; 314 322 315 323 &pcie { ··· 421 321 }; 422 322 423 323 &iomuxc { 324 + pinctrl_audmux: audmuxgrp { 325 + fsl,pins = < 326 + MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0 327 + MX6QDL_PAD_DISP0_DAT14__AUD5_RXC 0x130b0 328 + MX6QDL_PAD_DISP0_DAT13__AUD5_RXFS 0x130b0 329 + >; 330 + }; 331 + 424 332 pinctrl_flexcan1: flexcan1grp { 425 333 fsl,pins = < 426 334 MX6QDL_PAD_KEY_ROW2__FLEXCAN1_RX 0x1b0b1 ··· 484 376 >; 485 377 }; 486 378 379 + pinctrl_ipu1_csi0: ipu1_csi0grp { 380 + fsl,pins = < 381 + MX6QDL_PAD_CSI0_DAT4__IPU1_CSI0_DATA04 0x1b0b0 382 + MX6QDL_PAD_CSI0_DAT5__IPU1_CSI0_DATA05 0x1b0b0 383 + MX6QDL_PAD_CSI0_DAT6__IPU1_CSI0_DATA06 0x1b0b0 384 + MX6QDL_PAD_CSI0_DAT7__IPU1_CSI0_DATA07 0x1b0b0 385 + MX6QDL_PAD_CSI0_DAT8__IPU1_CSI0_DATA08 0x1b0b0 386 + MX6QDL_PAD_CSI0_DAT9__IPU1_CSI0_DATA09 0x1b0b0 387 + MX6QDL_PAD_CSI0_DAT10__IPU1_CSI0_DATA10 0x1b0b0 388 + MX6QDL_PAD_CSI0_DAT11__IPU1_CSI0_DATA11 0x1b0b0 389 + MX6QDL_PAD_CSI0_DAT12__IPU1_CSI0_DATA12 0x1b0b0 390 + MX6QDL_PAD_CSI0_DAT13__IPU1_CSI0_DATA13 0x1b0b0 391 + MX6QDL_PAD_CSI0_DAT14__IPU1_CSI0_DATA14 0x1b0b0 392 + MX6QDL_PAD_CSI0_DAT15__IPU1_CSI0_DATA15 0x1b0b0 393 + MX6QDL_PAD_CSI0_DAT16__IPU1_CSI0_DATA16 0x1b0b0 394 + MX6QDL_PAD_CSI0_DAT17__IPU1_CSI0_DATA17 0x1b0b0 395 + MX6QDL_PAD_CSI0_DAT18__IPU1_CSI0_DATA18 0x1b0b0 396 + MX6QDL_PAD_CSI0_DAT19__IPU1_CSI0_DATA19 0x1b0b0 397 + MX6QDL_PAD_CSI0_MCLK__IPU1_CSI0_HSYNC 0x1b0b0 398 + MX6QDL_PAD_CSI0_PIXCLK__IPU1_CSI0_PIXCLK 0x1b0b0 399 + MX6QDL_PAD_CSI0_VSYNC__IPU1_CSI0_VSYNC 0x1b0b0 400 + >; 401 + }; 402 + 487 403 pinctrl_pcie: pciegrp { 488 404 fsl,pins = < 489 405 MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x1b0b0 /* PCIE RST */ ··· 529 397 pinctrl_pwm3: pwm3grp { 530 398 fsl,pins = < 531 399 MX6QDL_PAD_SD1_DAT1__PWM3_OUT 0x1b0b1 400 + >; 401 + }; 402 + 403 + pinctrl_tda1997x: tda1997xgrp { 404 + fsl,pins = < 405 + MX6QDL_PAD_GPIO_7__GPIO1_IO07 0x1b0b0 532 406 >; 533 407 }; 534 408