本人初用V3S,想用V3S驱动720x720屏幕。但是遇到了以下的问题。
我用自己画的转接板(好像红蓝和屏幕是反的,但问题不大)连接V3S和RGB接口屏幕。直接烧录荔枝派官方的 Zero_pub_V0.3.gz, 屏幕会亮,但是内容会快速滚动:
我按照官方教程,把LicheePi_Zero_720x720LCD_defconfig的lcd参数改了,显存CONFIG_SUNXI_MAX_FB_SIZE也改了。编译uboot然后用dd烧写到Zero_pub_V0.3.gz烧过的卡里。
然后uboot显示是正常的,照片糊是有点手抖。但是两秒过后启动linux后画面又滚动了。
我根据查的资料理解是:uboot会把屏参数传给linux,所以linux应该不用改?我看了sun8i-v3s-licheepi-zero-dock.dtb 里面也没有分辨率相关的内容。
离线
自问自答一下。我发现自己编译的linux就正常。
后来发现用自己编译的dts替换原来的就可以正常工作。经对比,时钟有一点不同,原厂有panel一项,而自己编译没有。
离线
自问自答一下,顺便如果有人像我一样用到诡异分辨率屏,可以有帮助。
修改 drivers/gpu/drm/panel/panel-simple.c 添加屏信息:
static const struct display_timing tdo_tl040hds20_b1502a_timing = {
.pixelclock = { 36720000, 36720000, 36720000 },
.hactive = { 720, 720, 720 },
.hfront_porch = { 20, 20, 20 },
.hback_porch = { 40, 40, 40 },
.hsync_len = { 20, 20, 20 },
.vactive = { 720, 720, 720 },
.vfront_porch = { 15, 15, 15 },
.vback_porch = { 15, 15, 15 },
.vsync_len = { 15, 15, 15 },
.flags = DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_NEGEDGE |
DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW,
};
static const struct panel_desc tdo_tl040hds20_b1502a_parallel = {
.timings = &tdo_tl040hds20_b1502a_timing,
.num_timings = 1,
.bpc = 6,
.size = {
.width = 72,
.height = 72,
},
.bus_format = MEDIA_BUS_FMT_RGB666_1X18,
};
//static const struct of_device_id platform_of_match[] = {
}, {
.compatible = "tdo,tl040hds20-b1502a",
.data = &tdo_tl040hds20_b1502a_parallel,
把设备树dts里 panel: panel 的 compatible 改成
compatible = "tdo,tl040hds20-b1502a", "simple-panel";
即可
离线