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

ARM: dts: imx53: Add IPU DI ports and endpoints, move imx-drm node to dtsi

This patch connects IPU and display encoder (VGA, LVDS)
device tree nodes, as well as parallel displays on the DISP0
and DISP1 outputs, using the OF graph bindings described in
Documentation/devicetree/bindings/media/video-interfaces.txt

The IPU ports correspond to the two display interfaces. The
order of endpoints in the ports is arbitrary.

Since the imx-drm node now only needs to contain links to the
display interfaces, it can be moved to the SoC dtsi level. At
the board level, only connections between the display interface
ports and encoders or panels have to be added.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

authored by

Philipp Zabel and committed by
Russell King
e05c8c9a de10e04e

+89 -24
+10 -7
arch/arm/boot/dts/imx53-m53evk.dts
··· 23 23 soc { 24 24 display1: display@di1 { 25 25 compatible = "fsl,imx-parallel-display"; 26 - crtcs = <&ipu 1>; 27 26 interface-pix-fmt = "bgr666"; 28 27 pinctrl-names = "default"; 29 28 pinctrl-0 = <&pinctrl_ipu_disp2_1>; ··· 43 44 }; 44 45 }; 45 46 }; 47 + 48 + port { 49 + display1_in: endpoint { 50 + remote-endpoint = <&ipu_di1_disp1>; 51 + }; 52 + }; 46 53 }; 47 54 48 55 backlight { ··· 56 51 pwms = <&pwm1 0 3000>; 57 52 brightness-levels = <0 4 8 16 32 64 128 255>; 58 53 default-brightness-level = <6>; 59 - }; 60 - 61 - imx-drm { 62 - compatible = "fsl,imx-drm"; 63 - crtcs = <&ipu 1>; 64 - connectors = <&display1>; 65 54 }; 66 55 67 56 leds { ··· 224 225 >; 225 226 }; 226 227 }; 228 + }; 229 + 230 + &ipu_di1_disp1 { 231 + remote-endpoint = <&display1_in>; 227 232 }; 228 233 229 234 &nfc {
+9 -6
arch/arm/boot/dts/imx53-mba53.dts
··· 38 38 compatible = "fsl,imx-parallel-display"; 39 39 pinctrl-names = "default"; 40 40 pinctrl-0 = <&pinctrl_disp1_1>; 41 - crtcs = <&ipu 1>; 42 41 interface-pix-fmt = "rgb24"; 43 42 status = "disabled"; 44 - }; 45 43 46 - imx-drm { 47 - compatible = "fsl,imx-drm"; 48 - crtcs = <&ipu 1>; 49 - connectors = <&disp1>, <&tve>; 44 + port { 45 + display1_in: endpoint { 46 + remote-endpoint = <&ipu_di1_disp1>; 47 + }; 48 + }; 50 49 }; 51 50 52 51 reg_3p2v: 3p2v { ··· 144 145 >; 145 146 }; 146 147 }; 148 + }; 149 + 150 + &ipu_di1_disp1 { 151 + remote-endpoint = <&display1_in>; 147 152 }; 148 153 149 154 &cspi {
+10 -7
arch/arm/boot/dts/imx53-qsb.dts
··· 23 23 24 24 display0: display@di0 { 25 25 compatible = "fsl,imx-parallel-display"; 26 - crtcs = <&ipu 0>; 27 26 interface-pix-fmt = "rgb565"; 28 27 pinctrl-names = "default"; 29 28 pinctrl-0 = <&pinctrl_ipu_disp0_1>; ··· 43 44 vsync-active = <0>; 44 45 de-active = <1>; 45 46 pixelclk-active = <0>; 47 + }; 48 + }; 49 + 50 + port { 51 + display0_in: endpoint { 52 + remote-endpoint = <&ipu_di0_disp0>; 46 53 }; 47 54 }; 48 55 }; ··· 75 70 linux,code = <114>; /* KEY_VOLUMEDOWN */ 76 71 gpio-key,wakeup; 77 72 }; 78 - }; 79 - 80 - imx-drm { 81 - compatible = "fsl,imx-drm"; 82 - crtcs = <&ipu 0>; 83 - connectors = <&display0>; 84 73 }; 85 74 86 75 leds { ··· 129 130 pinctrl-names = "default"; 130 131 pinctrl-0 = <&pinctrl_esdhc1_1>; 131 132 status = "okay"; 133 + }; 134 + 135 + &ipu_di0_disp0 { 136 + remote-endpoint = <&display0_in>; 132 137 }; 133 138 134 139 &ssi2 {
+60 -4
arch/arm/boot/dts/imx53.dtsi
··· 45 45 }; 46 46 }; 47 47 48 + display-subsystem { 49 + compatible = "fsl,imx-display-subsystem"; 50 + ports = <&ipu_di0>, <&ipu_di1>; 51 + }; 52 + 48 53 tzic: tz-interrupt-controller@0fffc000 { 49 54 compatible = "fsl,imx53-tzic", "fsl,tzic"; 50 55 interrupt-controller; ··· 90 85 ranges; 91 86 92 87 ipu: ipu@18000000 { 93 - #crtc-cells = <1>; 88 + #address-cells = <1>; 89 + #size-cells = <0>; 94 90 compatible = "fsl,imx53-ipu"; 95 91 reg = <0x18000000 0x080000000>; 96 92 interrupts = <11 10>; 97 93 clocks = <&clks 59>, <&clks 110>, <&clks 61>; 98 94 clock-names = "bus", "di0", "di1"; 99 95 resets = <&src 2>; 96 + 97 + ipu_di0: port@2 { 98 + #address-cells = <1>; 99 + #size-cells = <0>; 100 + reg = <2>; 101 + 102 + ipu_di0_disp0: endpoint@0 { 103 + reg = <0>; 104 + }; 105 + 106 + ipu_di0_lvds0: endpoint@1 { 107 + reg = <1>; 108 + remote-endpoint = <&lvds0_in>; 109 + }; 110 + }; 111 + 112 + ipu_di1: port@3 { 113 + #address-cells = <1>; 114 + #size-cells = <0>; 115 + reg = <3>; 116 + 117 + ipu_di1_disp1: endpoint@0 { 118 + reg = <0>; 119 + }; 120 + 121 + ipu_di1_lvds1: endpoint@1 { 122 + reg = <1>; 123 + remote-endpoint = <&lvds1_in>; 124 + }; 125 + 126 + ipu_di1_tve: endpoint@2 { 127 + reg = <2>; 128 + remote-endpoint = <&tve_in>; 129 + }; 130 + }; 100 131 }; 101 132 102 133 aips@50000000 { /* AIPS1 */ ··· 879 838 880 839 lvds-channel@0 { 881 840 reg = <0>; 882 - crtcs = <&ipu 0>; 883 841 status = "disabled"; 842 + 843 + port { 844 + lvds0_in: endpoint { 845 + remote-endpoint = <&ipu_di0_lvds0>; 846 + }; 847 + }; 884 848 }; 885 849 886 850 lvds-channel@1 { 887 851 reg = <1>; 888 - crtcs = <&ipu 1>; 889 852 status = "disabled"; 853 + 854 + port { 855 + lvds1_in: endpoint { 856 + remote-endpoint = <&ipu_di0_lvds0>; 857 + }; 858 + }; 890 859 }; 891 860 }; 892 861 ··· 1154 1103 interrupts = <92>; 1155 1104 clocks = <&clks 69>, <&clks 116>; 1156 1105 clock-names = "tve", "di_sel"; 1157 - crtcs = <&ipu 1>; 1158 1106 status = "disabled"; 1107 + 1108 + port { 1109 + tve_in: endpoint { 1110 + remote-endpoint = <&ipu_di1_tve>; 1111 + }; 1112 + }; 1159 1113 }; 1160 1114 1161 1115 vpu: vpu@63ff4000 {