VAR-SOM-AM33 Linux SDK 7 LCD porting: Difference between revisions

From Variscite Wiki
(Created page with "{{PageHeader|LCD Porting}} __toc__ = Introduction = Variscite VAR-DVK-AM33 LCD signals are 16 by default. To change board to support 24bit LCD remove resistor net RN109 and ...")
 
Line 4: Line 4:


= Introduction =
= Introduction =
Variscite VAR-DVK-AM33 LCD signals are 16 by default.
Variscite VAR-DVK-AM33 LCD signals are configured as 16bit by default.
To change board to support 24bit LCD remove resistor net RN109 and install RN108.
To alter board to support 24bit LCD: remove resistor net RN109 and install RN108.
The pinmux is also configured by default to 16bit.
The pinmux is also configured by default to 16bit.
Use the below pinmux example to change from 16bit to 24bit configuration.
Use the below pinmux example to change from 16bit to 24bit configuration.

Revision as of 16:49, 17 June 2014

LCD Porting

Introduction

Variscite VAR-DVK-AM33 LCD signals are configured as 16bit by default. To alter board to support 24bit LCD: remove resistor net RN109 and install RN108. The pinmux is also configured by default to 16bit. Use the below pinmux example to change from 16bit to 24bit 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_data16, OUTPUT | MODE1 */
				0x24 0x01	/* gpmc_ad9.lcd_data17, OUTPUT | MODE1 */
				0x28 0x01	/* gpmc_ad10.lcd_data18, OUTPUT | MODE1 */
				0x2c 0x01	/* gpmc_ad11.lcd_data19, OUTPUT | MODE1 */
				0x30 0x01	/* gpmc_ad12.lcd_data20, OUTPUT | MODE1 */
				0x34 0x01	/* gpmc_ad13.lcd_data21, OUTPUT | MODE1 */
				0x38 0x01	/* gpmc_ad14.lcd_data22, OUTPUT | MODE1 */
				0x3c 0x01	/* gpmc_ad15.lcd_data23, 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)
                                };
                        };
                };