summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c
diff options
context:
space:
mode:
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.c38
1 files changed, 30 insertions, 8 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 37ac903418..5c268f42b8 100644
--- a/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c
+++ b/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c
@@ -26,7 +26,8 @@
26 26
27#define LCDADDR(x, y) (&lcd_framebuffer[(y)][(x)]) 27#define LCDADDR(x, y) (&lcd_framebuffer[(y)][(x)])
28 28
29static volatile bool lcd_on = true; 29static bool lcd_on = true;
30static bool lcd_powered = true;
30static unsigned lcd_yuv_options = 0; 31static unsigned lcd_yuv_options = 0;
31/* 32/*
32** This is imported from lcd-16bit.c 33** This is imported from lcd-16bit.c
@@ -174,6 +175,8 @@ void LCD_SPI_powerdown(void)
174 0,0x04,1,0x00 175 0,0x04,1,0x00
175 }; 176 };
176 177
178 lcd_powered = false;
179
177 LCD_SPI_start(); 180 LCD_SPI_start();
178 181
179 LCD_SPI_send(powerdncmd, sizeof(powerdncmd)); 182 LCD_SPI_send(powerdncmd, sizeof(powerdncmd));
@@ -198,6 +201,8 @@ void LCD_SPI_powerup(void)
198 LCD_SPI_send(powerupcmd, sizeof(powerupcmd)); 201 LCD_SPI_send(powerupcmd, sizeof(powerupcmd));
199 202
200 LCD_SPI_stop(); 203 LCD_SPI_stop();
204
205 lcd_powered = true;
201} 206}
202 207
203void LCD_SPI_init(void) 208void LCD_SPI_init(void)
@@ -266,23 +271,40 @@ void lcd_init_device(void)
266 LCD_SPI_init(); 271 LCD_SPI_init();
267} 272}
268 273
274void lcd_sleep(void)
275{
276 if (lcd_powered)
277 {
278 /* "not powered" implies "disabled" */
279 if (lcd_on)
280 lcd_enable(false);
281
282 LCD_SPI_powerdown();
283 }
284}
285
269void lcd_enable(bool state) 286void lcd_enable(bool state)
270{ 287{
288 if (state == lcd_on)
289 return;
290
271 if(state) 291 if(state)
272 { 292 {
273 if(!lcd_on) 293 /* "enabled" implies "powered" */
294 if (!lcd_powered)
274 { 295 {
275 lcd_on = true;
276 lcd_update();
277 LCD_SPI_powerup(); 296 LCD_SPI_powerup();
297 /* Wait long enough for a frame to be written - yes, it
298 * takes awhile. */
299 sleep(HZ/5);
278 } 300 }
301
302 lcd_on = true;
303 lcd_update();
279 } 304 }
280 else 305 else
281 { 306 {
282 if(lcd_on) { 307 lcd_on = false;
283 lcd_on = false;
284 LCD_SPI_powerdown();
285 }
286 } 308 }
287} 309}
288 310