summaryrefslogtreecommitdiff
path: root/firmware/drivers
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2005-06-27 19:28:55 +0000
committerJens Arnold <amiconn@rockbox.org>2005-06-27 19:28:55 +0000
commit492424bce0da0dede81531fb9d20a8455699e208 (patch)
tree1aa6af6a5eb30c20ee148d2ac0648b9864b8d377 /firmware/drivers
parentc6bd12f831f2512e73e8ae5ab2ee7e10d1a6ea1e (diff)
downloadrockbox-492424bce0da0dede81531fb9d20a8455699e208.tar.gz
rockbox-492424bce0da0dede81531fb9d20a8455699e208.zip
H1x0: Reordered lcd init sequence to match the datasheet, including the recommended pause.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6897 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers')
-rw-r--r--firmware/drivers/lcd-h100.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/firmware/drivers/lcd-h100.c b/firmware/drivers/lcd-h100.c
index 23c88100b9..15cb351195 100644
--- a/firmware/drivers/lcd-h100.c
+++ b/firmware/drivers/lcd-h100.c
@@ -39,7 +39,7 @@
39#define LCD_CNTL_TEMP_GRADIENT_SELECT 0x4e 39#define LCD_CNTL_TEMP_GRADIENT_SELECT 0x4e
40#define LCD_CNTL_OSC_FREQUENCY 0x5f 40#define LCD_CNTL_OSC_FREQUENCY 0x5f
41#define LCD_CNTL_ON_OFF 0xae 41#define LCD_CNTL_ON_OFF 0xae
42#define LCD_CNTL_OSC_ON_OFF 0xab 42#define LCD_CNTL_OSC_ON_OFF 0xaa
43#define LCD_CNTL_OFF_MODE 0xbe 43#define LCD_CNTL_OFF_MODE 0xbe
44#define LCD_CNTL_REVERSE 0xa6 44#define LCD_CNTL_REVERSE 0xa6
45#define LCD_CNTL_ALL_LIGHTING 0xa4 45#define LCD_CNTL_ALL_LIGHTING 0xa4
@@ -171,25 +171,26 @@ void lcd_init(void)
171 sleep(1); 171 sleep(1);
172 GPIO1_OUT |= 0x00004000; 172 GPIO1_OUT |= 0x00004000;
173 sleep(1); 173 sleep(1);
174 174
175 lcd_write_command(LCD_CNTL_ON_OFF | 1); /* LCD ON */
176 lcd_write_command(LCD_CNTL_COLUMN_ADDRESS_DIR | 0); /* Normal */ 175 lcd_write_command(LCD_CNTL_COLUMN_ADDRESS_DIR | 0); /* Normal */
177 lcd_write_command(LCD_CNTL_COMMON_OUTPUT_STATUS | 1); /* Reverse dir */ 176 lcd_write_command(LCD_CNTL_COMMON_OUTPUT_STATUS | 1); /* Reverse dir */
178 lcd_write_command(LCD_CNTL_REVERSE | 0); /* Reverse OFF */ 177 lcd_write_command(LCD_CNTL_REVERSE | 0); /* Reverse OFF */
179 lcd_write_command(LCD_CNTL_ALL_LIGHTING | 0); /* Normal */ 178 lcd_write_command(LCD_CNTL_ALL_LIGHTING | 0); /* Normal */
180 lcd_write_command(LCD_CNTL_OFF_MODE | 1); /* OFF -> VCC on drivers */
181 lcd_write_command(LCD_CNTL_NLINE_ON_OFF | 1); /* N-line ON */
182
183 lcd_write_command_ex(LCD_CNTL_DUTY_SET, 0x20, 1); 179 lcd_write_command_ex(LCD_CNTL_DUTY_SET, 0x20, 1);
180 lcd_write_command(LCD_CNTL_OFF_MODE | 1); /* OFF -> VCC on drivers */
184 lcd_write_command_ex(LCD_CNTL_VOLTAGE_SELECT, 3, -1); 181 lcd_write_command_ex(LCD_CNTL_VOLTAGE_SELECT, 3, -1);
185 lcd_write_command_ex(LCD_CNTL_ELECTRONIC_VOLUME, 0x1c, -1); 182 lcd_write_command_ex(LCD_CNTL_ELECTRONIC_VOLUME, 0x1c, -1);
186 lcd_write_command_ex(LCD_CNTL_TEMP_GRADIENT_SELECT, 0, -1); 183 lcd_write_command_ex(LCD_CNTL_TEMP_GRADIENT_SELECT, 0, -1);
184
187 lcd_write_command_ex(LCD_CNTL_LINE_INVERT_DRIVE, 0x10, -1); 185 lcd_write_command_ex(LCD_CNTL_LINE_INVERT_DRIVE, 0x10, -1);
186 lcd_write_command(LCD_CNTL_NLINE_ON_OFF | 1); /* N-line ON */
187
188 lcd_write_command_ex(LCD_CNTL_OSC_FREQUENCY, 3, -1); 188 lcd_write_command_ex(LCD_CNTL_OSC_FREQUENCY, 3, -1);
189 lcd_write_command(LCD_CNTL_OSC_ON_OFF | 1); /* Oscillator ON */ 189 lcd_write_command(LCD_CNTL_OSC_ON_OFF | 1); /* Oscillator ON */
190 lcd_write_command_ex(LCD_CNTL_POWER_CONTROL, 0x17, -1);
191 190
192 sleep(1); 191 lcd_write_command_ex(LCD_CNTL_POWER_CONTROL, 0x16, -1);
192 sleep(HZ/10); /* 100 ms pause */
193 lcd_write_command_ex(LCD_CNTL_POWER_CONTROL, 0x17, -1);
193 194
194 lcd_write_command_ex(LCD_CNTL_DISPLAY_START_LINE, 0, -1); 195 lcd_write_command_ex(LCD_CNTL_DISPLAY_START_LINE, 0, -1);
195 lcd_write_command_ex(LCD_CNTL_GRAY_SCALE_PATTERN, 0x42, -1); 196 lcd_write_command_ex(LCD_CNTL_GRAY_SCALE_PATTERN, 0x42, -1);
@@ -198,6 +199,7 @@ void lcd_init(void)
198 199
199 lcd_clear_display(); 200 lcd_clear_display();
200 lcd_update(); 201 lcd_update();
202 lcd_write_command(LCD_CNTL_ON_OFF | 1); /* LCD ON */
201 203
202 create_thread(scroll_thread, scroll_stack, 204 create_thread(scroll_thread, scroll_stack,
203 sizeof(scroll_stack), scroll_name); 205 sizeof(scroll_stack), scroll_name);