diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/lcd-16bit.c | 21 | ||||
-rw-r--r-- | firmware/export/kernel.h | 1 | ||||
-rw-r--r-- | firmware/export/lcd.h | 4 | ||||
-rw-r--r-- | firmware/target/arm/iriver/h10/lcd-h10_20gb.c | 1 | ||||
-rw-r--r-- | firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c | 1 | ||||
-rw-r--r-- | firmware/target/arm/sandisk/sansa-e200/lcd-e200.c | 1 | ||||
-rw-r--r-- | firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c | 1 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c | 1 | ||||
-rw-r--r-- | firmware/target/coldfire/iaudio/x5/lcd-x5.c | 1 | ||||
-rw-r--r-- | firmware/target/coldfire/iriver/h300/lcd-h300.c | 1 |
10 files changed, 33 insertions, 0 deletions
diff --git a/firmware/drivers/lcd-16bit.c b/firmware/drivers/lcd-16bit.c index c91d222830..020d6bf63a 100644 --- a/firmware/drivers/lcd-16bit.c +++ b/firmware/drivers/lcd-16bit.c | |||
@@ -49,6 +49,10 @@ fb_data lcd_framebuffer[LCD_FBHEIGHT][LCD_FBWIDTH] | |||
49 | static fb_data* lcd_backdrop = NULL; | 49 | static fb_data* lcd_backdrop = NULL; |
50 | static long lcd_backdrop_offset IDATA_ATTR = 0; | 50 | static long lcd_backdrop_offset IDATA_ATTR = 0; |
51 | 51 | ||
52 | #ifdef HAVE_LCD_ENABLE | ||
53 | static void (*lcd_enable_hook)(void) = NULL; | ||
54 | #endif | ||
55 | |||
52 | static struct viewport default_vp = | 56 | static struct viewport default_vp = |
53 | { | 57 | { |
54 | .x = 0, | 58 | .x = 0, |
@@ -84,6 +88,23 @@ void lcd_init(void) | |||
84 | scroll_init(); | 88 | scroll_init(); |
85 | } | 89 | } |
86 | 90 | ||
91 | /*** Helpers - consolidate optional code ***/ | ||
92 | #ifdef HAVE_LCD_ENABLE | ||
93 | void lcd_set_enable_hook(void (*enable_hook)(void)) | ||
94 | { | ||
95 | lcd_enable_hook = enable_hook; | ||
96 | } | ||
97 | |||
98 | /* To be called by target driver after enabling display and refreshing it */ | ||
99 | void lcd_call_enable_hook(void) | ||
100 | { | ||
101 | void (*enable_hook)(void) = lcd_enable_hook; | ||
102 | |||
103 | if (enable_hook != NULL) | ||
104 | enable_hook(); | ||
105 | } | ||
106 | #endif | ||
107 | |||
87 | /*** Viewports ***/ | 108 | /*** Viewports ***/ |
88 | 109 | ||
89 | void lcd_set_viewport(struct viewport* vp) | 110 | void lcd_set_viewport(struct viewport* vp) |
diff --git a/firmware/export/kernel.h b/firmware/export/kernel.h index 60c37bd3f1..88f3b80cdc 100644 --- a/firmware/export/kernel.h +++ b/firmware/export/kernel.h | |||
@@ -45,6 +45,7 @@ | |||
45 | #define SYS_EVENT_CLS_FILESYS 3 | 45 | #define SYS_EVENT_CLS_FILESYS 3 |
46 | #define SYS_EVENT_CLS_PLUG 4 | 46 | #define SYS_EVENT_CLS_PLUG 4 |
47 | #define SYS_EVENT_CLS_MISC 5 | 47 | #define SYS_EVENT_CLS_MISC 5 |
48 | #define SYS_EVENT_CLS_PRIVATE 7 /* For use inside plugins */ | ||
48 | /* make sure SYS_EVENT_CLS_BITS has enough range */ | 49 | /* make sure SYS_EVENT_CLS_BITS has enough range */ |
49 | 50 | ||
50 | /* Bit 31->|S|c...c|i...i| */ | 51 | /* Bit 31->|S|c...c|i...i| */ |
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 3e0ec780d2..45a6850db9 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h | |||
@@ -341,6 +341,10 @@ void lcd_poweroff(void); | |||
341 | /* Enable/disable the main display. */ | 341 | /* Enable/disable the main display. */ |
342 | extern void lcd_enable(bool on); | 342 | extern void lcd_enable(bool on); |
343 | extern bool lcd_enabled(void); | 343 | extern bool lcd_enabled(void); |
344 | /* Register a hook that is called when the lcd is powered and after the | ||
345 | * framebuffer data is synchronized */ | ||
346 | void lcd_set_enable_hook(void (*enable_hook)(void)); | ||
347 | void lcd_call_enable_hook(void); | ||
344 | #endif /* HAVE_LCD_ENABLE */ | 348 | #endif /* HAVE_LCD_ENABLE */ |
345 | 349 | ||
346 | #ifdef HAVE_LCD_SLEEP | 350 | #ifdef HAVE_LCD_SLEEP |
diff --git a/firmware/target/arm/iriver/h10/lcd-h10_20gb.c b/firmware/target/arm/iriver/h10/lcd-h10_20gb.c index 1ee43c390f..7d942662b8 100644 --- a/firmware/target/arm/iriver/h10/lcd-h10_20gb.c +++ b/firmware/target/arm/iriver/h10/lcd-h10_20gb.c | |||
@@ -361,6 +361,7 @@ void lcd_enable(bool on) | |||
361 | /* Probably out of sync and we don't wanna pepper the code with | 361 | /* Probably out of sync and we don't wanna pepper the code with |
362 | lcd_update() calls for this. */ | 362 | lcd_update() calls for this. */ |
363 | lcd_update(); | 363 | lcd_update(); |
364 | lcd_call_enable_hook(); | ||
364 | } | 365 | } |
365 | else | 366 | else |
366 | { | 367 | { |
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 7484cae94e..1833639cf0 100644 --- a/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c +++ b/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c | |||
@@ -287,6 +287,7 @@ void lcd_enable(bool state) | |||
287 | 287 | ||
288 | lcd_on = true; | 288 | lcd_on = true; |
289 | lcd_update(); | 289 | lcd_update(); |
290 | lcd_call_enable_hook(); | ||
290 | } | 291 | } |
291 | else | 292 | else |
292 | { | 293 | { |
diff --git a/firmware/target/arm/sandisk/sansa-e200/lcd-e200.c b/firmware/target/arm/sandisk/sansa-e200/lcd-e200.c index acdb2c9956..9f8f580802 100644 --- a/firmware/target/arm/sandisk/sansa-e200/lcd-e200.c +++ b/firmware/target/arm/sandisk/sansa-e200/lcd-e200.c | |||
@@ -436,6 +436,7 @@ void lcd_enable(bool on) | |||
436 | DEV_EN |= DEV_LCD; /* Enable LCD controller */ | 436 | DEV_EN |= DEV_LCD; /* Enable LCD controller */ |
437 | lcd_display_on(); /* Turn on display */ | 437 | lcd_display_on(); /* Turn on display */ |
438 | lcd_update(); /* Resync display */ | 438 | lcd_update(); /* Resync display */ |
439 | lcd_call_enable_hook(); | ||
439 | LCD_REG_6 |= 1; /* Restart DMA */ | 440 | LCD_REG_6 |= 1; /* Restart DMA */ |
440 | sleep(HZ/50); /* Wait for a frame to be written */ | 441 | sleep(HZ/50); /* Wait for a frame to be written */ |
441 | } | 442 | } |
diff --git a/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c b/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c index 8a268db4cc..062b178a05 100644 --- a/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c +++ b/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c | |||
@@ -212,6 +212,7 @@ void lcd_enable(bool on) | |||
212 | lcd_display_on(); | 212 | lcd_display_on(); |
213 | LCDC_CTRL |= 1; /* controller enable */ | 213 | LCDC_CTRL |= 1; /* controller enable */ |
214 | lcd_update(); /* Resync display */ | 214 | lcd_update(); /* Resync display */ |
215 | lcd_call_enable_hook(); | ||
215 | } | 216 | } |
216 | else | 217 | else |
217 | { | 218 | { |
diff --git a/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c b/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c index a2634f0de7..b4b76d4241 100644 --- a/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c +++ b/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c | |||
@@ -235,6 +235,7 @@ return; | |||
235 | { | 235 | { |
236 | lcd_display_on(false); /* Turn on display */ | 236 | lcd_display_on(false); /* Turn on display */ |
237 | lcd_update(); /* Resync display */ | 237 | lcd_update(); /* Resync display */ |
238 | lcd_call_enable_hook(); | ||
238 | } | 239 | } |
239 | else | 240 | else |
240 | { | 241 | { |
diff --git a/firmware/target/coldfire/iaudio/x5/lcd-x5.c b/firmware/target/coldfire/iaudio/x5/lcd-x5.c index 19faf0474d..5aecb366ca 100644 --- a/firmware/target/coldfire/iaudio/x5/lcd-x5.c +++ b/firmware/target/coldfire/iaudio/x5/lcd-x5.c | |||
@@ -383,6 +383,7 @@ void lcd_enable(bool on) | |||
383 | /* Probably out of sync and we don't wanna pepper the code with | 383 | /* Probably out of sync and we don't wanna pepper the code with |
384 | lcd_update() calls for this. */ | 384 | lcd_update() calls for this. */ |
385 | lcd_update(); | 385 | lcd_update(); |
386 | lcd_call_enable_hook(); | ||
386 | } | 387 | } |
387 | else | 388 | else |
388 | { | 389 | { |
diff --git a/firmware/target/coldfire/iriver/h300/lcd-h300.c b/firmware/target/coldfire/iriver/h300/lcd-h300.c index 5081366d41..61d0a6cabd 100644 --- a/firmware/target/coldfire/iriver/h300/lcd-h300.c +++ b/firmware/target/coldfire/iriver/h300/lcd-h300.c | |||
@@ -261,6 +261,7 @@ void lcd_enable(bool on) | |||
261 | if(on) | 261 | if(on) |
262 | { | 262 | { |
263 | _display_on(); | 263 | _display_on(); |
264 | lcd_call_enable_hook(); | ||
264 | } | 265 | } |
265 | else | 266 | else |
266 | { | 267 | { |