forked from Minki/linux
video: export sh_mobile_lcdc panel size
Export the LCD panel size for sh_mobile_lcdc boards. This allows us to perform dpi and screen aspect ratio calculations in user space. Signed-off-by: Magnus Damm <damm@igel.co.jp> Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
0c13bf1e7c
commit
ce9c008c8b
@ -140,6 +140,10 @@ static struct sh_mobile_lcdc_info lcdc_info = {
|
|||||||
.vsync_len = 1,
|
.vsync_len = 1,
|
||||||
.sync = 0, /* hsync and vsync are active low */
|
.sync = 0, /* hsync and vsync are active low */
|
||||||
},
|
},
|
||||||
|
.lcd_size_cfg = { /* 7.0 inch */
|
||||||
|
.width = 152,
|
||||||
|
.height = 91,
|
||||||
|
},
|
||||||
.board_cfg = {
|
.board_cfg = {
|
||||||
.display_on = ap320_wvga_power_on,
|
.display_on = ap320_wvga_power_on,
|
||||||
},
|
},
|
||||||
|
@ -224,6 +224,10 @@ static struct sh_mobile_lcdc_info sh_mobile_lcdc_info = {
|
|||||||
.vsync_len = 2,
|
.vsync_len = 2,
|
||||||
.sync = 0,
|
.sync = 0,
|
||||||
},
|
},
|
||||||
|
.lcd_size_cfg = { /* 7.0 inch */
|
||||||
|
.width = 152,
|
||||||
|
.height = 91,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_SH_MIGOR_QVGA
|
#ifdef CONFIG_SH_MIGOR_QVGA
|
||||||
@ -245,6 +249,10 @@ static struct sh_mobile_lcdc_info sh_mobile_lcdc_info = {
|
|||||||
.vsync_len = 2,
|
.vsync_len = 2,
|
||||||
.sync = FB_SYNC_HOR_HIGH_ACT,
|
.sync = FB_SYNC_HOR_HIGH_ACT,
|
||||||
},
|
},
|
||||||
|
.lcd_size_cfg = { /* 2.4 inch */
|
||||||
|
.width = 49,
|
||||||
|
.height = 37,
|
||||||
|
},
|
||||||
.board_cfg = {
|
.board_cfg = {
|
||||||
.setup_sys = migor_lcd_qvga_setup,
|
.setup_sys = migor_lcd_qvga_setup,
|
||||||
},
|
},
|
||||||
|
@ -47,12 +47,18 @@ struct sh_mobile_lcdc_board_cfg {
|
|||||||
void (*display_off)(void *board_data);
|
void (*display_off)(void *board_data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct sh_mobile_lcdc_lcd_size_cfg { /* width and height of panel in mm */
|
||||||
|
unsigned long width;
|
||||||
|
unsigned long height;
|
||||||
|
};
|
||||||
|
|
||||||
struct sh_mobile_lcdc_chan_cfg {
|
struct sh_mobile_lcdc_chan_cfg {
|
||||||
int chan;
|
int chan;
|
||||||
int bpp;
|
int bpp;
|
||||||
int interface_type; /* selects RGBn or SYSn I/F, see above */
|
int interface_type; /* selects RGBn or SYSn I/F, see above */
|
||||||
int clock_divider;
|
int clock_divider;
|
||||||
struct fb_videomode lcd_cfg;
|
struct fb_videomode lcd_cfg;
|
||||||
|
struct sh_mobile_lcdc_lcd_size_cfg lcd_size_cfg;
|
||||||
struct sh_mobile_lcdc_board_cfg board_cfg;
|
struct sh_mobile_lcdc_board_cfg board_cfg;
|
||||||
struct sh_mobile_lcdc_sys_bus_cfg sys_bus_cfg; /* only for SYSn I/F */
|
struct sh_mobile_lcdc_sys_bus_cfg sys_bus_cfg; /* only for SYSn I/F */
|
||||||
};
|
};
|
||||||
|
@ -595,6 +595,8 @@ static int __init sh_mobile_lcdc_probe(struct platform_device *pdev)
|
|||||||
info->fbops = &sh_mobile_lcdc_ops;
|
info->fbops = &sh_mobile_lcdc_ops;
|
||||||
info->var.xres = info->var.xres_virtual = cfg->lcd_cfg.xres;
|
info->var.xres = info->var.xres_virtual = cfg->lcd_cfg.xres;
|
||||||
info->var.yres = info->var.yres_virtual = cfg->lcd_cfg.yres;
|
info->var.yres = info->var.yres_virtual = cfg->lcd_cfg.yres;
|
||||||
|
info->var.width = cfg->lcd_size_cfg.width;
|
||||||
|
info->var.height = cfg->lcd_size_cfg.height;
|
||||||
info->var.activate = FB_ACTIVATE_NOW;
|
info->var.activate = FB_ACTIVATE_NOW;
|
||||||
error = sh_mobile_lcdc_set_bpp(&info->var, cfg->bpp);
|
error = sh_mobile_lcdc_set_bpp(&info->var, cfg->bpp);
|
||||||
if (error)
|
if (error)
|
||||||
|
Loading…
Reference in New Issue
Block a user