From 3b0fd9d75598584478d1d3f6551f8a8a9696c34e Mon Sep 17 00:00:00 2001 From: Alexandre Courbot Date: Wed, 16 Feb 2011 03:49:01 +0000 Subject: fbdev: sh_mobile_lcdcfb: add backlight support Support for backlight devices controlled through board-specific routines. Backlights can be defined per-channel and follow fbdev directives to switch off as the LCD blanks or is turned on/off. Signed-off-by: Alexandre Courbot Signed-off-by: Paul Mundt --- include/video/sh_mobile_lcdc.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'include') diff --git a/include/video/sh_mobile_lcdc.h b/include/video/sh_mobile_lcdc.h index daabae5817c6..f2e6ab857fa8 100644 --- a/include/video/sh_mobile_lcdc.h +++ b/include/video/sh_mobile_lcdc.h @@ -59,6 +59,8 @@ struct sh_mobile_lcdc_board_cfg { struct sh_mobile_lcdc_sys_bus_ops *sys_ops); void (*display_on)(void *board_data, struct fb_info *info); void (*display_off)(void *board_data); + int (*set_brightness)(void *board_data, int brightness); + int (*get_brightness)(void *board_data); }; struct sh_mobile_lcdc_lcd_size_cfg { /* width and height of panel in mm */ @@ -66,6 +68,12 @@ struct sh_mobile_lcdc_lcd_size_cfg { /* width and height of panel in mm */ unsigned long height; }; +/* backlight info */ +struct sh_mobile_lcdc_bl_info { + const char *name; + int max_brightness; +}; + struct sh_mobile_lcdc_chan_cfg { int chan; int bpp; @@ -76,6 +84,7 @@ struct sh_mobile_lcdc_chan_cfg { int num_cfg; struct sh_mobile_lcdc_lcd_size_cfg lcd_size_cfg; struct sh_mobile_lcdc_board_cfg board_cfg; + struct sh_mobile_lcdc_bl_info bl_info; struct sh_mobile_lcdc_sys_bus_cfg sys_bus_cfg; /* only for SYSn I/F */ }; -- cgit v1.2.3 From 53b5031430bb3a7941b340b453afe4eabeb5340c Mon Sep 17 00:00:00 2001 From: Damian Hobson-Garcia Date: Thu, 24 Feb 2011 05:47:13 +0000 Subject: fbdev: sh_mobile_lcdc: Add YUV framebuffer support Supports YCbCr420sp, YCbCr422sp, and YCbCr44sp, formats (bpp = 12, 16, and 24) respectively. When double-buffering both Y planes appear before the C planes (Y-Y-C-C), as opposed to Y-C-Y-C. Set .nonstd in struct sh_mobile_lcdc_chan_cfg to enable YUV mode, and use .bpp to distiguish between the 3 modes. The value of .nonstd is copied to bits 16-31 of LDDFR in the LCDC and should be set accordingly. .nonstd must be set to 0 for RGB mode. Due to the encoding of YUV data, the framebuffer will clear to green instead of black. In YUV 420 mode, panning is only possible in 2 line increments. Additionally in YUV 420 mode the vertical resolution of the framebuffer must be an even number. Signed-off-by: Damian Hobson-Garcia Signed-off-by: Paul Mundt --- include/video/sh_mobile_lcdc.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include') diff --git a/include/video/sh_mobile_lcdc.h b/include/video/sh_mobile_lcdc.h index f2e6ab857fa8..2c8d369190b3 100644 --- a/include/video/sh_mobile_lcdc.h +++ b/include/video/sh_mobile_lcdc.h @@ -86,6 +86,7 @@ struct sh_mobile_lcdc_chan_cfg { struct sh_mobile_lcdc_board_cfg board_cfg; struct sh_mobile_lcdc_bl_info bl_info; struct sh_mobile_lcdc_sys_bus_cfg sys_bus_cfg; /* only for SYSn I/F */ + int nonstd; }; struct sh_mobile_lcdc_info { -- cgit v1.2.3