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:/dev/fb0 不使用自定义面板时序创建(omapdrm:找不到任何 CRTC 或大小)

Guru**** 2847400 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1630664/am4378-dev-fb0-not-created-with-custom-panel-timing-omapdrm-cannot-find-any-crtc-or-sizes

器件型号: AM4378

您好、

我当前正在基于 AM437X-gp-EVM 在定制 AM437x 板上移植 Linux 内核。

我正在使用 TI SDK (ti-processor-sdk-linux-AM437X-evm-11.02.05.02-linux-x86-Install.bin)。

我修改了“panel-simple.c"以“以连接 LCD、但未创建/dev/fb。

在以下配置下、尽管时钟和时序不正确、但仍会创建/dev/fb0。

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,
    .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 |
        DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE,
    .connector_type = DRM_MODE_CONNECTOR_DPI,
};

 

但是、当我将其更改为以下配置时、不会创建/dev/fb0。

static const struct drm_display_mode osddisplays_osd070t1718_19ts_mode  = {
    .clock = 71100,
    .hdisplay = 1280,
    .hsync_start = 1280 + 80,        // H front porch
    .hsync_end   = 1280 + 80 + 40,   // H sync width
    .htotal      = 1440,
    .vdisplay    = 800,
    .vsync_start = 800 + 10,         // V front porch
    .vsync_end   = 800 + 10 + 6,     // V sync width
    .vtotal      = 823,
    .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 = 217,   // 216.96 mm
        .height = 136,  // 135.60 mm
    },
    .bus_format = MEDIA_BUS_FMT_RGB888_1X24,
    .bus_flags = DRM_BUS_FLAG_DE_HIGH | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE |
        DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE,
    .connector_type = DRM_MODE_CONNECTOR_DPI,
};

内核日志显示以下消息:

[  3.086761] omapdrm omapdrm.0:[DRM]找不到任何 CRTC 或大小
[  3.094019] omapdrm omapdrm.0:[DRM]找不到任何 CRTC 或大小

 

为什么会发生这种情况、我如何解决这种现象?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kim:
    这个错误似乎很奇怪,让我尝试复制这个在我的结束,并得到你在他的一周结束。
    然后、建议您检查是否 在不工作的参数实验中错过了设置 CONFIG_DRM_OMAP、以及两个测试之间是否有任何其他差异。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Kim:
    出现此问题的原因是  arch/arm/boot/dts/ti/OMAP-L4.dtsi 中的最大存储器带宽属性。
    DSS 的预期存储器带宽使用量为
    h_total*v_total*4 字节*fps
    =1440*823*4*60
    =285MB/s

    此值大于默认的 230 MB/s
    尝试将其设置为“max-memory-bandwidth =<300000000>;“、它应该会起作用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Mittal、

    当我按照您的指示操作时、它会正常工作。

    非常感谢!