在跟 AI 对话了一周后仍未解决,几乎要放弃了,想到 V 友们都是大佬,所以来求帮助了。
800 * 1280 的 mipi屏幕,采用 LVGL显示,需要旋转实现横屏显示,因为 DRM当前 CRTC 绑定的 plane 不支持旋转,所以采用 frambuffer 显示。
目前问题:
/** Default display refresh, input device read and animation step period. */
#define LV_DEF_REFR_PERIOD 33 /**< [ms] */
/** Driver for /dev/fb */
#define LV_USE_LINUX_FBDEV 1
#if LV_USE_LINUX_FBDEV
#define LV_LINUX_FBDEV_BSD 0
#define LV_LINUX_FBDEV_RENDER_MODE LV_DISPLAY_RENDER_MODE_PARTIAL
#define LV_LINUX_FBDEV_BUFFER_COUNT 2
#define LV_LINUX_FBDEV_BUFFER_SIZE 1280 * 400
#define LV_LINUX_FBDEV_MMAP 1
#endif
// 修改 rockchip_vop2_reg.c 中 plane_mask 对应的 rk3568_vp_plane_mask ,命令 modetest -M rockchip 得到的信息并无变化
static const struct vop2_data rk3568_vop = {
.version = VOP_VERSION_RK3568,
.nr_vps = 3,
.nr_mixers = 5,
.nr_layers = 6,
.nr_gammas = 1,
.max_input = { 4096, 2304 },
.max_output = { 4096, 2304 },
.ctrl = &rk3568_vop_ctrl,
.sys_grf = &rk3568_sys_grf_ctrl,
.axi_intr = rk3568_vop_axi_intr,
.nr_axi_intr = ARRAY_SIZE(rk3568_vop_axi_intr),
.vp = rk3568_vop_video_ports,
.wb = &rk3568_vop_wb_data,
.layer = rk3568_vop_layers,
.win = rk3568_vop_win_data,
.win_size = ARRAY_SIZE(rk3568_vop_win_data),
.dump_regs = rk3568_dump_regs,
.dump_regs_size = ARRAY_SIZE(rk3568_dump_regs),
.plane_mask = rk3568_vp_plane_mask[0],
.plane_mask_base = RK3568_PLANE_MASK_BASE,
};
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.