summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-08-13 11:10:11 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-08-13 11:10:11 +0000
commit638184f1a28f6e2fab225d9630baccdcff6dbf16 (patch)
treec590188fd3cc0fcb2d7e265176f19c5bf8ccbca8
parent8b05a002af34dddadc7cf5cc56de75216c0705c7 (diff)
downloadrockbox-638184f1a28f6e2fab225d9630baccdcff6dbf16.zip
rockbox-638184f1a28f6e2fab225d9630baccdcff6dbf16.tar.gz
rockbox-638184f1a28f6e2fab225d9630baccdcff6dbf16.tar.bz2
rockbox-638184f1a28f6e2fab225d9630baccdcff6dbf16.tar.xz
Added LCD contrast setting
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1710 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/settings.c6
-rw-r--r--apps/settings.h8
-rw-r--r--apps/settings_menu.c8
-rw-r--r--firmware/drivers/lcd.c36
-rw-r--r--firmware/drivers/lcd.h1
5 files changed, 43 insertions, 16 deletions
diff --git a/apps/settings.c b/apps/settings.c
index 274a124..5dd5ea1 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 e0f0571..1315cdc 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 b2ca475..0dbe50d 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 81dc41f..b67be4e 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 145d858..2ce6339 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);