summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
authorMaurus Cuelenaere <mcuelenaere@gmail.com>2010-01-03 16:28:15 +0000
committerMaurus Cuelenaere <mcuelenaere@gmail.com>2010-01-03 16:28:15 +0000
commitd3bbe51629212e770b30c701bef1b583b8deae88 (patch)
tree9d60cfcf0dd822882be024ceeec559b3c73bdf85 /firmware/target
parent4fdf4ad728ac93336c850c7da8966e8d00bddbf8 (diff)
downloadrockbox-d3bbe51629212e770b30c701bef1b583b8deae88.tar.gz
rockbox-d3bbe51629212e770b30c701bef1b583b8deae88.zip
Onda VX747/VX777: centralise LCD clock en-/disabling.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24168 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c23
-rw-r--r--firmware/target/mips/ingenic_jz47xx/lcd-target.h2
-rw-r--r--firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c12
3 files changed, 29 insertions, 8 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c b/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c
index 7561d593db..29f337b13b 100644
--- a/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c
+++ b/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c
@@ -35,13 +35,24 @@
35static volatile bool lcd_is_on = false; 35static volatile bool lcd_is_on = false;
36static struct mutex lcd_mtx; 36static struct mutex lcd_mtx;
37static struct wakeup lcd_wkup; 37static struct wakeup lcd_wkup;
38static int lcd_count = 0;
39
40void lcd_clock_enable(void)
41{
42 if(++lcd_count == 1)
43 __cpm_start_lcd();
44}
45
46void lcd_clock_disable(void)
47{
48 if(--lcd_count == 0)
49 __cpm_stop_lcd();
50}
38 51
39/* LCD init */ 52/* LCD init */
40void lcd_init_device(void) 53void lcd_init_device(void)
41{ 54{
42 __cpm_start_lcd();
43 lcd_init_controller(); 55 lcd_init_controller();
44 __cpm_stop_lcd();
45 56
46 lcd_is_on = true; 57 lcd_is_on = true;
47 mutex_init(&lcd_mtx); 58 mutex_init(&lcd_mtx);
@@ -55,8 +66,6 @@ void lcd_enable(bool state)
55 if(lcd_is_on == state) 66 if(lcd_is_on == state)
56 return; 67 return;
57 68
58 __cpm_start_lcd();
59
60 if(state) 69 if(state)
61 { 70 {
62 lcd_on(); 71 lcd_on();
@@ -65,8 +74,6 @@ void lcd_enable(bool state)
65 else 74 else
66 lcd_off(); 75 lcd_off();
67 76
68 __cpm_stop_lcd();
69
70 lcd_is_on = state; 77 lcd_is_on = state;
71} 78}
72#endif 79#endif
@@ -87,7 +94,7 @@ void lcd_update_rect(int x, int y, int width, int height)
87 94
88 mutex_lock(&lcd_mtx); 95 mutex_lock(&lcd_mtx);
89 96
90 __cpm_start_lcd(); 97 lcd_clock_enable();
91 98
92 lcd_set_target(x, y, width, height); 99 lcd_set_target(x, y, width, height);
93 100
@@ -119,7 +126,7 @@ void lcd_update_rect(int x, int y, int width, int height)
119 while(REG_SLCD_STATE & SLCD_STATE_BUSY); 126 while(REG_SLCD_STATE & SLCD_STATE_BUSY);
120 REG_SLCD_CTRL &= ~SLCD_CTRL_DMA_EN; /* Disable SLCD DMA support */ 127 REG_SLCD_CTRL &= ~SLCD_CTRL_DMA_EN; /* Disable SLCD DMA support */
121 128
122 __cpm_stop_lcd(); 129 lcd_clock_disable();
123 130
124 mutex_unlock(&lcd_mtx); 131 mutex_unlock(&lcd_mtx);
125} 132}
diff --git a/firmware/target/mips/ingenic_jz47xx/lcd-target.h b/firmware/target/mips/ingenic_jz47xx/lcd-target.h
index 95ce7acbb5..03f779b2a1 100644
--- a/firmware/target/mips/ingenic_jz47xx/lcd-target.h
+++ b/firmware/target/mips/ingenic_jz47xx/lcd-target.h
@@ -26,6 +26,8 @@
26void lcd_enable(bool state); 26void lcd_enable(bool state);
27bool lcd_active(void); 27bool lcd_active(void);
28void lcd_init_device(void); 28void lcd_init_device(void);
29void lcd_clock_enable(void);
30void lcd_clock_disable(void);
29 31
30 32
31void lcd_init_controller(void); 33void lcd_init_controller(void);
diff --git a/firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c b/firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c
index b2ed9bc439..12c1f3eb09 100644
--- a/firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c
+++ b/firmware/target/mips/ingenic_jz47xx/onda_vx747/lcd-onda_vx747.c
@@ -197,6 +197,8 @@ static void _set_lcd_clock(void)
197 197
198void lcd_init_controller(void) 198void lcd_init_controller(void)
199{ 199{
200 lcd_clock_enable();
201
200#ifdef USB_BOOT 202#ifdef USB_BOOT
201 _display_pin_init(); 203 _display_pin_init();
202#endif 204#endif
@@ -204,6 +206,8 @@ void lcd_init_controller(void)
204 _set_lcd_clock(); 206 _set_lcd_clock();
205 SLEEP(1000); 207 SLEEP(1000);
206 _display_init(); 208 _display_init();
209
210 lcd_clock_disable();
207} 211}
208 212
209void lcd_set_target(int x, int y, int width, int height) 213void lcd_set_target(int x, int y, int width, int height)
@@ -254,12 +258,20 @@ void lcd_set_flip(bool yesno)
254 258
255void lcd_on(void) 259void lcd_on(void)
256{ 260{
261 lcd_clock_enable();
262
257 _display_on(); 263 _display_on();
264
265 lcd_clock_disable();
258} 266}
259 267
260void lcd_off(void) 268void lcd_off(void)
261{ 269{
270 lcd_clock_enable();
271
262 _display_off(); 272 _display_off();
273
274 lcd_clock_disable();
263} 275}
264 276
265void lcd_set_contrast(int val) 277void lcd_set_contrast(int val)