VAR-SOM-AM33 Display
Introduction
Variscite's VAR-DVK-AM33 LCD signals are configured by default as 16bit. To alter board to support 24bit LCD: remove resistor net RN109 and install RN108. This will disable the GPMC signals from the external header. The pin-muxing is also configured by default to 16bit. Use the below pin-mux examples to modify from 16bit to 24bit LCD configuration.
16bit LCD Pin-muxing
Modify ~/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01/arch/arm/boot/dts/am335x-som.dts
lcd_pins_default: lcd_pins_default { pinctrl-single,pins = < 0xa0 0x00 /* lcd_data0.lcd_data0, OUTPUT | MODE0 */ 0xa4 0x00 /* lcd_data1.lcd_data1, OUTPUT | MODE0 */ 0xa8 0x00 /* lcd_data2.lcd_data2, OUTPUT | MODE0 */ 0xac 0x00 /* lcd_data3.lcd_data3, OUTPUT | MODE0 */ 0xb0 0x00 /* lcd_data4.lcd_data4, OUTPUT | MODE0 */ 0xb4 0x00 /* lcd_data5.lcd_data5, OUTPUT | MODE0 */ 0xb8 0x00 /* lcd_data6.lcd_data6, OUTPUT | MODE0 */ 0xbc 0x00 /* lcd_data7.lcd_data7, OUTPUT | MODE0 */ 0xc0 0x00 /* lcd_data8.lcd_data8, OUTPUT | MODE0 */ 0xc4 0x00 /* lcd_data9.lcd_data9, OUTPUT | MODE0 */ 0xc8 0x00 /* lcd_data10.lcd_data10, OUTPUT | MODE0 */ 0xcc 0x00 /* lcd_data11.lcd_data11, OUTPUT | MODE0 */ 0xd0 0x00 /* lcd_data12.lcd_data12, OUTPUT | MODE0 */ 0xd4 0x00 /* lcd_data13.lcd_data13, OUTPUT | MODE0 */ 0xd8 0x00 /* lcd_data14.lcd_data14, OUTPUT | MODE0 */ 0xdc 0x00 /* lcd_data15.lcd_data15, OUTPUT | MODE0 */ 0xe0 0x00 /* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */ 0xe4 0x00 /* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */ 0xe8 0x00 /* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */ 0xec 0x00 /* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */ >; };
24bit LCD Pin-muxing
Modify ~/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01/arch/arm/boot/dts/am335x-som.dts
lcd_pins_default: lcd_pins_default { pinctrl-single,pins = < 0x20 0x01 /* gpmc_ad8.lcd_data23, OUTPUT | MODE1 */ 0x24 0x01 /* gpmc_ad9.lcd_data22, OUTPUT | MODE1 */ 0x28 0x01 /* gpmc_ad10.lcd_data21, OUTPUT | MODE1 */ 0x2c 0x01 /* gpmc_ad11.lcd_data20, OUTPUT | MODE1 */ 0x30 0x01 /* gpmc_ad12.lcd_data19, OUTPUT | MODE1 */ 0x34 0x01 /* gpmc_ad13.lcd_data18, OUTPUT | MODE1 */ 0x38 0x01 /* gpmc_ad14.lcd_data17, OUTPUT | MODE1 */ 0x3c 0x01 /* gpmc_ad15.lcd_data16, OUTPUT | MODE1 */ 0xa0 0x00 /* lcd_data0.lcd_data0, OUTPUT | MODE0 */ 0xa4 0x00 /* lcd_data1.lcd_data1, OUTPUT | MODE0 */ 0xa8 0x00 /* lcd_data2.lcd_data2, OUTPUT | MODE0 */ 0xac 0x00 /* lcd_data3.lcd_data3, OUTPUT | MODE0 */ 0xb0 0x00 /* lcd_data4.lcd_data4, OUTPUT | MODE0 */ 0xb4 0x00 /* lcd_data5.lcd_data5, OUTPUT | MODE0 */ 0xb8 0x00 /* lcd_data6.lcd_data6, OUTPUT | MODE0 */ 0xbc 0x00 /* lcd_data7.lcd_data7, OUTPUT | MODE0 */ 0xc0 0x00 /* lcd_data8.lcd_data8, OUTPUT | MODE0 */ 0xc4 0x00 /* lcd_data9.lcd_data9, OUTPUT | MODE0 */ 0xc8 0x00 /* lcd_data10.lcd_data10, OUTPUT | MODE0 */ 0xcc 0x00 /* lcd_data11.lcd_data11, OUTPUT | MODE0 */ 0xd0 0x00 /* lcd_data12.lcd_data12, OUTPUT | MODE0 */ 0xd4 0x00 /* lcd_data13.lcd_data13, OUTPUT | MODE0 */ 0xd8 0x00 /* lcd_data14.lcd_data14, OUTPUT | MODE0 */ 0xdc 0x00 /* lcd_data15.lcd_data15, OUTPUT | MODE0 */ 0xe0 0x00 /* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */ 0xe4 0x00 /* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */ 0xe8 0x00 /* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */ 0xec 0x00 /* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */ >; };
Modify LCD timings
Modify ~/ti-sdk-am335x-evm-07.00.00.00/board-support/linux-3.12.10-ti2013.12.01/arch/arm/boot/dts/am335x-som.dts
lcdc: lcdc@0x4830e000 { pinctrl-names = "default", "sleep"; pinctrl-0 = <&lcd_pins_default>; pinctrl-1 = <&lcd_pins_sleep>; status = "okay"; display-timings { 800x480p62 { clock-frequency = <30000000>; // LCD pixel clock hactive = <800>; // LCD horizontal pixel count vactive = <480>; // LCD vertical pixel count hfront-porch = <39>; // LCD HSYNC front porch length (in pixels) hback-porch = <39>; // LCD HSYNC back porch length (in pixels) hsync-len = <47>; // LCD HSYNC length (in pixels) vback-porch = <29>; // LCD VSYNC synch length (in pixels) vfront-porch = <13>;// LCD VSYNC synch length (in HSYNCs) vsync-len = <2>;// LCD VSYNC length (in HSYNCs) hsync-active = <1>; // HSYNC active high(1) or low (0) vsync-active = <1>;// VSYNC active high(1) or low (0) }; }; };