器件型号: 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 或大小
为什么会发生这种情况、我如何解决这种现象?