From 2645ad16218354a87f6154ca4ef0fac70a98486b Mon Sep 17 00:00:00 2001 From: Darren Etheridge Date: Fri, 23 Aug 2013 16:52:52 -0500 Subject: [PATCH] video: da8xx-fb: support lcdc v2 timing register expansion TI LCD controller version 2 adds some extra bits in a register to increase the available size to represent horizontal timings. This patch allows the fbdev driver to utilize those extra bits. This will become important for driving an HDMI encoder from the lcd controller where some of the VESA/CEA modes require quite large porches. Signed-off-by: Darren Etheridge Signed-off-by: Tomi Valkeinen --- drivers/video/da8xx-fb.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c index 7dfa7a7..9a05ccb 100644 --- a/drivers/video/da8xx-fb.c +++ b/drivers/video/da8xx-fb.c @@ -411,6 +411,21 @@ static void lcd_cfg_horizontal_sync(int back_porch, int pulse_width, | (((front_porch-1) & 0xff) << 16) | (((pulse_width-1) & 0x3f) << 10); lcdc_write(reg, LCD_RASTER_TIMING_0_REG); + + /* + * LCDC Version 2 adds some extra bits that increase the allowable + * size of the horizontal timing registers. + * remember that the registers use 0 to represent 1 so all values + * that get set into register need to be decremented by 1 + */ + if (lcd_revision == LCD_VERSION_2) { + /* Mask off the bits we want to change */ + reg = lcdc_read(LCD_RASTER_TIMING_2_REG) & ~0x780000ff; + reg |= ((front_porch-1) & 0x300) >> 8; + reg |= ((back_porch-1) & 0x300) >> 4; + reg |= ((pulse_width-1) & 0x3c0) << 21; + lcdc_write(reg, LCD_RASTER_TIMING_2_REG); + } } static void lcd_cfg_vertical_sync(int back_porch, int pulse_width, -- 2.7.4