diff options
| author | Tobias Diedrich <ranma+coreboot@tdiedrich.de> | 2010-06-18 14:11:41 +0000 |
|---|---|---|
| committer | Tobias Diedrich <ranma+coreboot@tdiedrich.de> | 2010-06-18 14:11:41 +0000 |
| commit | 2813d50acfe1980d625d4a0dcffa6275de5f87f8 (patch) | |
| tree | bd627edcd25ae5df02def107618f7b32ba3da1ee | |
| parent | 926aae8161b8781885b33e342aec2a5183fd404a (diff) | |
| download | rockbox-2813d50acfe1980d625d4a0dcffa6275de5f87f8.zip rockbox-2813d50acfe1980d625d4a0dcffa6275de5f87f8.tar.gz rockbox-2813d50acfe1980d625d4a0dcffa6275de5f87f8.tar.bz2 rockbox-2813d50acfe1980d625d4a0dcffa6275de5f87f8.tar.xz | |
C200v2 lcd controller still gets stuck sometimes, do a full controller init in lcd_enable()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26920 a1c6a512-1295-4272-9138-f99709370657
| -rw-r--r-- | firmware/target/arm/lcd-c200_c200v2.c | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/firmware/target/arm/lcd-c200_c200v2.c b/firmware/target/arm/lcd-c200_c200v2.c index 062ed08..5393352 100644 --- a/firmware/target/arm/lcd-c200_c200v2.c +++ b/firmware/target/arm/lcd-c200_c200v2.c @@ -182,14 +182,9 @@ static inline void as3525_dbop_init(void) #endif -/* LCD init */ -void lcd_init_device(void) +static void lcd_reset(void) { -#if defined(SANSA_C200) - c200v1_lcd_init(); -#elif defined(SANSA_C200V2) - as3525_dbop_init(); - +#if defined(SANSA_C200V2) /* reset lcd */ GPIOB_DIR |= (1<<6); GPIOB_PIN(6) = 0; /* pull reset low */ @@ -197,7 +192,6 @@ void lcd_init_device(void) GPIOB_PIN(6) = 1<<6; /* release reset */ lcd_delay(20); #endif - lcd_send_command(R_STANDBY_OFF, 0); lcd_delay(20); @@ -249,6 +243,17 @@ void lcd_init_device(void) lcd_send_command(R_DISPLAY_ON, 0); } +/* LCD init */ +void lcd_init_device(void) +{ +#if defined(SANSA_C200) + c200v1_lcd_init(); +#elif defined(SANSA_C200V2) + as3525_dbop_init(); +#endif + lcd_reset(); +} + /*** hardware configuration ***/ int lcd_default_contrast(void) { @@ -277,8 +282,13 @@ void lcd_enable(bool yesno) if ((is_lcd_enabled = yesno)) { +#ifdef SANSA_C200V2 + /* lcd sometimes gets stuck, do full init here */ + lcd_reset(); +#else lcd_send_command(R_STANDBY_OFF, 0); lcd_send_command(R_DISPLAY_ON, 0); +#endif send_event(LCD_EVENT_ACTIVATION, NULL); } else |