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.

AM4378: Display configuration issue

Part Number: AM4378
Other Parts Discussed in Thread: AM5728, AM4372

Hi,

      The process SDK is ti-processor-sdk-linux-am437x-evm-06.00.00.07, AM4378,

Nowadays, I need interface a display with size 1280*800,which the pixel clock is 65MHz,  I use the following in dts:

   

lcd0: display {
compatible = "osddisplays,osd070t1718-19ts", "panel-dpi";
label = "lcd";

backlight = <&lcd_bl>;

panel-timing {

clock-frequency = <65000000>;

hactive = <1280>;

vactive = <800>;

hfront-porch = <48>;
hback-porch = <2>;


hsync-len = <32>;

vback-porch = <10>;
vfront-porch = <2>;

vsync-len = <20>;

hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <1>;
};

    But it didn't work, and I find the PCLK waveform which was still 33MHz? 

Best wishes,

Jyuan

  • Hi,

       Today I test   ti-processor-sdk-linux-am437x-evm-06.00.00.07, it seems panel-simple.c can set the display timing. I adjust different  LCD resolution,and I found  it cannot output signals  when the resolution is high,for example,1024X768 ,RGB888,refresh rate 60. And it seems normal when the resolution is below  800X600. I don't know whether my test is right. If it is right,can you tell me what is the maxim resolution with RGB888, refresh rate 60 with this linux SDK version? 

    Best wishes!

    Jyuan

     

  • Hello Jyuan,

    I am wondering if you could please run the following command "kmstest --flip" and share the output logs.

    Regards,
    Krunal

  • Hi Krunal,

           Thank you for your reply, I just leave for my business trip, it will take about two weeks, I will reply you ASAP after back to lab.

    Best wishes,

    Jyuan 

  • Hello Jyuan,

    Based on my discussion with our expert, timing data from DT is no longer used. The driver (drivers/gpu/drm/panel/panel-simple.c) has a list of panels with the details for each panel. For example, please look for "osddisplays,osd070t1718-19ts" in the driver and it has the corresponding timing values. Please update your panel information accordingly. 

    Also, I will be closing the ticket but please feel free to open the ticket after your trip.

    Regards,
    Krunal

  • Hello Krunal,

    could you please explain, how the DT should look like for a 'simple-panel' + 'dss', and what needs to be configured in the kernel 4.19?

    I have a similar problem with the AM5728, see: https://e2e.ti.com/support/processors/f/791/t/844951

    Kind regards, Marcus

  • Hi Marcus,

    I will address your question directly on the ticket you shared.

    Regards,
    Krunal

  • Dear       Krunal,  

    Today I use different configurations with panel-simple.c.And I use a Oscilloscope  to observe  the PCLK signal with each configuration.

     1)  800X480 60p RGB888

    static const struct drm_display_mode osddisplays_osd070t1718_19ts_mode = {

    .clock = 33000,
    .hdisplay = 800,
    .hsync_start = 800 + 210,
    .hsync_end = 800 + 210 + 30,
    .htotal = 800 + 210 + 30 + 16,
    .vdisplay = 480,
    .vsync_start = 480 + 22,
    .vsync_end = 480 + 22 + 13,
    .vtotal = 480 + 22 + 13 + 10,
    .vrefresh = 60,
    .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
    };

    static const struct panel_desc osddisplays_osd070t1718_19ts = {
    .modes = &osddisplays_osd070t1718_19ts_mode,
    .num_modes = 1,
    .bpc = 8,
    .size = {
    .width = 152,
    .height = 91,
    },
    .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
    .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
    };

    It's OK,can see PCLK signal.

    kernel log:

    [ 1.557055] omapdss_dss 4832a000.dss: 4832a000.dss supply vdda_video not found, using dummy regulator
    [ 1.566478] omapdss_dss 4832a000.dss: Linked as a consumer to regulator.0
    [ 1.573413] DSS: OMAP DSS rev 2.0
    [ 1.577739] omapdss_dss 4832a000.dss: bound 4832a400.dispc (ops dispc_component_ops)
    [ 1.586059] omapdrm omapdrm.0: DMM not available, disable DMM support
    [ 1.592852] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [ 1.599530] [drm] No driver support for vblank timestamp query.
    [ 1.668146] Console: switching to colour frame buffer device 100x30
    [ 1.691197] omapdrm omapdrm.0: fb0: omapdrm frame buffer device
    [ 1.697934] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [ 1.705629] cpu cpu0: Linked as a consumer to regulator.5
    [ 1.711186] cpu cpu0: Dropping the link to regulator.5
    [ 1.716519] cpu cpu0: Linked as a consumer to regulator.5
    [ 1.723371] omap_gpio 44e07000.gpio: Could not set line 6 debounce to 200000 microseconds (-22)
    [ 1.732258] omap_hsmmc 48060000.mmc: Got CD GPIO
    [ 1.737382] omap_hsmmc 48060000.mmc: Linked as a consumer to regulator.1
    [ 1.770223] hctosys: unable to open rtc device (rtc0)
    [ 1.792230] net eth0: initializing cpsw version 1.15 (0)
    [ 1.825562] mmc1: host does not support reading read-only switch, assuming write-enable
    [ 1.835717] mmc1: new high speed SDHC card at address 59b4
    [ 1.842571] mmcblk1: mmc1:59b4 00000 14.9 GiB
    [ 1.848945] mmcblk1: p1 p2
    [ 1.902880] Micrel KSZ9031 Gigabit PHY 4a101000.mdio:00: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus)
    [ 1.921351] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [ 1.968225] random: fast init done


    root@am437x-evm:~# kmstest --flip
    Connector 0/@46: DPI-1
    Crtc 0/@47 (plane 0/@35): 800x480 33.000 800/210/30/16 480/22/13/10 60 (59.52) 0xa 0x48
    Fb 55 800x480-XR24
    Atomic commit failed when disabling: -13

    2)1024X600 60p RGB888

    static const struct drm_display_mode osddisplays_osd070t1718_19ts_mode = {
    .clock = 54030,
    .hdisplay = 1024,
    .hsync_start = 1024 + 24,
    .hsync_end = 1024 + 24 + 136,
    .htotal = 1024 + 24 + 136 + 160,
    .vdisplay = 600,
    .vsync_start = 600 + 3,
    .vsync_end = 600 + 3 + 6,
    .vtotal = 600 + 3 + 6 + 61,
    .vrefresh = 60,
    .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
    };

    static const struct panel_desc osddisplays_osd070t1718_19ts = {
    .modes = &osddisplays_osd070t1718_19ts_mode,
    .num_modes = 1,
    .bpc = 8,
    .size = {
    .width = 223,
    .height = 125,
    },
    .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
    .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
    };

    It's OK,can see PCLK signal.

    kernel log:
    [ 1.556951] omapdss_dss 4832a000.dss: 4832a000.dss supply vdda_video not found, using dummy regulator
    [ 1.566372] omapdss_dss 4832a000.dss: Linked as a consumer to regulator.0
    [ 1.573300] DSS: OMAP DSS rev 2.0
    [ 1.577638] omapdss_dss 4832a000.dss: bound 4832a400.dispc (ops dispc_component_ops)
    [ 1.585971] omapdrm omapdrm.0: DMM not available, disable DMM support
    [ 1.592768] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [ 1.599447] [drm] No driver support for vblank timestamp query.
    [ 1.673753] Console: switching to colour frame buffer device 128x37
    [ 1.696589] omapdrm omapdrm.0: fb0: omapdrm frame buffer device
    [ 1.703333] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [ 1.711029] cpu cpu0: Linked as a consumer to regulator.5
    [ 1.716510] cpu cpu0: Dropping the link to regulator.5
    [ 1.721938] cpu cpu0: Linked as a consumer to regulator.5
    [ 1.728816] omap_gpio 44e07000.gpio: Could not set line 6 debounce to 200000 microseconds (-22)
    [ 1.737589] omap_hsmmc 48060000.mmc: Got CD GPIO
    [ 1.742794] omap_hsmmc 48060000.mmc: Linked as a consumer to regulator.1
    [ 1.776996] hctosys: unable to open rtc device (rtc0)
    [ 1.799032] net eth0: initializing cpsw version 1.15 (0)
    [ 1.831219] mmc1: host does not support reading read-only switch, assuming write-enable
    [ 1.841371] mmc1: new high speed SDHC card at address 59b4
    [ 1.848260] mmcblk1: mmc1:59b4 00000 14.9 GiB
    [ 1.854805] mmcblk1: p1 p2
    [ 1.902789] Micrel KSZ9031 Gigabit PHY 4a101000.mdio:00: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus)
    [ 1.921881] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [ 1.959541] random: fast init done


    root@am437x-evm:~# kmstest --flip
    Connector 0/@46: DPI-1
    Crtc 0/@47 (plane 0/@35): 1024x600 54.030 1024/24/136/160 600/3/6/61 60 (60.08
    Fb 55 1024x600-XR24
    Atomic commit failed when disabling: -13

    3) 1280X800 60P RGB888

    static const struct drm_display_mode osddisplays_osd070t1718_19ts_mode = {
    .clock = 71100,
    .hdisplay = 1280,
    .hsync_start = 1280 + 48,
    .hsync_end = 1280 + 48 + 32,
    .htotal = 1280 + 48 + 32 + 80,
    .vdisplay = 800,
    .vsync_start = 800 + 2,
    .vsync_end = 800 + 2 + 5,
    .vtotal = 800 + 2 + 5 + 16,
    .vrefresh = 60,
    .flags = DRM_MODE_FLAG_NVSYNC | DRM_MODE_FLAG_NHSYNC,
    };

    static const struct panel_desc osddisplays_osd070t1718_19ts = {
    .modes = &osddisplays_osd070t1718_19ts_mode,
    .num_modes = 1,
    .bpc = 8,
    .size = {
    .width = 223,
    .height = 125,
    },
    .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
    .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE,
    };

    It's not OK,can not see PCLK signal .

    log:
    [ 1.556869] omapdss_dss 4832a000.dss: 4832a000.dss supply vdda_video not found, using dummy regulator
    [ 1.566292] omapdss_dss 4832a000.dss: Linked as a consumer to regulator.0
    [ 1.573225] DSS: OMAP DSS rev 2.0
    [ 1.577557] omapdss_dss 4832a000.dss: bound 4832a400.dispc (ops dispc_component_ops)
    [ 1.585888] omapdrm omapdrm.0: DMM not available, disable DMM support
    [ 1.592682] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [ 1.599358] [drm] No driver support for vblank timestamp query.
    [ 1.605641] [drm] Cannot find any crtc or sizes
    [ 1.610995] [drm] Initialized omapdrm 1.0.0 20110917 for omapdrm.0 on minor 0
    [ 1.618651] cpu cpu0: Linked as a consumer to regulator.5
    [ 1.624125] cpu cpu0: Dropping the link to regulator.5
    [ 1.629519] cpu cpu0: Linked as a consumer to regulator.5
    [ 1.636243] omap_gpio 44e07000.gpio: Could not set line 6 debounce to 200000 microseconds (-22)
    [ 1.645108] omap_hsmmc 48060000.mmc: Got CD GPIO
    [ 1.650245] omap_hsmmc 48060000.mmc: Linked as a consumer to regulator.1
    [ 1.682759] hctosys: unable to open rtc device (rtc0)
    [ 1.706197] net eth0: initializing cpsw version 1.15 (0)
    [ 1.738649] mmc1: host does not support reading read-only switch, assuming write-enable
    [ 1.748984] mmc1: new high speed SDHC card at address 59b4
    [ 1.756126] mmcblk1: mmc1:59b4 00000 14.9 GiB
    [ 1.763409] mmcblk1: p1 p2
    [ 1.812671] Micrel KSZ9031 Gigabit PHY 4a101000.mdio:00: attached PHY driver [Micrel KSZ9031 Gigabit PHY] (mii_bus)
    [ 1.831137] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
    [ 2.528042] random: fast init done
    [ 2.649125] [drm] Cannot find any crtc or sizes

    root@am437x-evm:~# kmstest --flip
    terminate called after throwing an instance of 'std::invalid_argument'
    what(): no modes available

    Aborted (core dumped)

    We want to use 1280X800 60p  RGB888 LCD, It seems that ti-processor-sdk-linux-am437x-evm-06.00.00.07 can not support 1280X800 60p  RGB888,or I can do some other configuration for the LCD?

    Best regards,

    Jyuan

  • Hi Juyan,

    I will get back to you on the 1280X800 60p  RGB888 LCD support. Also, before running the "kmstest --flip" test, please disable weston (/etc/initd.d/westop stop).

    Regards,
    Krunal

  • Dear Krunal,
           Thank you for your reply. I stop weston,
    1) 800X480 60p RGB888
    root@am437x-evm:~# systemctl stop weston
    root@am437x-evm:~# kmstest --flip
    Connector 0/@46: DPI-1
    Crtc 0/@47 (plane 0/@35): 800x480 33.000 800/210/30/16 480/22/13/10 60 (59.528
    Fb 51 800x480-XR24
    press enter to exit
    Connector 0: fps 59.531445, slowest 16.89 ms
    Connector 0: fps 59.523043, slowest 16.90 ms
    Connector 0: fps 59.524441, slowest 17.31 ms
    Connector 0: fps 59.524276, slowest 16.89 ms
    Connector 0: fps 59.522553, slowest 16.96 ms
    Connector 0: fps 59.524031, slowest 16.90 ms
    Connector 0: fps 59.525319, slowest 16.86 ms
    Connector 0: fps 59.521721, slowest 17.78 ms
    Connector 0: fps 59.525307, slowest 16.97 ms
    Connector 0: fps 59.523697, slowest 16.86 ms
    Connector 0: fps 59.523533, slowest 16.96 ms
    Connector 0: fps 59.524268, slowest 19.52 ms
    Connector 0: fps 59.522489, slowest 18.92 ms
    Connector 0: fps 59.524694, slowest 16.89 ms

    2)1024X600 60p RGB888
    root@am437x-evm:~# systemctl stop weston
    root@am437x-evm:~# kmstest --flip
    Connector 0/@46: DPI-1
    Crtc 0/@47 (plane 0/@35): 1024x600 54.030 1024/24/136/160 600/3/6/61 60 (60.08
    Fb 51 1024x600-XR24
    press enter to exit
    Connector 0: fps 60.007543, slowest 17.12 ms
    Connector 0: fps 59.999002, slowest 16.72 ms
    Connector 0: fps 60.001903, slowest 17.01 ms
    Connector 0: fps 59.999199, slowest 17.16 ms
    Connector 0: fps 60.000761, slowest 16.73 ms
    Connector 0: fps 59.999774, slowest 17.17 ms
    Connector 0: fps 60.000062, slowest 16.83 ms
    Connector 0: fps 60.000336, slowest 16.77 ms
    Connector 0: fps 60.001186, slowest 17.09 ms
    Connector 0: fps 60.001645, slowest 19.99 ms
    Connector 0: fps 59.997684, slowest 17.12 ms


    3)1280X800 60P RGB888
    root@am437x-evm:~# systemctl stop weston
    root@am437x-evm:~# kmstest --flip
    terminate called after throwing an instance of 'std::invalid_argument'
    what(): no modes available

    Aborted (core dumped)

    Best regards,

    Jyuan

  • Hello Jyuan,

    I have been able to replicate the same error on the AM437EVM using the same timing data you have provided. I have reached out to our driver expert and I will get back to you by the end of this week.

    Regards,
    Krunal

  • Hello Jyuan,

    Please review Advisory 14 in our AM437x silicon errata. Due to the limitation, we have added the following code in our arch/arm/boot/dts/am4372.dtsi file: "max-memory-bandwidth = <230000000>;". Based on your system design, please feel free to increase the bandwidth or remove the bandwidth.

    Regards,
    Krunal