diff options
Diffstat (limited to 'firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c')
-rw-r--r-- | firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c b/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c index 9fb2a90c42..ac8dc380e2 100644 --- a/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c +++ b/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c | |||
@@ -244,6 +244,24 @@ static void LCD_SPI_init(void) | |||
244 | /* LCD init */ | 244 | /* LCD init */ |
245 | void lcd_init_device(void) | 245 | void lcd_init_device(void) |
246 | { | 246 | { |
247 | #ifdef BOOTLOADER | ||
248 | int i; | ||
249 | /* When the Rockbox bootloader starts, we are changing framebuffer address, | ||
250 | but we don't want what's shown on the LCD to change until we do an | ||
251 | lcd_update(), so copy the data from the old framebuffer to the new one */ | ||
252 | unsigned short *buf = (unsigned short*)FRAME; | ||
253 | |||
254 | memcpy(FRAME, (short *)((LCDSADDR1)<<1), 320*240*2); | ||
255 | |||
256 | /* The Rockbox bootloader is transitioning from RGB555I to RGB565 mode | ||
257 | so convert the frambuffer data accordingly */ | ||
258 | for(i=0; i< 320*240; i++){ | ||
259 | *buf = ((*buf>>1) & 0x1F) | (*buf & 0xffc0); | ||
260 | buf++; | ||
261 | } | ||
262 | #endif | ||
263 | |||
264 | |||
247 | /* Set pins up */ | 265 | /* Set pins up */ |
248 | 266 | ||
249 | GPHUP &= 0x600; | 267 | GPHUP &= 0x600; |