How to use EDT ET0430G8DH6 LCD display on EfusA9X & Buildroot Linux

  • Hello,


    our device is based on the efusA9X-V8-W13 with display EDT ET0430G8DH6 (or ET0430G0DH6 on some older boards). Until now there was WinCE OS and the display works correctly with it using the driver (ET043080).


    Now I am creating a Linux using the fsimx6sx-B2019.11 and I am unable to activate the display connected to our device. I tried to modify the efusa9x.dts in the linux-4.9.88 sources, but with no success. By default it contains settings for a WVGA display (800x480), but our display (mentioned above) has WQVGA resolution: 480x272.


    Do you have a hint how to modify the DTS to support the display? Or is it a driver issue?

  • Hello and welcome to the forum.


    Actually, it shouldn't be a problem to port an LCD running in WinCE to Linux.

    All you should have to do to adjust the settings of the lcd_wvga-struct in the device-tree files.


    Do you get any output at all?

    Is the backlight on?



    Your F&S Support Team

  • Hello,


    thanks for the hint. I tried to tweak the dts.


    I backed up the efusa9x.dts and changed the lcd_wvga struct in this way:

    lcd_wvga { \

    clock-frequency = <9200000>; \

    hactive = <480>; \

    vactive = <272>; \

    hfront-porch = <8>; \

    hback-porch = <4>; \

    hsync-len = <41>; \

    vback-porch = <2>; \

    vfront-porch = <4>; \

    vsync-len = <10>; \

    hsync-active = <0>; \

    vsync-active = <0>; \

    de-active = <1>; \

    pixelclk-active = <0>; \

    }


    I've got these numbers from the hardware specification of the LCD and another DTS for some other iMX6 based board.


    But the backlight is not working, so I cannot see anything on the display.


    The backlight starts working if I:

    - change CONFIG_EFUSA9X_LCDIF0 from DISPLAY_LCD to DISPLAY_LVDS

    - uncomment the DISPLAY_LVDS_CHIMEI

    But the display is white - does not show anything.


    To verify it I created a boot logo for the kernel (our company logo on white background).

    I also tried to send a raw image to /dev/fb0.


    I'm kind of lost in the complexity of DTS.


    BTW. I had to disable the CAN_A, because via these pins we can shut down the power source. So now I can control it via GPIO.

  • When we use the LCD display on efus, we usually have a RGB adapter attached. for example the ADP-EDT1. This adapter then also handles the backlight with the help of a PCA9632 chip accessed via I2C. This is why we have associated the pins BL_CTRL (Pin 87) and BL_VBL_ON (Pin 89) with LVDS. I believe you are doing it differently. Can you explain a little bit more in detail where your backlight is connected and whether you are using such an RGB adapter or not.

    Quote

    To verify it I created a boot logo for the kernel (our company logo on white background).

    I also tried to send a raw image to /dev/fb0.

    Misusing the Tux-Logo for a company logo is the wrong way of doing things. The Tux will appear as often as you have cores in the system. So for example on a Quad-Core-CPU, you will have four Tux-Logos shown. This is not what you want.


    The first option to show such a logo is in U-Boot. When you are using B2019.11, then this feature is available.


    The second option is to have a Splash Screen in Linux. There is already a package in Buildroot that allows doing this, even with an additional progress bar. We have a documentation that shows how this is is done.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Quote

    Can you explain a little bit more in detail where your backlight is connected and whether you are using such an RGB adapter or not.


    To my knowledge there is no RGB adapter used, but I have to clarify this with our hardware department.

    The backlight is controlled via the signal BL_CTRL (PWM backlight dimming). VCFL_ON is NOT connected.

    A constant low level at BL_CTRL means backlight off.


    For Windows we use display mode 9 in Eboot. The setting of mode 9 works out of the box without further modification. Is it possible to get the details of mode 9 so that we can transfer it to the lcd_wvga struct?

  • Additional info:

    The following signals of the efus board are directly connected to the display:

    BL_CTR (via inverter), LCD_DE, LCD_HSYNC, LCD_VSYNC, LCD_PCLK, LCD_R0...5, LCD_G0...5, LCD_B0...5

  • Hello,


    attached the WCE mode 9. For details refer WCE Device-Driver-Doc (LCD_CONFIG_PCP=LCD_CLKP).

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • Ok, try the following. In the device tree efusa9x.dts, replace the node


    with

    Code
    1. backlight_lcd {
    2. compatible = "pwm-backlight";
    3. pwms = <&pwm6 0 5000000 0>;
    4. power-supply = <&reg_ldb_bl>;
    5. brightness-levels = <0 1 5 10 18 28 41 56
    6. 73 92 113 137 163 192 222 255>;
    7. default-brightness-level = <14>;
    8. fb-names = "mxs-lcdif0";
    9. };

    This copies the relevant stuff from backlight_ldb to backlight_lcd and enables the backlight_lcd in any case. Please note that also all #ifs around the node are gone. Then rebuild the device tree (in case of Buildroot this is make linux-rebuild all) and store it on the board.

    F&S Elektronik Systeme GmbH
    As this is an international forum, please try to post in English.
    Da dies ein internationales Forum ist, bitten wir darum, Beiträge möglichst in Englisch zu verfassen.

  • There was still one thing missing. I had to change the gpio in reg_lcd_bl from pca963x to gpio3 (see below):


    Code
    1. #ifdef CONFIG_EFUSA9X_I2C_A
    2. reg_lcd_bl: lcd-bl {
    3. compatible = "regulator-fixed";
    4. regulator-name = "lcd-bl";
    5. gpio = <&gpio3 20 0>;
    6. regulator-min-microvolt = <3300000>;
    7. regulator-max-microvolt = <3300000>;
    8. enable-active-high;
    9. };
    10. #endif

    Now the LCD works as expected.

    Thank you very much. :thumbsup: