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.

AM3358: Reduce display power

Hi,

Using yocto linux Am335x-processor-sdk version, kernel version 4.14 & tilcdc drivers.

I am suspecting lcd data lines cause gradient issues so we need to reduce display power, because we ported WinCE in same board, it doesn't seems to show a gradient issues. We ported Linux image, it clearly show gradient with some other features enabled in display port. 

We need to reduce display power in board so need a help from use low power memory as a framebuffer. We tried all steps to clear gradient issues so i need to try this step is possible or not ?

Regards,

SanthanaKumarS

  • Hello Santhana,

    I am wondering if you could please explain what you mean by using low power memory as a framebuffer. Also, what power differences are you observing while running the application in WinCE vs Linux? Are you observing gradient issues while running the out of box Processor SDK 6.01?

    Regards,
    Krunal

  • Krunal,

    Previously we are discussed gradient issues in this forums, Please check this link https://e2e.ti.com/support/processors/f/791/t/806475 .

    We observe slightly little color banding on WinCE compared to Linux, Color banding shows clearly in linux  display, because it will caused by display power,brightness or any features added in Linux compared to WinCE. We checked codes, dts features evrything correctly in both WinCE & Linux. Oberved no gradient issues while running the out of box Processor SDK 6.01

    Our requirement is, What we observe little color banding in WinCE, Need to show same as WinCE requirements.

    According to gradient issues, We need to reduce one of features brightness, dispaly power or any other modes enabled in linux compared to WinCE.

    Used same hardware for WinCE & linux, but color banding show clearly in Linux. 

    Display dumping image through framebuffer, so we tried to reduce display power meant by using low power memory as a framebuffer. If it seems a way, Power differences issues will caused color banding different in both WinCE & Linux.

    Refered this link for display power consumption  https://www.embedded.com/optimizing-wearable-display-power-consumption/  selecting to reduce display power.

    Regards,

    SanthanaKumarS

  • Hello Santhana,

    Oberved no gradient issues while running the out of box Processor SDK 6.01

    If you are not observing gradient issues on PSDK6.01, please compare your current file-system build with the 6.01 release. Also, please refer to the following pages with regards to power and controlling brightness:
    1. http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_Kernel_Drivers.html#id42
    2. http://software-dl.ti.com/processor-sdk-linux/esd/docs/latest/linux/Foundational_Components_Kernel_Drivers.html#pwm

    Regards,
    Krunal

  • Krunal,

    You are telling processor sdk verion 6.0.1.Using PSDK 04.01.00.06, We oberved gradient issues compared to you version PSDK 6.01. Ok I will try to build for PSDK 6.0.1 to my board.

    Can you please tell about those interface will worked in TILCDC driver drives the image in display for those specifications.

    18-bit TFT LCD color assignments,

    DRM_FORMAT_XRGB8888, 

    32 bpp

    blue-and-red-wiring = "crossed";


    Referrence for RGB888 mode:

    3.1.1 LCD: Color Assignments of LCD_DATA Terminals
    The blue and red color assignments to the LCD data pins are reversed when operating in RGB888 (24bpp) mode compared to RGB565 (16bpp) mode. In order to correctly display RGB888 data from the SGX, or any source formatted as RGB in memory, it is necessary to connect the LCD panel as shown in Figure 2. Using the LCD Controller with this connection scheme limits the use of RGB565 mode. Any data generated for the RGB565 mode requires the red and blue color data values be swapped in order to display the correct color.

    Figure 2. RGB888 Mode LCD Controller Output Pin Mapping (LCD_DATA[23:0])

                    Is there any changes in TILCDC driver, configure for 18-bit lcd data lines in XRGB8888 mode ??

    Regards,

    SanthanaKumarS

  • Hello,

    I am reviewing with our driver experts and I will post my updates within 24-48 hours on your following post.

    Regards,
    Krunal

  • Thanks krunal for your daily update.

    I will update one more information for color banding, difference between 8 bit & 10 bit image causes color banding, so am doubt about image can display fails in missing true colors, so it cannot give perfect smooth gradient.

     Biser Gatchev-XID: Updated  18 bit TFT display for 32 bit mode 

    "Your LCD connections are correct, at least from the pinmux you have posted. Since the LCD driver works in 24-bit mode, and you need to omit the 2 LSB for each color to connect to an 18-bit display, there will be colors missing on your display and you cannot expect to see a perfectly smooth gradient. There is no workaround for this, except switching to a 24-bit LCD and connecting all LCD data lines."

    Please review this & uddate for perfect smooth gradient in 32 bit mode.  


  • Hello,

    1. Please provide me with some background on how the above images are generated.

    2. Summarize how the hardware/software are configured for the custom board.

    3. In the previous post, you mentioned that you are not observing any gradient issues on PSDK v6.0.1. If that is the case, have you compared your existing Kernel settings with v6.0.1?

    Regards,
    Krunal

  • Will give a brief statement of your following points 

    1. Above images are not generated, i suggested to give example for  8 bit & 10 bit display image color to cause color banding.

         Images attached in https://e2e.ti.com/support/processors/f/791/t/806475?tisearch=e2e-sitesearch&keymatch=%2525252520user%252525253A389207

    Hardware/Software Configured in custom board

    Hardware Configurations:      

    Lcd Part Number : hsd070idw1-e13 

    &lcdc {
    compatible = "ti,am33xx-tilcdc";
    ti,no-reset-on-init;
    ti,no-idle-on-init;

    status = "okay";

    blue-and-red-wiring = "crossed";
    };

    panel {
    compatible = "ti,tilcdc,panel";
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&lcd_pins>;
    panel-info {
    ac-bias = <255>;
    ac-bias-intrpt = <0>;
    dma-burst-sz = <16>;
    bpp = <32>;
    fdd = <0x80>;
    sync-edge = <0>;
    sync-ctrl = <1>;
    raster-order = <1>;
    fifo-th = <6>;
    };

    display-timings {
    800x480p62 {
    clock-frequency = <36000000>;
    hactive = <800>;
    vactive = <480>;
    hfront-porch = <40>;
    hback-porch = <40>;
    hsync-len = <48>;
    vback-porch = <29>;
    vfront-porch = <13>;
    vsync-len = <3>;
    hsync-active = <0>;
    vsync-active = <0>;
    };
    };
    };

    lcd_pins: pinmux_lcd_pins {
    pinctrl-single,pins = <
    AM33XX_IOPAD(0x8E0, PIN_OUTPUT | MUX_MODE0) /* (U5) lcd_vsync.lcd_vsync */
    AM33XX_IOPAD(0x8E4, PIN_OUTPUT | MUX_MODE0) /* (R5) lcd_hsync.lcd_hsync */
    AM33XX_IOPAD(0x8E8, PIN_OUTPUT | MUX_MODE0) /* (V5) lcd_pclk.lcd_pclk */
    AM33XX_IOPAD(0x8EC, PIN_OUTPUT | MUX_MODE0) /* (R6) lcd_ac_bias_en.lcd_ac_bias_en */
    AM33XX_IOPAD(0x83C, PIN_OUTPUT | MUX_MODE1) /* (U13) gpmc_ad15.lcd_data16: R0 */
    AM33XX_IOPAD(0x8A0, PIN_OUTPUT | MUX_MODE0) /* (R1) lcd_data0.lcd_data0: R1 */
    AM33XX_IOPAD(0x8A4, PIN_OUTPUT | MUX_MODE0) /* (R2) lcd_data1.lcd_data1: R2 */
    AM33XX_IOPAD(0x8A8, PIN_OUTPUT | MUX_MODE0) /* (R3) lcd_data2.lcd_data2: R3 */
    AM33XX_IOPAD(0x8AC, PIN_OUTPUT | MUX_MODE0) /* (R4) lcd_data3.lcd_data3: R4 */
    AM33XX_IOPAD(0x8B0, PIN_OUTPUT | MUX_MODE0) /* (T1) lcd_data4.lcd_data4: R5 */
    AM33XX_IOPAD(0x8B4, PIN_OUTPUT | MUX_MODE0) /* (T2) lcd_data5.lcd_data5: G0 */
    AM33XX_IOPAD(0x8B8, PIN_OUTPUT | MUX_MODE0) /* (T3) lcd_data6.lcd_data6: G1 */
    AM33XX_IOPAD(0x8BC, PIN_OUTPUT | MUX_MODE0) /* (T4) lcd_data7.lcd_data7: G2 */
    AM33XX_IOPAD(0x8C0, PIN_OUTPUT | MUX_MODE0) /* (U1) lcd_data8.lcd_data8: G3 */
    AM33XX_IOPAD(0x8C4, PIN_OUTPUT | MUX_MODE0) /* (U2) lcd_data9.lcd_data9: G4 */
    AM33XX_IOPAD(0x8C8, PIN_OUTPUT | MUX_MODE0) /* (U3) lcd_data10.lcd_data10: G5 */
    AM33XX_IOPAD(0x838, PIN_OUTPUT | MUX_MODE1) /* (V13) gpmc_ad14.lcd_data17: B0 */
    AM33XX_IOPAD(0x8CC, PIN_OUTPUT | MUX_MODE0) /* (U4) lcd_data11.lcd_data11: B1 */
    AM33XX_IOPAD(0x8D0, PIN_OUTPUT | MUX_MODE0) /* (V2) lcd_data12.lcd_data12: B2 */
    AM33XX_IOPAD(0x8D4, PIN_OUTPUT | MUX_MODE0) /* (V3) lcd_data13.lcd_data13: B3 */
    AM33XX_IOPAD(0x8D8, PIN_OUTPUT | MUX_MODE0) /* (V4) lcd_data14.lcd_data14: B4 */
    AM33XX_IOPAD(0x8DC, PIN_OUTPUT | MUX_MODE0) /* (T5) lcd_data15.lcd_data15: B5 */

    AM33XX_IOPAD(0x840, PIN_OUTPUT_PULLDOWN | MUX_MODE7 ) /* (R13) gpio1[16]: 11V_EN */
    >;
    };

    Software Configurations


    Referrence in Processor-sdk-04.01.00.06 kernel v4.9

    blue-and-red-wiring = "crossed";

    Tilcdc format - static const u32 tilcdc_crossed_formats[] = { DRM_FORMAT_BGR565, DRM_FORMAT_RGB888, DRM_FORMAT_XRGB8888 };

    based on red and blue wires it will select tilcdc format,pixel format.

    DRM_FORMAT_XRGB8888  { .format = DRM_FORMAT_XRGB8888, .depth = 24, .num_planes = 1, .cpp = { 4, 0, 0 }, .hsub = 1, .vsub = 1 },

    Using DRM to configure color depth,bit per pixels. 

    Color depth = 24 , Bpp = 32 

    3. In the previous post, Not mentioning gradient observed in yocto  PSDK v6.0.1. trying to build my source on PSDK v6.0.1 to see gradient issues are there or not.

    If any information required, Please ask.

  • Hello,

    Based on my internal discussion, with 16-bit colors the gradients, especially in grayscale, are quite noticeable. However, if the picture is for some reason better with WinCE, I would suggest checking what display setup is used there and use the same setup on with Linux side too.

    Regards,
    Krunal

  • Krunal,

    Checked on WinCE side to display the same setup on linux side, but unfortunately not worked on. 

    Is there any graphics library to reduce the banding issues in linux side?

  • Hello,

    We do not have any software libraries that will help with banding issues on the Linux side. I would recommend you to compare the LCDC registers for both Linux and WinCE for any major differences. 

    Regards,
    Krunal

  • Hi Krunal,

    Is there any option available for colour dithering in drm/sgx or any graphics library. I think colour dithering will reduce the banding issue. 

    Regards,
    Manoj

  • Hi Manoj,

    Based on my discussion with our developers, there aren't any software settings that helps with banding issues.

    Regards,
    Krunal