summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Stenberg <bjorn@haxx.se>2003-07-09 23:07:49 +0000
committerBjörn Stenberg <bjorn@haxx.se>2003-07-09 23:07:49 +0000
commit067262dbf09d63fb645d1c2e67d225325b6854c9 (patch)
treeb971492d0c80a496e596226a952ffe222f2c468b
parent0ef911d43c364fe535111c59abab54e10dc06ce1 (diff)
Moved lcd default contrast knowledge from settings.c to lcd driver. Now lcd_init sets default contrast until settings are read.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3824 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/settings.c17
-rw-r--r--firmware/drivers/lcd-player.c7
-rw-r--r--firmware/drivers/lcd-recorder.c41
-rw-r--r--firmware/export/lcd.h1
4 files changed, 34 insertions, 32 deletions
diff --git a/apps/settings.c b/apps/settings.c
index 8a98010a5c..06a44a34cc 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -542,19 +542,6 @@ void settings_apply(void)
}
}
-static int default_contrast(void)
-{
-#ifdef SIMULATOR
- return 30;
-#else
-#ifdef HAVE_LCD_CHARCELLS
- return 30;
-#else
- return (read_hw_mask() & LCD_CONTRAST_BIAS) ? 31 : 49;
-#endif
-#endif
-}
-
/*
* load settings from disk or RTC RAM
*/
@@ -587,7 +574,7 @@ void settings_load(void)
global_settings.invert =
config_block[0xa] & 0x40 ? true : false;
if ( global_settings.contrast < MIN_CONTRAST_SETTING )
- global_settings.contrast = default_contrast();
+ global_settings.contrast = lcd_default_contrast();
global_settings.show_icons =
config_block[0xa] & 0x80 ? true : false;
}
@@ -1414,7 +1401,7 @@ void settings_reset(void) {
global_settings.rec_right_gain = 2; /* 0dB */
global_settings.rec_editable = false;
global_settings.resume = RESUME_ASK;
- global_settings.contrast = default_contrast();
+ global_settings.contrast = lcd_default_contrast();
global_settings.invert = DEFAULT_INVERT_SETTING;
global_settings.poweroff = DEFAULT_POWEROFF_SETTING;
global_settings.backlight_timeout = DEFAULT_BACKLIGHT_TIMEOUT_SETTING;
diff --git a/firmware/drivers/lcd-player.c b/firmware/drivers/lcd-player.c
index 6f58f8ec1a..bbb157a94f 100644
--- a/firmware/drivers/lcd-player.c
+++ b/firmware/drivers/lcd-player.c
@@ -278,6 +278,11 @@ bool lcdx_putc(int x, int y, unsigned short ch)
return false;
}
+int lcd_default_contrast(void)
+{
+ return 30;
+}
+
void lcd_clear_display(void)
{
int i;
@@ -497,6 +502,8 @@ void lcd_init (void)
pattern_size=3; /* Last pattern, 3 for old LCD, 7 for new LCD */
}
+ lcd_set_contrast(lcd_default_contrast());
+
create_thread(scroll_thread, scroll_stack,
sizeof(scroll_stack), scroll_name);
}
diff --git a/firmware/drivers/lcd-recorder.c b/firmware/drivers/lcd-recorder.c
index 00b4ed78b2..597c7d246a 100644
--- a/firmware/drivers/lcd-recorder.c
+++ b/firmware/drivers/lcd-recorder.c
@@ -29,6 +29,7 @@
#include "debug.h"
#include "system.h"
#include "font.h"
+#include "hwcompat.h"
/*** definitions ***/
@@ -113,6 +114,15 @@ static unsigned char zeros[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
static unsigned char ones[8] = { 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff};
+int lcd_default_contrast(void)
+{
+#ifdef SIMULATOR
+ return 30;
+#else
+ return (read_hw_mask() & LCD_CONTRAST_BIAS) ? 31 : 49;
+#endif
+}
+
#ifdef SIMULATOR
void lcd_init(void)
@@ -132,23 +142,20 @@ void lcd_init (void)
PBCR2 &= 0xff00; /* MD = 00 */
PBIOR |= 0x000f; /* IOR = 1 */
- /* inits like the original firmware */
- lcd_write(true, LCD_SOFTWARE_RESET);
- lcd_write(true, LCD_SET_INTERNAL_REGULATOR_RESISTOR_RATIO + 4);
- lcd_write(true, LCD_SET_1OVER4_BIAS_RATIO + 0); /* force 1/4 bias: 0 */
- lcd_write(true, LCD_SET_POWER_CONTROL_REGISTER + 7); /* power control register: op-amp=1, regulator=1, booster=1 */
- lcd_write(true, LCD_SET_DISPLAY_ON);
- lcd_write(true, LCD_SET_NORMAL_DISPLAY);
- lcd_write(true, LCD_SET_SEGMENT_REMAP + 1); /* mirror horizontal: 1 */
- lcd_write(true, LCD_SET_COM_OUTPUT_SCAN_DIRECTION + 8); /* mirror vertical: 1 */
- lcd_write(true, LCD_SET_DISPLAY_START_LINE + 0);
-#if 0 /* done later, depending on h/w mask bit and settings */
- lcd_write(true, LCD_SET_CONTRAST_CONTROL_REGISTER);
- lcd_write(true, 0xF1); /* contrast set to 49/64 */
-#endif
- lcd_write(true, LCD_SET_PAGE_ADDRESS);
- lcd_write(true, LCD_SET_LOWER_COLUMN_ADDRESS + 0);
- lcd_write(true, LCD_SET_HIGHER_COLUMN_ADDRESS + 0);
+ /* inits like the original firmware */
+ lcd_write(true, LCD_SOFTWARE_RESET);
+ lcd_write(true, LCD_SET_INTERNAL_REGULATOR_RESISTOR_RATIO + 4);
+ lcd_write(true, LCD_SET_1OVER4_BIAS_RATIO + 0); /* force 1/4 bias: 0 */
+ lcd_write(true, LCD_SET_POWER_CONTROL_REGISTER + 7); /* power control register: op-amp=1, regulator=1, booster=1 */
+ lcd_write(true, LCD_SET_DISPLAY_ON);
+ lcd_write(true, LCD_SET_NORMAL_DISPLAY);
+ lcd_write(true, LCD_SET_SEGMENT_REMAP + 1); /* mirror horizontal: 1 */
+ lcd_write(true, LCD_SET_COM_OUTPUT_SCAN_DIRECTION + 8); /* mirror vertical: 1 */
+ lcd_write(true, LCD_SET_DISPLAY_START_LINE + 0);
+ lcd_set_contrast(lcd_default_contrast());
+ lcd_write(true, LCD_SET_PAGE_ADDRESS);
+ lcd_write(true, LCD_SET_LOWER_COLUMN_ADDRESS + 0);
+ lcd_write(true, LCD_SET_HIGHER_COLUMN_ADDRESS + 0);
lcd_clear_display();
lcd_update();
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h
index 0818f9d92e..3f3ea972c3 100644
--- a/firmware/export/lcd.h
+++ b/firmware/export/lcd.h
@@ -44,6 +44,7 @@ extern void lcd_scroll_speed( int speed );
extern void lcd_scroll_delay( int ms );
extern void lcd_set_contrast(int val);
extern void lcd_write( bool command, int byte );
+extern int lcd_default_contrast(void);
#if defined(SIMULATOR) || defined(HAVE_LCD_BITMAP)
extern void lcd_update(void);