diff options
Diffstat (limited to 'firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c')
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c b/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c index 0b105b35a4..72c0268af0 100644 --- a/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c +++ b/firmware/target/mips/ingenic_jz47xx/lcd-jz4740.c | |||
@@ -28,12 +28,14 @@ | |||
28 | 28 | ||
29 | static volatile bool _lcd_on = false; | 29 | static volatile bool _lcd_on = false; |
30 | static volatile bool lcd_poweroff = false; | 30 | static volatile bool lcd_poweroff = false; |
31 | static struct mutex lcd_mtx; | ||
31 | 32 | ||
32 | /* LCD init */ | 33 | /* LCD init */ |
33 | void lcd_init_device(void) | 34 | void lcd_init_device(void) |
34 | { | 35 | { |
35 | lcd_init_controller(); | 36 | lcd_init_controller(); |
36 | _lcd_on = true; | 37 | _lcd_on = true; |
38 | mutex_init(&lcd_mtx); | ||
37 | } | 39 | } |
38 | 40 | ||
39 | void lcd_enable(bool state) | 41 | void lcd_enable(bool state) |
@@ -57,6 +59,8 @@ bool lcd_enabled(void) | |||
57 | /* Update a fraction of the display. */ | 59 | /* Update a fraction of the display. */ |
58 | void lcd_update_rect(int x, int y, int width, int height) | 60 | void lcd_update_rect(int x, int y, int width, int height) |
59 | { | 61 | { |
62 | mutex_lock(&lcd_mtx); | ||
63 | |||
60 | lcd_set_target(x, y, width, height); | 64 | lcd_set_target(x, y, width, height); |
61 | 65 | ||
62 | REG_DMAC_DCCSR(DMA_LCD_CHANNEL) = 0; | 66 | REG_DMAC_DCCSR(DMA_LCD_CHANNEL) = 0; |
@@ -83,6 +87,8 @@ void lcd_update_rect(int x, int y, int width, int height) | |||
83 | 87 | ||
84 | while(REG_SLCD_STATE & SLCD_STATE_BUSY); | 88 | while(REG_SLCD_STATE & SLCD_STATE_BUSY); |
85 | REG_SLCD_CTRL = 0; | 89 | REG_SLCD_CTRL = 0; |
90 | |||
91 | mutex_unlock(&lcd_mtx); | ||
86 | } | 92 | } |
87 | 93 | ||
88 | /* Update the display. | 94 | /* Update the display. |