diff options
author | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2010-01-03 16:28:15 +0000 |
---|---|---|
committer | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2010-01-03 16:28:15 +0000 |
commit | d3bbe51629212e770b30c701bef1b583b8deae88 (patch) | |
tree | 9d60cfcf0dd822882be024ceeec559b3c73bdf85 /firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c | |
parent | 4fdf4ad728ac93336c850c7da8966e8d00bddbf8 (diff) | |
download | rockbox-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/mips/ingenic_jz47xx/lcd-jz4740.c')
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c | 23 |
1 files changed, 15 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 @@ | |||
35 | static volatile bool lcd_is_on = false; | 35 | static volatile bool lcd_is_on = false; |
36 | static struct mutex lcd_mtx; | 36 | static struct mutex lcd_mtx; |
37 | static struct wakeup lcd_wkup; | 37 | static struct wakeup lcd_wkup; |
38 | static int lcd_count = 0; | ||
39 | |||
40 | void lcd_clock_enable(void) | ||
41 | { | ||
42 | if(++lcd_count == 1) | ||
43 | __cpm_start_lcd(); | ||
44 | } | ||
45 | |||
46 | void lcd_clock_disable(void) | ||
47 | { | ||
48 | if(--lcd_count == 0) | ||
49 | __cpm_stop_lcd(); | ||
50 | } | ||
38 | 51 | ||
39 | /* LCD init */ | 52 | /* LCD init */ |
40 | void lcd_init_device(void) | 53 | void 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 | } |