From 638184f1a28f6e2fab225d9630baccdcff6dbf16 Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Tue, 13 Aug 2002 11:10:11 +0000 Subject: Added LCD contrast setting git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1710 a1c6a512-1295-4272-9138-f99709370657 --- apps/settings.c | 6 ++++++ apps/settings.h | 8 +++++++- apps/settings_menu.c | 8 ++++++++ firmware/drivers/lcd.c | 36 +++++++++++++++++++++--------------- firmware/drivers/lcd.h | 1 + 5 files changed, 43 insertions(+), 16 deletions(-) diff --git a/apps/settings.c b/apps/settings.c index 274a124d31..5dd5ea144a 100644 --- a/apps/settings.c +++ b/apps/settings.c @@ -276,6 +276,8 @@ int settings_save( void ) rtc_config_block[0x11] = (unsigned char)global_settings.avc; + rtc_config_block[0x12] = (unsigned char)global_settings.contrast; + memcpy(&rtc_config_block[0x24], &global_settings.total_uptime, 4); if(save_config_buffer()) @@ -350,9 +352,13 @@ void settings_load(void) if (rtc_config_block[0x11] != 0xFF) global_settings.avc = rtc_config_block[0x11]; + if (rtc_config_block[0x12] != 0xff) + global_settings.contrast = rtc_config_block[0x12]; + if (rtc_config_block[0x24] != 0xFF) memcpy(&global_settings.total_uptime, &rtc_config_block[0x24], 4); } + lcd_set_contrast(global_settings.contrast); lcd_scroll_speed(global_settings.scroll_speed); backlight_time(global_settings.backlight); #ifdef HAVE_CHARGE_CTRL diff --git a/apps/settings.h b/apps/settings.h index e0f0571def..1315cdcbd9 100644 --- a/apps/settings.h +++ b/apps/settings.h @@ -101,7 +101,13 @@ extern struct user_settings global_settings; #define DEFAULT_LOUDNESS_SETTING 0 #define DEFAULT_BASS_BOOST_SETTING 0 #define DEFAULT_AVC_SETTING 0 -#define DEFAULT_CONTRAST_SETTING 0 +#ifdef HAVE_LCD_CHARCELLS +#define MAX_CONTRAST_SETTING 31 +#define DEFAULT_CONTRAST_SETTING 15 +#else +#define MAX_CONTRAST_SETTING 63 +#define DEFAULT_CONTRAST_SETTING 32 +#endif #define DEFAULT_POWEROFF_SETTING 0 #define DEFAULT_BACKLIGHT_SETTING 5 #define DEFAULT_WPS_DISPLAY 0 diff --git a/apps/settings_menu.c b/apps/settings_menu.c index b2ca475619..0dbe50d9cb 100644 --- a/apps/settings_menu.c +++ b/apps/settings_menu.c @@ -35,6 +35,13 @@ #include "powermgmt.h" #include "rtc.h" + +static void contrast(void) +{ + set_int( "[Contrast]", "", &global_settings.contrast, + lcd_set_contrast, 1, 0, MAX_CONTRAST_SETTING ); +} + static void shuffle(void) { set_bool( "[Shuffle]", &global_settings.playlist_shuffle ); @@ -133,6 +140,7 @@ void settings_menu(void) { "MP3/M3U filter", mp3_filter }, { "Sort mode", sort_case }, { "Backlight Timer", backlight_timer }, + { "Contrast", contrast }, { "Scroll speed", scroll_speed }, { "While Playing", wps_set }, #ifdef HAVE_CHARGE_CTRL diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c index 81dc41fff3..b67be4e761 100644 --- a/firmware/drivers/lcd.c +++ b/firmware/drivers/lcd.c @@ -38,9 +38,6 @@ #define LCDR (PBDR_ADDR+1) -/* PA14 : /LCD-BL --- backlight */ -#define LCD_BL 6 - #ifdef HAVE_LCD_CHARCELLS #define LCD_DS 1 // PB0 = 1 --- 0001 --- LCD-DS @@ -323,18 +320,7 @@ static void lcd_write(bool command, int byte) PBDR |= LCD_CS; /* disable lcd chip select */ } #endif /* ASM_IMPLEMENTATION */ - -/*** BACKLIGHT ***/ - -void lcd_backlight(bool on) -{ - if ( on ) - PAIOR |= LCD_BL; - else - PAIOR &= ~LCD_BL; -} - -#endif /* SIMULATOR */ +#endif /* !SIMULATOR */ unsigned char icon_mirror[11]; @@ -524,6 +510,26 @@ void lcd_init (void) } #endif +#ifdef SIMULATOR +void lcd_set_contrast(int val) +{ + val = val; +} +#else +#ifdef HAVE_LCD_BITMAP +void lcd_set_contrast(int val) +{ + lcd_write(true, LCD_CNTL_CONTRAST); + lcd_write(true, val); +} +#else +void lcd_set_contrast(int val) +{ + lcd_write(true, LCD_CONTRAST_SET); + lcd_write(false, 31-val); +} +#endif +#endif #if defined(HAVE_LCD_BITMAP) || defined(SIMULATOR) /* not CHARCELLS */ diff --git a/firmware/drivers/lcd.h b/firmware/drivers/lcd.h index 145d858c54..2ce6339b8c 100644 --- a/firmware/drivers/lcd.h +++ b/firmware/drivers/lcd.h @@ -35,6 +35,7 @@ extern void lcd_puts_scroll(int x, int y, unsigned char* string ); extern void lcd_icon(int icon, bool enable); extern void lcd_stop_scroll(void); extern void lcd_scroll_speed( int speed ); +extern void lcd_set_contrast(int val); #if defined(SIMULATOR) || defined(HAVE_LCD_BITMAP) extern void lcd_update(void); -- cgit v1.2.3