| (((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,