summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/settings.c10
-rw-r--r--apps/settings.h15
-rw-r--r--apps/settings_menu.c6
-rw-r--r--firmware/export/config-iaudiox5.h5
-rw-r--r--firmware/powermgmt.c2
-rwxr-xr-xfirmware/target/coldfire/iaudio/x5/lcd-x5.c17
6 files changed, 36 insertions, 19 deletions
diff --git a/apps/settings.c b/apps/settings.c
index b6d84d53f7..673b8fe246 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -240,8 +240,8 @@ static const struct bit_entry rtc_bits[] =
240 {32 | SIGNED, S_O(resume_seed), -1, NULL, NULL }, 240 {32 | SIGNED, S_O(resume_seed), -1, NULL, NULL },
241 {3, S_O(repeat_mode), REPEAT_ALL, "repeat", "off,all,one,shuffle,ab" }, 241 {3, S_O(repeat_mode), REPEAT_ALL, "repeat", "off,all,one,shuffle,ab" },
242 /* LCD */ 242 /* LCD */
243#if !defined(HAVE_LCD_COLOR) || defined(IAUDIO_X5) 243#ifdef HAVE_LCD_CONTRAST
244 {6, S_O(contrast), 40, "contrast", NULL }, 244 {6, S_O(contrast), DEFAULT_CONTRAST_SETTING, "contrast", NULL },
245#endif 245#endif
246#ifdef CONFIG_BACKLIGHT 246#ifdef CONFIG_BACKLIGHT
247 {5, S_O(backlight_timeout), 5, "backlight timeout", backlight_times_conf }, 247 {5, S_O(backlight_timeout), 5, "backlight timeout", backlight_times_conf },
@@ -1017,7 +1017,7 @@ void settings_apply(void)
1017 1017
1018 audio_set_buffer_margin(global_settings.buffer_margin); 1018 audio_set_buffer_margin(global_settings.buffer_margin);
1019 1019
1020#if !defined(HAVE_LCD_COLOR) || defined(IAUDIO_X5) 1020#ifdef HAVE_LCD_CONTRAST
1021 lcd_set_contrast(global_settings.contrast); 1021 lcd_set_contrast(global_settings.contrast);
1022#endif 1022#endif
1023 lcd_scroll_speed(global_settings.scroll_speed); 1023 lcd_scroll_speed(global_settings.scroll_speed);
@@ -1263,7 +1263,7 @@ void settings_load(int which)
1263 RTC_BLOCK_SIZE*8); 1263 RTC_BLOCK_SIZE*8);
1264 } 1264 }
1265 1265
1266#if !defined(HAVE_LCD_COLOR) || defined(IAUDIO_X5) 1266#ifdef HAVE_LCD_CONTRAST
1267 if ( global_settings.contrast < MIN_CONTRAST_SETTING ) 1267 if ( global_settings.contrast < MIN_CONTRAST_SETTING )
1268 global_settings.contrast = lcd_default_contrast(); 1268 global_settings.contrast = lcd_default_contrast();
1269#endif 1269#endif
@@ -1728,7 +1728,7 @@ void settings_reset(void) {
1728 global_settings.mdb_enable = sound_default(SOUND_MDB_ENABLE); 1728 global_settings.mdb_enable = sound_default(SOUND_MDB_ENABLE);
1729 global_settings.superbass = sound_default(SOUND_SUPERBASS); 1729 global_settings.superbass = sound_default(SOUND_SUPERBASS);
1730#endif 1730#endif
1731#if !defined(HAVE_LCD_COLOR) || defined(IAUDIO_X5) 1731#ifdef HAVE_LCD_CONTRAST
1732 global_settings.contrast = lcd_default_contrast(); 1732 global_settings.contrast = lcd_default_contrast();
1733#endif 1733#endif
1734#ifdef HAVE_LCD_REMOTE 1734#ifdef HAVE_LCD_REMOTE
diff --git a/apps/settings.h b/apps/settings.h
index d32b58ac85..983e58911d 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -200,6 +200,13 @@ extern unsigned char vp_dummy[VIRT_SIZE];
200/* get the string ID from a virtual pointer, -1 if not virtual */ 200/* get the string ID from a virtual pointer, -1 if not virtual */
201#define P2ID(p) ((p>=VIRT_PTR && p<=VIRT_PTR+VIRT_SIZE) ? p-VIRT_PTR : -1) 201#define P2ID(p) ((p>=VIRT_PTR && p<=VIRT_PTR+VIRT_SIZE) ? p-VIRT_PTR : -1)
202 202
203/* !defined(HAVE_LCD_COLOR) implies HAVE_LCD_CONTRAST with default 40.
204 Explicitly define HAVE_LCD_CONTRAST in config file for newer ports for
205 simplicity. */
206#if !defined(HAVE_LCD_COLOR)
207#define HAVE_LCD_CONTRAST
208#define DEFAULT_CONTRAST_SETTING 40
209#endif
203 210
204struct user_settings 211struct user_settings
205{ 212{
@@ -274,7 +281,7 @@ struct user_settings
274 281
275 /* device settings */ 282 /* device settings */
276 283
277#if !defined(HAVE_LCD_COLOR) || defined(IAUDIO_X5) 284#ifdef HAVE_LCD_CONTRAST
278 int contrast; /* lcd contrast */ 285 int contrast; /* lcd contrast */
279#endif 286#endif
280 bool invert; /* invert display */ 287 bool invert; /* invert display */
@@ -571,10 +578,10 @@ extern long lasttime;
571extern const char rec_base_directory[]; 578extern const char rec_base_directory[];
572 579
573/* system defines */ 580/* system defines */
574
575#ifdef IAUDIO_X5 581#ifdef IAUDIO_X5
576#define MIN_CONTRAST_SETTING 0 582#define MIN_CONTRAST_SETTING 1
577#define MAX_CONTRAST_SETTING 29 583#define MAX_CONTRAST_SETTING 30
584#define DEFAULT_CONTRAST_SETTING 19
578#elif defined HAVE_LCD_CHARCELLS 585#elif defined HAVE_LCD_CHARCELLS
579#define MIN_CONTRAST_SETTING 5 586#define MIN_CONTRAST_SETTING 5
580#define MAX_CONTRAST_SETTING 31 587#define MAX_CONTRAST_SETTING 31
diff --git a/apps/settings_menu.c b/apps/settings_menu.c
index f088c3be3d..20235f5a72 100644
--- a/apps/settings_menu.c
+++ b/apps/settings_menu.c
@@ -266,7 +266,7 @@ static bool remote_caption_backlight(void)
266} 266}
267#endif /* HAVE_REMOTE_LCD */ 267#endif /* HAVE_REMOTE_LCD */
268 268
269#if !defined(HAVE_LCD_COLOR) || defined(IAUDIO_X5) 269#ifdef HAVE_LCD_CONTRAST
270static bool contrast(void) 270static bool contrast(void)
271{ 271{
272 return set_int( str(LANG_CONTRAST), "", UNIT_INT, 272 return set_int( str(LANG_CONTRAST), "", UNIT_INT,
@@ -274,7 +274,7 @@ static bool contrast(void)
274 lcd_set_contrast, 1, MIN_CONTRAST_SETTING, 274 lcd_set_contrast, 1, MIN_CONTRAST_SETTING,
275 MAX_CONTRAST_SETTING, NULL ); 275 MAX_CONTRAST_SETTING, NULL );
276} 276}
277#endif /* HAVE_LCD_COLOR */ 277#endif /* HAVE_LCD_CONTRAST */
278 278
279#ifdef HAVE_LCD_BITMAP 279#ifdef HAVE_LCD_BITMAP
280#ifndef HAVE_LCD_COLOR 280#ifndef HAVE_LCD_COLOR
@@ -1781,7 +1781,7 @@ static bool lcd_settings_menu(void)
1781 { ID2P(LANG_BRIGHTNESS), brightness }, 1781 { ID2P(LANG_BRIGHTNESS), brightness },
1782#endif 1782#endif
1783#endif /* CONFIG_BACKLIGHT */ 1783#endif /* CONFIG_BACKLIGHT */
1784#if !defined(HAVE_LCD_COLOR) || defined(IAUDIO_X5) 1784#ifdef HAVE_LCD_CONTRAST
1785 { ID2P(LANG_CONTRAST), contrast }, 1785 { ID2P(LANG_CONTRAST), contrast },
1786#endif 1786#endif
1787#ifdef HAVE_LCD_BITMAP 1787#ifdef HAVE_LCD_BITMAP
diff --git a/firmware/export/config-iaudiox5.h b/firmware/export/config-iaudiox5.h
index 21fa636f0c..ae48eb6dbe 100644
--- a/firmware/export/config-iaudiox5.h
+++ b/firmware/export/config-iaudiox5.h
@@ -22,6 +22,7 @@
22#define LCD_HEIGHT 128 22#define LCD_HEIGHT 128
23#define LCD_DEPTH 16 /* pseudo 262.144 colors */ 23#define LCD_DEPTH 16 /* pseudo 262.144 colors */
24#define LCD_PIXELFORMAT RGB565 /* rgb565 */ 24#define LCD_PIXELFORMAT RGB565 /* rgb565 */
25#define HAVE_LCD_CONTRAST
25 26
26/* remote LCD */ 27/* remote LCD */
27#define LCD_REMOTE_WIDTH 128 28#define LCD_REMOTE_WIDTH 128
@@ -40,6 +41,10 @@
40 41
41#define CONFIG_LCD LCD_X5 42#define CONFIG_LCD LCD_X5
42 43
44#define MIN_CONTRAST_SETTING 1
45#define MAX_CONTRAST_SETTING 30
46#define DEFAULT_CONTRAST_SETTING 19 /* Match boot contrast */
47
43/* Define this for LCD backlight available */ 48/* Define this for LCD backlight available */
44#define CONFIG_BACKLIGHT BL_IRIVER_H100 /* port controlled !?!? */ 49#define CONFIG_BACKLIGHT BL_IRIVER_H100 /* port controlled !?!? */
45#define HAVE_BACKLIGHT_BRIGHTNESS 50#define HAVE_BACKLIGHT_BRIGHTNESS
diff --git a/firmware/powermgmt.c b/firmware/powermgmt.c
index ee01fd862d..4bccd4e211 100644
--- a/firmware/powermgmt.c
+++ b/firmware/powermgmt.c
@@ -1045,7 +1045,9 @@ void shutdown_hw(void)
1045 lcd_update(); 1045 lcd_update();
1046 sleep(HZ/16); 1046 sleep(HZ/16);
1047#endif 1047#endif
1048#ifndef IAUDIO_X5
1048 lcd_set_contrast(0); 1049 lcd_set_contrast(0);
1050#endif
1049#ifdef HAVE_REMOTE_LCD 1051#ifdef HAVE_REMOTE_LCD
1050 remote_backlight_off(); 1052 remote_backlight_off();
1051 lcd_remote_set_contrast(0); 1053 lcd_remote_set_contrast(0);
diff --git a/firmware/target/coldfire/iaudio/x5/lcd-x5.c b/firmware/target/coldfire/iaudio/x5/lcd-x5.c
index 7c155eac8f..c06521ef54 100755
--- a/firmware/target/coldfire/iaudio/x5/lcd-x5.c
+++ b/firmware/target/coldfire/iaudio/x5/lcd-x5.c
@@ -139,17 +139,20 @@ inline void lcd_write_data(const unsigned short* p_bytes, int count)
139 139
140int lcd_default_contrast(void) 140int lcd_default_contrast(void)
141{ 141{
142 return 16; 142 return DEFAULT_CONTRAST_SETTING;
143} 143}
144 144
145void lcd_set_contrast(int val) 145void lcd_set_contrast(int val)
146{ 146{
147 if (val >= 15) // val must'nt be 15 or 31 147 /* Clamp val in range 0-14, 16-30 */
148 ++val; 148 if (val < 1)
149 if (val > 30) 149 val = 0;
150 return; 150 else if (val <= 15)
151 151 --val;
152 lcd_write_reg(0x0e, 0x201e + (val << 8)); 152 else if (val > 30)
153 val = 30;
154
155 lcd_write_reg(0x0e, 0x2018 + (val << 8));
153} 156}
154 157
155void lcd_set_invert_display(bool yesno) 158void lcd_set_invert_display(bool yesno)