This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

New TFT LCD with 8080 parallel inteface 8-bit mode (LiDD)

Other Parts Discussed in Thread: TFP410

We are trying to add new TFT LCD with 8-bit mode(LIDD)

I am new to LCD driver with TI LCDC. As mentioned in wiki--Linux LCDC Porting Guide --

we started with as per the pin-mux in the dts(am335x-evmsk.dts) :

    lcd_pins_default: lcd_pins_default {
        pinctrl-single,pins = <
            0xe0 ( PIN_OUTPUT | MUX_MODE0 ) /* (U5) lcd_vsync.lcd_vsync */
                0xe4 ( PIN_OUTPUT | MUX_MODE0 ) /* (R5) lcd_hsync.lcd_hsync */
                0xa0 ( PIN_INPUT | MUX_MODE0 ) /* (R1) lcd_data0.lcd_data0 */
                0xa4 ( PIN_INPUT | MUX_MODE0 ) /* (R2) lcd_data1.lcd_data1 */
                0xa8 ( PIN_INPUT | MUX_MODE0 ) /* (R3) lcd_data2.lcd_data2 */
                0xac ( PIN_INPUT | MUX_MODE0 ) /* (R4) lcd_data3.lcd_data3 */
                0xb0 ( PIN_INPUT | MUX_MODE0 ) /* (T1) lcd_data4.lcd_data4 */
                0xb4 ( PIN_INPUT | MUX_MODE0 ) /* (T2) lcd_data5.lcd_data5 */
                0xb8 ( PIN_INPUT | MUX_MODE0 ) /* (T3) lcd_data6.lcd_data6 */
                0xbc ( PIN_INPUT | MUX_MODE0 ) /* (T4) lcd_data7.lcd_data7 */
                0xec ( PIN_OUTPUT | MUX_MODE0 ) /* (R6) lcd_ac_bias_en.lcd_ac_bias_en */
        >;
    };

    lcd_pins_sleep: lcd_pins_sleep {
        pinctrl-single,pins = <
                        0xe0 (PIN_INPUT_PULLDOWN ) /* (U5) lcd_vsync.lcd_vsync */
                    0xe4 (PIN_INPUT_PULLDOWN ) /* (R5) lcd_hsync.lcd_hsync */
                    0xa0 (PIN_INPUT_PULLDOWN ) /* (R1) lcd_data0.lcd_data0 */
                    0xa4 (PIN_INPUT_PULLDOWN ) /* (R2) lcd_data1.lcd_data1 */
                    0xa8 (PIN_INPUT_PULLDOWN ) /* (R3) lcd_data2.lcd_data2 */
                    0xac (PIN_INPUT_PULLDOWN ) /* (R4) lcd_data3.lcd_data3 */
                    0xb0 (PIN_INPUT_PULLDOWN ) /* (T1) lcd_data4.lcd_data4 */
                    0xb4 (PIN_INPUT_PULLDOWN ) /* (T2) lcd_data5.lcd_data5 */
                    0xb8 (PIN_INPUT_PULLDOWN ) /* (T3) lcd_data6.lcd_data6 */
                    0xbc (PIN_INPUT_PULLDOWN ) /* (T4) lcd_data7.lcd_data7 */
                    0xec (PIN_INPUT_PULLDOWN) /* (R6) lcd_ac_bias_en.lcd_ac_bias_en */  
        >;
    };

then changed the fbdev entry:

panel {
        compatible = "ti,tilcdc,panel";
        pinctrl-names = "default", "sleep";
        pinctrl-0 = <&lcd_pins_default>;
        pinctrl-1 = <&lcd_pins_sleep>;
        status = "okay";
        panel-info {
            ac-bias           = <255>; 
            ac-bias-intrpt    = <0>;
            dma-burst-sz      = <16>;
            bpp               = <8>;   (8-bit mode so modified to 8 - remaining we dont know so we left as it is)
            fdd               = <0x80>;
            sync-edge         = <0>;
            sync-ctrl         = <1>;
            raster-order      = <0>;
            fifo-th           = <0>;
        };
        display-timings {
            128x160 {
                hactive         = <128>;   (our lcd is 128/160 )
                vactive         = <160>;
                hback-porch     = <4>;  (in the  datasheet --not mentioned about these so we set 4 for test )
                hfront-porch    = <4>;
                hsync-len       = <4>;
                vback-porch     = <4>;
                vfront-porch    = <4>;
                vsync-len       = <10>;
                clock-frequency = <6000000>; (pclk-> RD line and read cycle is 160ns so we updated )
                hsync-active    = <0>;                     (i saw some thing pclk = lcd-clk / clkdiv )
                vsync-active    = <0>;               ( some where resolution x bitrate x something it was 12MHZ  so we are in confusion in clock setting)
            };
        };

these are changes we done.  we are sending "HELLO" to /dev/fb0 we are not getting anything on LCD.

Then we got few doubts:

1. we are ST7735r TFT LCD - do we need to write any driver for this TFT LCD and where to update TI-LCDC register configurations to 8-bit mode.

2. DRM - we thought for graphic support - so we didnt find for this.

In few post-discussion in this fourm -- Tilcdc panel is the generic driver and it is using DRM to allocate memory and also initialise tfp410 encoder. 

Here we block with all side - unable to step forward -- to bringup ST7735R LCD.

So can u plz suggest :

1. where we step wrong or we left any thing .

2. do we need to write any separate fb-driver(in "/drivers/videos/fbdev") for ST7735R (one point is sure we have to use tilcdc). if so how can we link that might in dts file only.

note: we tried a dummy fb-driver and updated in dts with "ti,tilcdc,st7735r" and samething given in the st7735rfb - driver it was so loaded- but

with pin-mux change or this change - Start PVR... came then bootlog/kernel wascrashed.

 3. in gpu/drm/tilcdc - do we need to add or change for the st7735r or lcdc config.

Please any once suggest , how to step forward...in bringup the new LCD.

regards,

Viswanath.

  • A similar question is asked here: https://e2e.ti.com/support/arm/sitara_arm/f/791/t/416112 Currently the factory team is searching for a solution. When feedback is available this thread will be updated.

  • thanks for the reply.
    I am having few confusions: like to understanding the design point of view, for future usage.

    1. one of the post suggested a seperate frame buffer driver for the this type of lcd mode.
    2. I am having confusion on LCD panel and LCD controller(in one of the disscusion this difference is came).
    can we use the Frame buffer driver for both --LCD Panel as well as LCD controller.
    3. One more confusion is about -- TILCDC - Panel , DRM, Encoder ,Slave and CRCTC.
    In my understanding DRM is for the Graphic support with tfp410 encoder and tilcdc_drv.c is the driver for the Host LCD controller.
    i) is this TILCDC is the framework kind of thing for the graphics support on Host-LCD Controller.

    Regards,
    Viswanath K