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

ARM: dts: cm-t335: add support for DVI/LCD

Add pinmux configuration for DVI/LCD.
Add DRM display driver node with timing configurations for DVI and LCD.
Add I2C GPIOs configurations for DVI and LCD enable.

Signed-off-by: Uri Mashiach <uri.mashiach@compulab.co.il>
Acked-by: Igor Grinberg <grinberg@compulab.co.il>
Signed-off-by: Tony Lindgren <tony@atomide.com>

authored by

Uri Mashiach and committed by
Tony Lindgren
3089e40e 98e5d898

+192
+192
arch/arm/boot/dts/am335x-sbc-t335.dts
··· 13 13 / { 14 14 model = "CompuLab CM-T335 on SB-T335"; 15 15 compatible = "compulab,sbc-t335", "compulab,cm-t335", "ti,am33xx"; 16 + 17 + /* DRM display driver */ 18 + panel { 19 + compatible = "ti,tilcdc,panel"; 20 + status = "okay"; 21 + pinctrl-names = "default", "sleep"; 22 + pinctrl-0 = <&lcd_pins_default>; 23 + pinctrl-1 = <&lcd_pins_sleep>; 24 + 25 + panel-info { 26 + ac-bias = <255>; 27 + ac-bias-intrpt = <0>; 28 + dma-burst-sz = <16>; 29 + bpp = <32>; 30 + fdd = <0x80>; 31 + sync-edge = <0>; 32 + sync-ctrl = <1>; 33 + raster-order = <0>; 34 + fifo-th = <0>; 35 + }; 36 + display-timings { 37 + /* Timing selection performed by U-Boot */ 38 + timing0: lcd {/* 800x480p62 */ 39 + clock-frequency = <30000000>; 40 + hactive = <800>; 41 + vactive = <480>; 42 + hfront-porch = <39>; 43 + hback-porch = <39>; 44 + hsync-len = <47>; 45 + vback-porch = <29>; 46 + vfront-porch = <13>; 47 + vsync-len = <2>; 48 + hsync-active = <1>; 49 + vsync-active = <1>; 50 + }; 51 + timing1: dvi { /* 1024x768p60 */ 52 + clock-frequency = <65000000>; 53 + hactive = <1024>; 54 + hfront-porch = <24>; 55 + hback-porch = <160>; 56 + hsync-len = <136>; 57 + vactive = <768>; 58 + vfront-porch = <3>; 59 + vback-porch = <29>; 60 + vsync-len = <6>; 61 + hsync-active = <0>; 62 + vsync-active = <0>; 63 + }; 64 + }; 65 + }; 66 + }; 67 + 68 + &am33xx_pinmux { 69 + /* Display */ 70 + lcd_pins_default: lcd_pins_default { 71 + pinctrl-single,pins = < 72 + /* gpmc_ad8.lcd_data23 */ 73 + AM33XX_IOPAD(0x820, PIN_OUTPUT | MUX_MODE1) 74 + /* gpmc_ad9.lcd_data22 */ 75 + AM33XX_IOPAD(0x824, PIN_OUTPUT | MUX_MODE1) 76 + /* gpmc_ad10.lcd_data21 */ 77 + AM33XX_IOPAD(0x828, PIN_OUTPUT | MUX_MODE1) 78 + /* gpmc_ad11.lcd_data20 */ 79 + AM33XX_IOPAD(0x82c, PIN_OUTPUT | MUX_MODE1) 80 + /* gpmc_ad12.lcd_data19 */ 81 + AM33XX_IOPAD(0x830, PIN_OUTPUT | MUX_MODE1) 82 + /* gpmc_ad13.lcd_data18 */ 83 + AM33XX_IOPAD(0x834, PIN_OUTPUT | MUX_MODE1) 84 + /* gpmc_ad14.lcd_data17 */ 85 + AM33XX_IOPAD(0x838, PIN_OUTPUT | MUX_MODE1) 86 + /* gpmc_ad15.lcd_data16 */ 87 + AM33XX_IOPAD(0x83c, PIN_OUTPUT | MUX_MODE1) 88 + /* lcd_data0.lcd_data0 */ 89 + AM33XX_IOPAD(0x8a0, PIN_OUTPUT | MUX_MODE0) 90 + /* lcd_data1.lcd_data1 */ 91 + AM33XX_IOPAD(0x8a4, PIN_OUTPUT | MUX_MODE0) 92 + /* lcd_data2.lcd_data2 */ 93 + AM33XX_IOPAD(0x8a8, PIN_OUTPUT | MUX_MODE0) 94 + /* lcd_data3.lcd_data3 */ 95 + AM33XX_IOPAD(0x8ac, PIN_OUTPUT | MUX_MODE0) 96 + /* lcd_data4.lcd_data4 */ 97 + AM33XX_IOPAD(0x8b0, PIN_OUTPUT | MUX_MODE0) 98 + /* lcd_data5.lcd_data5 */ 99 + AM33XX_IOPAD(0x8b4, PIN_OUTPUT | MUX_MODE0) 100 + /* lcd_data6.lcd_data6 */ 101 + AM33XX_IOPAD(0x8b8, PIN_OUTPUT | MUX_MODE0) 102 + /* lcd_data7.lcd_data7 */ 103 + AM33XX_IOPAD(0x8bc, PIN_OUTPUT | MUX_MODE0) 104 + /* lcd_data8.lcd_data8 */ 105 + AM33XX_IOPAD(0x8c0, PIN_OUTPUT | MUX_MODE0) 106 + /* lcd_data9.lcd_data9 */ 107 + AM33XX_IOPAD(0x8c4, PIN_OUTPUT | MUX_MODE0) 108 + /* lcd_data10.lcd_data10 */ 109 + AM33XX_IOPAD(0x8c8, PIN_OUTPUT | MUX_MODE0) 110 + /* lcd_data11.lcd_data11 */ 111 + AM33XX_IOPAD(0x8cc, PIN_OUTPUT | MUX_MODE0) 112 + /* lcd_data12.lcd_data12 */ 113 + AM33XX_IOPAD(0x8d0, PIN_OUTPUT | MUX_MODE0) 114 + /* lcd_data13.lcd_data13 */ 115 + AM33XX_IOPAD(0x8d4, PIN_OUTPUT | MUX_MODE0) 116 + /* lcd_data14.lcd_data14 */ 117 + AM33XX_IOPAD(0x8d8, PIN_OUTPUT | MUX_MODE0) 118 + /* lcd_data15.lcd_data15 */ 119 + AM33XX_IOPAD(0x8dc, PIN_OUTPUT | MUX_MODE0) 120 + /* lcd_vsync.lcd_vsync */ 121 + AM33XX_IOPAD(0x8e0, PIN_OUTPUT | MUX_MODE0) 122 + /* lcd_hsync.lcd_hsync */ 123 + AM33XX_IOPAD(0x8e4, PIN_OUTPUT | MUX_MODE0) 124 + /* lcd_pclk.lcd_pclk */ 125 + AM33XX_IOPAD(0x8e8, PIN_OUTPUT | MUX_MODE0) 126 + /* lcd_ac_bias_en.lcd_ac_bias_en */ 127 + AM33XX_IOPAD(0x8ec, PIN_OUTPUT | MUX_MODE0) 128 + >; 129 + }; 130 + 131 + lcd_pins_sleep: lcd_pins_sleep { 132 + pinctrl-single,pins = < 133 + /* gpmc_ad8.lcd_data23 */ 134 + AM33XX_IOPAD(0x820, PIN_INPUT_PULLDOWN | MUX_MODE7) 135 + /* gpmc_ad9.lcd_data22 */ 136 + AM33XX_IOPAD(0x824, PIN_INPUT_PULLDOWN | MUX_MODE7) 137 + /* gpmc_ad10.lcd_data21 */ 138 + AM33XX_IOPAD(0x828, PIN_INPUT_PULLDOWN | MUX_MODE7) 139 + /* gpmc_ad11.lcd_data20 */ 140 + AM33XX_IOPAD(0x82c, PIN_INPUT_PULLDOWN | MUX_MODE7) 141 + /* gpmc_ad12.lcd_data19 */ 142 + AM33XX_IOPAD(0x830, PIN_INPUT_PULLDOWN | MUX_MODE7) 143 + /* gpmc_ad13.lcd_data18 */ 144 + AM33XX_IOPAD(0x834, PIN_INPUT_PULLDOWN | MUX_MODE7) 145 + /* gpmc_ad14.lcd_data17 */ 146 + AM33XX_IOPAD(0x838, PIN_INPUT_PULLDOWN | MUX_MODE7) 147 + /* gpmc_ad15.lcd_data16 */ 148 + AM33XX_IOPAD(0x83c, PIN_INPUT_PULLDOWN | MUX_MODE7) 149 + /* lcd_data0.lcd_data0 */ 150 + AM33XX_IOPAD(0x8a0, PULL_DISABLE | MUX_MODE7) 151 + /* lcd_data1.lcd_data1 */ 152 + AM33XX_IOPAD(0x8a4, PULL_DISABLE | MUX_MODE7) 153 + /* lcd_data2.lcd_data2 */ 154 + AM33XX_IOPAD(0x8a8, PULL_DISABLE | MUX_MODE7) 155 + /* lcd_data3.lcd_data3 */ 156 + AM33XX_IOPAD(0x8ac, PULL_DISABLE | MUX_MODE7) 157 + /* lcd_data4.lcd_data4 */ 158 + AM33XX_IOPAD(0x8b0, PULL_DISABLE | MUX_MODE7) 159 + /* lcd_data5.lcd_data5 */ 160 + AM33XX_IOPAD(0x8b4, PULL_DISABLE | MUX_MODE7) 161 + /* lcd_data6.lcd_data6 */ 162 + AM33XX_IOPAD(0x8b8, PULL_DISABLE | MUX_MODE7) 163 + /* lcd_data7.lcd_data7 */ 164 + AM33XX_IOPAD(0x8bc, PULL_DISABLE | MUX_MODE7) 165 + /* lcd_data8.lcd_data8 */ 166 + AM33XX_IOPAD(0x8c0, PULL_DISABLE | MUX_MODE7) 167 + /* lcd_data9.lcd_data9 */ 168 + AM33XX_IOPAD(0x8c4, PULL_DISABLE | MUX_MODE7) 169 + /* lcd_data10.lcd_data10 */ 170 + AM33XX_IOPAD(0x8c8, PULL_DISABLE | MUX_MODE7) 171 + /* lcd_data11.lcd_data11 */ 172 + AM33XX_IOPAD(0x8cc, PULL_DISABLE | MUX_MODE7) 173 + /* lcd_data12.lcd_data12 */ 174 + AM33XX_IOPAD(0x8d0, PULL_DISABLE | MUX_MODE7) 175 + /* lcd_data13.lcd_data13 */ 176 + AM33XX_IOPAD(0x8d4, PULL_DISABLE | MUX_MODE7) 177 + /* lcd_data14.lcd_data14 */ 178 + AM33XX_IOPAD(0x8d8, PULL_DISABLE | MUX_MODE7) 179 + /* lcd_data15.lcd_data15 */ 180 + AM33XX_IOPAD(0x8dc, PULL_DISABLE | MUX_MODE7) 181 + /* lcd_vsync.lcd_vsync */ 182 + AM33XX_IOPAD(0x8e0, PIN_INPUT_PULLDOWN | MUX_MODE7) 183 + /* lcd_hsync.lcd_hsync */ 184 + AM33XX_IOPAD(0x8e4, PIN_INPUT_PULLDOWN | MUX_MODE7) 185 + /* lcd_pclk.lcd_pclk */ 186 + AM33XX_IOPAD(0x8e8, PIN_INPUT_PULLDOWN | MUX_MODE7) 187 + /* lcd_ac_bias_en.lcd_ac_bias_en */ 188 + AM33XX_IOPAD(0x8ec, PIN_INPUT_PULLDOWN | MUX_MODE7) 189 + >; 190 + }; 16 191 }; 17 192 18 193 &i2c0 { ··· 198 23 gpio-controller; 199 24 #gpio-cells = <2>; 200 25 reg = <0x26>; 26 + dvi_ena { 27 + gpio-hog; 28 + gpios = <13 GPIO_ACTIVE_HIGH>; 29 + output-high; 30 + line-name = "dvi-enable"; 31 + }; 32 + lcd_ena { 33 + gpio-hog; 34 + gpios = <11 GPIO_ACTIVE_HIGH>; 35 + output-high; 36 + line-name = "lcd-enable"; 37 + }; 201 38 }; 39 + }; 40 + 41 + /* Display */ 42 + &lcdc { 43 + status = "okay"; 202 44 };