From c56b9750fec7752e0c73f46f1c6686c048e93688 Mon Sep 17 00:00:00 2001 From: Nick Date: Fri, 17 May 2019 15:30:15 +0800 Subject: [PATCH] osd: support flexible length of fb size --- drivers/amlogic/media/osd/osd_fb.c | 46 ++++++++++++++++++++++++++++++-------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/drivers/amlogic/media/osd/osd_fb.c b/drivers/amlogic/media/osd/osd_fb.c index e409c0e..1cf41ef 100644 --- a/drivers/amlogic/media/osd/osd_fb.c +++ b/drivers/amlogic/media/osd/osd_fb.c @@ -384,6 +384,22 @@ struct ion_handle *fb_ion_handle[OSD_COUNT][OSD_MAX_BUF_NUM]; static int osd_cursor(struct fb_info *fbi, struct fb_cursor *var); +static int osd_set_fb_var(int index, const struct vinfo_s *vinfo) +{ + if ((vinfo->width < 0) || (vinfo->height < 0)) { + pr_err("invalid vinfo\n"); + return 1; + } + + fb_def_var[index].xres = vinfo->width; + fb_def_var[index].yres = vinfo->height; + fb_def_var[index].xres_virtual = vinfo->width; + fb_def_var[index].yres_virtual = vinfo->height * 2; + fb_def_var[index].bits_per_pixel = 32; + + return 0; +} + phys_addr_t get_fb_rmem_paddr(int index) { if (index < 0 || index > 1) @@ -4219,16 +4235,28 @@ static int osd_probe(struct platform_device *pdev) if (ret) osd_log_info("not found display_size_default\n"); else { - fb_def_var[index].xres = var_screeninfo[0]; - fb_def_var[index].yres = var_screeninfo[1]; - fb_def_var[index].xres_virtual = - var_screeninfo[2]; - fb_def_var[index].yres_virtual = - var_screeninfo[3]; - fb_def_var[index].bits_per_pixel = - var_screeninfo[4]; - osd_log_info("init fbdev bpp is:%d\n", + if (osd_set_fb_var(index, vinfo)) { + /* no available vinfo, set default */ + fb_def_var[index].xres = + var_screeninfo[0]; + fb_def_var[index].yres = + var_screeninfo[1]; + fb_def_var[index].xres_virtual = + var_screeninfo[2]; + fb_def_var[index].yres_virtual = + var_screeninfo[3]; + fb_def_var[index].bits_per_pixel = + var_screeninfo[4]; + } + pr_info("fb def : %d %d %d %d %d\n", + fb_def_var[index].xres, + fb_def_var[index].yres, + fb_def_var[index].xres_virtual, + fb_def_var[index].yres_virtual, fb_def_var[index].bits_per_pixel); + pr_info("init fbdev bpp is:%d\n", + fb_def_var[index].bits_per_pixel); + if (fb_def_var[index].bits_per_pixel > 32) fb_def_var[index].bits_per_pixel = 32; } -- 2.7.4