summaryrefslogtreecommitdiff
path: root/firmware/target/arm
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm')
-rw-r--r--firmware/target/arm/as3525/sansa-c200v2/lcd-c200v2.c4
-rw-r--r--firmware/target/arm/as3525/sansa-clip/lcd-ssd1303.c23
-rw-r--r--firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c4
-rw-r--r--firmware/target/arm/as3525/sansa-fuze/lcd-fuze.c3
-rw-r--r--firmware/target/arm/imx31/gigabeat-s/lcd-imx31.c4
-rw-r--r--firmware/target/arm/ipod/video/lcd-video.c5
-rw-r--r--firmware/target/arm/iriver/h10/lcd-h10_20gb.c4
-rw-r--r--firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c4
-rw-r--r--firmware/target/arm/sandisk/sansa-e200/lcd-e200.c4
-rw-r--r--firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c4
-rw-r--r--firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c4
-rw-r--r--firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c4
12 files changed, 43 insertions, 24 deletions
diff --git a/firmware/target/arm/as3525/sansa-c200v2/lcd-c200v2.c b/firmware/target/arm/as3525/sansa-c200v2/lcd-c200v2.c
index 2fc3e1f6c5..88adcd9d96 100644
--- a/firmware/target/arm/as3525/sansa-c200v2/lcd-c200v2.c
+++ b/firmware/target/arm/as3525/sansa-c200v2/lcd-c200v2.c
@@ -322,7 +322,7 @@ void lcd_enable(bool on)
322 if(on) 322 if(on)
323 { 323 {
324 _display_on(); 324 _display_on();
325 lcd_call_enable_hook(); 325 lcd_activation_call_hook();
326 } 326 }
327 else 327 else
328 { 328 {
@@ -332,7 +332,7 @@ void lcd_enable(bool on)
332 } 332 }
333} 333}
334 334
335bool lcd_enabled(void) 335bool lcd_active(void)
336{ 336{
337 return display_on; 337 return display_on;
338} 338}
diff --git a/firmware/target/arm/as3525/sansa-clip/lcd-ssd1303.c b/firmware/target/arm/as3525/sansa-clip/lcd-ssd1303.c
index bfa02e796d..640f6694c9 100644
--- a/firmware/target/arm/as3525/sansa-clip/lcd-ssd1303.c
+++ b/firmware/target/arm/as3525/sansa-clip/lcd-ssd1303.c
@@ -159,22 +159,43 @@ void lcd_set_flip(bool yesno)
159 } 159 }
160} 160}
161 161
162#ifdef HAVE_LCD_ENABLE
163static void (*lcd_activation_hook)(void) = NULL;
164
165void lcd_activation_set_hook(void (*func)(void))
166{
167 lcd_activation_hook = func;
168}
169
170void lcd_activation_call_hook(void)
171{
172 void (*func)(void) = lcd_activation_hook;
173
174 if (func != NULL)
175 func();
176}
177
178
162void lcd_enable(bool enable) 179void lcd_enable(bool enable)
163{ 180{
164 if(display_on == enable) 181 if(display_on == enable)
165 return; 182 return;
166 183
167 if( (display_on = enable) ) /* simple '=' is not a typo ! */ 184 if( (display_on = enable) ) /* simple '=' is not a typo ! */
185 {
168 lcd_write_command(LCD_SET_DISPLAY_ON); 186 lcd_write_command(LCD_SET_DISPLAY_ON);
187 lcd_activation_call_hook();
188 }
169 else 189 else
170 lcd_write_command(LCD_SET_DISPLAY_OFF); 190 lcd_write_command(LCD_SET_DISPLAY_OFF);
171} 191}
172 192
173bool lcd_enabled(void) 193bool lcd_active(void)
174{ 194{
175 return display_on; 195 return display_on;
176} 196}
177 197
198#endif
178 199
179/* LCD init, largely based on what OF does */ 200/* LCD init, largely based on what OF does */
180void lcd_init_device(void) 201void lcd_init_device(void)
diff --git a/firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c b/firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c
index 57d5649570..8715622717 100644
--- a/firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c
+++ b/firmware/target/arm/as3525/sansa-e200v2/lcd-e200v2.c
@@ -328,7 +328,7 @@ void lcd_enable(bool on)
328 if(on) 328 if(on)
329 { 329 {
330 _display_on(); 330 _display_on();
331 lcd_call_enable_hook(); 331 lcd_activation_call_hook();
332 } 332 }
333 else 333 else
334 { 334 {
@@ -338,7 +338,7 @@ void lcd_enable(bool on)
338 } 338 }
339} 339}
340 340
341bool lcd_enabled(void) 341bool lcd_active(void)
342{ 342{
343 return display_on; 343 return display_on;
344} 344}
diff --git a/firmware/target/arm/as3525/sansa-fuze/lcd-fuze.c b/firmware/target/arm/as3525/sansa-fuze/lcd-fuze.c
index 44451133ca..5196784a2f 100644
--- a/firmware/target/arm/as3525/sansa-fuze/lcd-fuze.c
+++ b/firmware/target/arm/as3525/sansa-fuze/lcd-fuze.c
@@ -206,6 +206,7 @@ void lcd_enable(bool on)
206 /* a bit of delay before returning to 206 /* a bit of delay before returning to
207 * avoid irritating flash on backlight on */ 207 * avoid irritating flash on backlight on */
208 while(delay--); 208 while(delay--);
209 lcd_activation_call_hook();
209 210
210 } 211 }
211 else 212 else
@@ -217,7 +218,7 @@ void lcd_enable(bool on)
217 } 218 }
218} 219}
219 220
220bool lcd_enabled(void) 221bool lcd_active(void)
221{ 222{
222 return display_on; 223 return display_on;
223} 224}
diff --git a/firmware/target/arm/imx31/gigabeat-s/lcd-imx31.c b/firmware/target/arm/imx31/gigabeat-s/lcd-imx31.c
index 47834b3b19..bddf03c5f6 100644
--- a/firmware/target/arm/imx31/gigabeat-s/lcd-imx31.c
+++ b/firmware/target/arm/imx31/gigabeat-s/lcd-imx31.c
@@ -121,7 +121,7 @@ void lcd_enable(bool state)
121 lcd_powered = true; 121 lcd_powered = true;
122 lcd_on = true; 122 lcd_on = true;
123 lcd_update(); 123 lcd_update();
124 lcd_call_enable_hook(); 124 lcd_activation_call_hook();
125 } 125 }
126 else 126 else
127 { 127 {
@@ -129,7 +129,7 @@ void lcd_enable(bool state)
129 } 129 }
130} 130}
131 131
132bool lcd_enabled(void) 132bool lcd_active(void)
133{ 133{
134 return lcd_on; 134 return lcd_on;
135} 135}
diff --git a/firmware/target/arm/ipod/video/lcd-video.c b/firmware/target/arm/ipod/video/lcd-video.c
index d1701ea3d7..c0e98cf53c 100644
--- a/firmware/target/arm/ipod/video/lcd-video.c
+++ b/firmware/target/arm/ipod/video/lcd-video.c
@@ -575,10 +575,7 @@ void lcd_awake(void)
575 lcd_state.state = LCD_INITIAL; 575 lcd_state.state = LCD_INITIAL;
576 tick_add_task(&lcd_tick); 576 tick_add_task(&lcd_tick);
577 lcd_state.display_on = true; 577 lcd_state.display_on = true;
578 /* Note that only the RGB data from lcd_framebuffer has been 578 lcd_activation_call_hook();
579 displayed. If YUV data was displayed, it needs to be updated
580 now. (eg. see lcd_call_enable_hook())
581 */
582 } 579 }
583 mutex_unlock(&lcdstate_lock); 580 mutex_unlock(&lcdstate_lock);
584} 581}
diff --git a/firmware/target/arm/iriver/h10/lcd-h10_20gb.c b/firmware/target/arm/iriver/h10/lcd-h10_20gb.c
index ffd8ab69ec..03a398af8d 100644
--- a/firmware/target/arm/iriver/h10/lcd-h10_20gb.c
+++ b/firmware/target/arm/iriver/h10/lcd-h10_20gb.c
@@ -363,7 +363,7 @@ void lcd_enable(bool on)
363 /* Probably out of sync and we don't wanna pepper the code with 363 /* Probably out of sync and we don't wanna pepper the code with
364 lcd_update() calls for this. */ 364 lcd_update() calls for this. */
365 lcd_update(); 365 lcd_update();
366 lcd_call_enable_hook(); 366 lcd_activation_call_hook();
367 } 367 }
368 else 368 else
369 { 369 {
@@ -371,7 +371,7 @@ void lcd_enable(bool on)
371 } 371 }
372} 372}
373 373
374bool lcd_enabled(void) 374bool lcd_active(void)
375{ 375{
376 return display_on; 376 return display_on;
377} 377}
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 d9a28d152f..fd52eda5e9 100644
--- a/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c
+++ b/firmware/target/arm/s3c2440/gigabeat-fx/lcd-meg-fx.c
@@ -42,7 +42,7 @@ extern struct viewport* current_vp;
42extern void lcd_copy_buffer_rect(fb_data *dst, const fb_data *src, 42extern void lcd_copy_buffer_rect(fb_data *dst, const fb_data *src,
43 int width, int height); 43 int width, int height);
44 44
45bool lcd_enabled(void) 45bool lcd_active(void)
46{ 46{
47 return lcd_on; 47 return lcd_on;
48} 48}
@@ -308,7 +308,7 @@ void lcd_enable(bool state)
308 308
309 lcd_on = true; 309 lcd_on = true;
310 lcd_update(); 310 lcd_update();
311 lcd_call_enable_hook(); 311 lcd_activation_call_hook();
312 } 312 }
313 else 313 else
314 { 314 {
diff --git a/firmware/target/arm/sandisk/sansa-e200/lcd-e200.c b/firmware/target/arm/sandisk/sansa-e200/lcd-e200.c
index e477f4fd45..e1a4d738d7 100644
--- a/firmware/target/arm/sandisk/sansa-e200/lcd-e200.c
+++ b/firmware/target/arm/sandisk/sansa-e200/lcd-e200.c
@@ -438,7 +438,7 @@ void lcd_enable(bool on)
438 DEV_EN |= DEV_LCD; /* Enable LCD controller */ 438 DEV_EN |= DEV_LCD; /* Enable LCD controller */
439 lcd_display_on(); /* Turn on display */ 439 lcd_display_on(); /* Turn on display */
440 lcd_update(); /* Resync display */ 440 lcd_update(); /* Resync display */
441 lcd_call_enable_hook(); 441 lcd_activation_call_hook();
442 LCD_REG_6 |= 1; /* Restart DMA */ 442 LCD_REG_6 |= 1; /* Restart DMA */
443 sleep(HZ/50); /* Wait for a frame to be written */ 443 sleep(HZ/50); /* Wait for a frame to be written */
444 } 444 }
@@ -451,7 +451,7 @@ void lcd_enable(bool on)
451 } 451 }
452} 452}
453 453
454bool lcd_enabled(void) 454bool lcd_active(void)
455{ 455{
456 return display_on; 456 return display_on;
457} 457}
diff --git a/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c b/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c
index 0ca18bee67..134d936e7b 100644
--- a/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c
+++ b/firmware/target/arm/tcc77x/iaudio7/lcd-iaudio7.c
@@ -143,7 +143,7 @@ void lcd_enable(bool on)
143 143
144 if (on) { 144 if (on) {
145 _display_on(); 145 _display_on();
146 lcd_call_enable_hook(); 146 lcd_activation_call_hook();
147 } else { 147 } else {
148 /** Off sequence according to datasheet, p. 130 **/ 148 /** Off sequence according to datasheet, p. 130 **/
149 lcd_write_reg(R_FRAME_CYCLE_CONTROL, 0x0002); /* EQ=0, 18 clks/line */ 149 lcd_write_reg(R_FRAME_CYCLE_CONTROL, 0x0002); /* EQ=0, 18 clks/line */
@@ -166,7 +166,7 @@ void lcd_enable(bool on)
166 } 166 }
167} 167}
168 168
169bool lcd_enabled(void) 169bool lcd_active(void)
170{ 170{
171 return display_on; 171 return display_on;
172} 172}
diff --git a/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c b/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c
index d6ee5f3649..7b64493c0a 100644
--- a/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c
+++ b/firmware/target/arm/tcc780x/cowond2/lcd-cowond2.c
@@ -230,7 +230,7 @@ void lcd_enable(bool on)
230 lcd_display_on(); 230 lcd_display_on();
231 LCDC_CTRL |= 1; /* controller enable */ 231 LCDC_CTRL |= 1; /* controller enable */
232 lcd_update(); /* Resync display */ 232 lcd_update(); /* Resync display */
233 lcd_call_enable_hook(); 233 lcd_activation_call_hook();
234 } 234 }
235 else 235 else
236 { 236 {
@@ -239,7 +239,7 @@ void lcd_enable(bool on)
239 } 239 }
240} 240}
241 241
242bool lcd_enabled(void) 242bool lcd_active(void)
243{ 243{
244 return display_on; 244 return display_on;
245} 245}
diff --git a/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c b/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c
index f34e43687a..cd07fa9e6f 100644
--- a/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c
+++ b/firmware/target/arm/tms320dm320/creative-zvm/lcd-creativezvm.c
@@ -237,7 +237,7 @@ return;
237 { 237 {
238 lcd_display_on(false); /* Turn on display */ 238 lcd_display_on(false); /* Turn on display */
239 lcd_update(); /* Resync display */ 239 lcd_update(); /* Resync display */
240 lcd_call_enable_hook(); 240 lcd_activation_call_hook();
241 } 241 }
242 else 242 else
243 { 243 {
@@ -245,7 +245,7 @@ return;
245 } 245 }
246} 246}
247 247
248bool lcd_enabled(void) 248bool lcd_active(void)
249{ 249{
250 return display_on; 250 return display_on;
251} 251}