mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-09 05:05:20 -05:00
Onda VX747/VX777: centralise LCD clock en-/disabling.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24168 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
4fdf4ad728
commit
d3bbe51629
3 changed files with 29 additions and 8 deletions
|
|
@ -35,13 +35,24 @@
|
|||
static volatile bool lcd_is_on = false;
|
||||
static struct mutex lcd_mtx;
|
||||
static struct wakeup lcd_wkup;
|
||||
static int lcd_count = 0;
|
||||
|
||||
void lcd_clock_enable(void)
|
||||
{
|
||||
if(++lcd_count == 1)
|
||||
__cpm_start_lcd();
|
||||
}
|
||||
|
||||
void lcd_clock_disable(void)
|
||||
{
|
||||
if(--lcd_count == 0)
|
||||
__cpm_stop_lcd();
|
||||
}
|
||||
|
||||
/* LCD init */
|
||||
void lcd_init_device(void)
|
||||
{
|
||||
__cpm_start_lcd();
|
||||
lcd_init_controller();
|
||||
__cpm_stop_lcd();
|
||||
|
||||
lcd_is_on = true;
|
||||
mutex_init(&lcd_mtx);
|
||||
|
|
@ -55,8 +66,6 @@ void lcd_enable(bool state)
|
|||
if(lcd_is_on == state)
|
||||
return;
|
||||
|
||||
__cpm_start_lcd();
|
||||
|
||||
if(state)
|
||||
{
|
||||
lcd_on();
|
||||
|
|
@ -65,8 +74,6 @@ void lcd_enable(bool state)
|
|||
else
|
||||
lcd_off();
|
||||
|
||||
__cpm_stop_lcd();
|
||||
|
||||
lcd_is_on = state;
|
||||
}
|
||||
#endif
|
||||
|
|
@ -87,7 +94,7 @@ void lcd_update_rect(int x, int y, int width, int height)
|
|||
|
||||
mutex_lock(&lcd_mtx);
|
||||
|
||||
__cpm_start_lcd();
|
||||
lcd_clock_enable();
|
||||
|
||||
lcd_set_target(x, y, width, height);
|
||||
|
||||
|
|
@ -119,7 +126,7 @@ void lcd_update_rect(int x, int y, int width, int height)
|
|||
while(REG_SLCD_STATE & SLCD_STATE_BUSY);
|
||||
REG_SLCD_CTRL &= ~SLCD_CTRL_DMA_EN; /* Disable SLCD DMA support */
|
||||
|
||||
__cpm_stop_lcd();
|
||||
lcd_clock_disable();
|
||||
|
||||
mutex_unlock(&lcd_mtx);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@
|
|||
void lcd_enable(bool state);
|
||||
bool lcd_active(void);
|
||||
void lcd_init_device(void);
|
||||
void lcd_clock_enable(void);
|
||||
void lcd_clock_disable(void);
|
||||
|
||||
|
||||
void lcd_init_controller(void);
|
||||
|
|
|
|||
|
|
@ -197,6 +197,8 @@ static void _set_lcd_clock(void)
|
|||
|
||||
void lcd_init_controller(void)
|
||||
{
|
||||
lcd_clock_enable();
|
||||
|
||||
#ifdef USB_BOOT
|
||||
_display_pin_init();
|
||||
#endif
|
||||
|
|
@ -204,6 +206,8 @@ void lcd_init_controller(void)
|
|||
_set_lcd_clock();
|
||||
SLEEP(1000);
|
||||
_display_init();
|
||||
|
||||
lcd_clock_disable();
|
||||
}
|
||||
|
||||
void lcd_set_target(int x, int y, int width, int height)
|
||||
|
|
@ -254,12 +258,20 @@ void lcd_set_flip(bool yesno)
|
|||
|
||||
void lcd_on(void)
|
||||
{
|
||||
lcd_clock_enable();
|
||||
|
||||
_display_on();
|
||||
|
||||
lcd_clock_disable();
|
||||
}
|
||||
|
||||
void lcd_off(void)
|
||||
{
|
||||
lcd_clock_enable();
|
||||
|
||||
_display_off();
|
||||
|
||||
lcd_clock_disable();
|
||||
}
|
||||
|
||||
void lcd_set_contrast(int val)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue