diff options
Diffstat (limited to 'firmware/target/coldfire/iaudio/m3')
-rw-r--r-- | firmware/target/coldfire/iaudio/m3/lcd-m3.c | 49 |
1 files changed, 27 insertions, 22 deletions
diff --git a/firmware/target/coldfire/iaudio/m3/lcd-m3.c b/firmware/target/coldfire/iaudio/m3/lcd-m3.c index ac60006565..d54e0596ab 100644 --- a/firmware/target/coldfire/iaudio/m3/lcd-m3.c +++ b/firmware/target/coldfire/iaudio/m3/lcd-m3.c | |||
@@ -60,7 +60,6 @@ static int cached_contrast = DEFAULT_CONTRAST_SETTING; | |||
60 | 60 | ||
61 | bool initialized = false; | 61 | bool initialized = false; |
62 | 62 | ||
63 | static void lcd_tick(void); | ||
64 | 63 | ||
65 | /* Standard low-level byte writer. Requires CLK high on entry */ | 64 | /* Standard low-level byte writer. Requires CLK high on entry */ |
66 | static inline void _write_byte(unsigned data) | 65 | static inline void _write_byte(unsigned data) |
@@ -295,7 +294,7 @@ int lcd_default_contrast(void) | |||
295 | return DEFAULT_CONTRAST_SETTING; | 294 | return DEFAULT_CONTRAST_SETTING; |
296 | } | 295 | } |
297 | 296 | ||
298 | void lcdset_contrast(int val) | 297 | void lcd_set_contrast(int val) |
299 | { | 298 | { |
300 | if (val < 0) | 299 | if (val < 0) |
301 | val = 0; | 300 | val = 0; |
@@ -312,29 +311,11 @@ bool remote_detect(void) | |||
312 | return (GPIO_READ & 0x40000000) == 0; | 311 | return (GPIO_READ & 0x40000000) == 0; |
313 | } | 312 | } |
314 | 313 | ||
315 | void lcd_init_device(void) | ||
316 | { | ||
317 | or_l(0x24000000, &GPIO_OUT); | ||
318 | or_l(0x24000000, &GPIO_ENABLE); | ||
319 | or_l(0x24000000, &GPIO_FUNCTION); | ||
320 | |||
321 | or_l(0x00011000, &GPIO1_OUT); | ||
322 | or_l(0x00011000, &GPIO1_ENABLE); | ||
323 | or_l(0x00011000, &GPIO1_FUNCTION); | ||
324 | |||
325 | and_l(~0x40000000, &GPIO_OUT); | ||
326 | and_l(~0x40000000, &GPIO_ENABLE); | ||
327 | or_l(0x40000000, &GPIO_FUNCTION); | ||
328 | |||
329 | lcd_clear_display(); | ||
330 | tick_add_task(lcd_tick); | ||
331 | } | ||
332 | |||
333 | void lcd_on(void) | 314 | void lcd_on(void) |
334 | { | 315 | { |
335 | CS_HI; | 316 | CS_HI; |
336 | CLK_HI; | 317 | CLK_HI; |
337 | sleep(10); | 318 | sleep(HZ/100); |
338 | 319 | ||
339 | lcd_write_command(LCD_SET_DUTY_RATIO); | 320 | lcd_write_command(LCD_SET_DUTY_RATIO); |
340 | lcd_write_command(0x70); /* 1/128 */ | 321 | lcd_write_command(0x70); /* 1/128 */ |
@@ -349,7 +330,7 @@ void lcd_on(void) | |||
349 | 330 | ||
350 | lcd_write_command(LCD_CONTROL_POWER | 7); /* All circuits ON */ | 331 | lcd_write_command(LCD_CONTROL_POWER | 7); /* All circuits ON */ |
351 | 332 | ||
352 | sleep(30); | 333 | sleep(3*HZ/100); |
353 | 334 | ||
354 | lcd_write_command_e(LCD_SET_GRAY | 0, 0x00); | 335 | lcd_write_command_e(LCD_SET_GRAY | 0, 0x00); |
355 | lcd_write_command_e(LCD_SET_GRAY | 1, 0x00); | 336 | lcd_write_command_e(LCD_SET_GRAY | 1, 0x00); |
@@ -385,6 +366,7 @@ void lcd_poweroff(void) | |||
385 | lcd_write_command(LCD_SET_POWER_SAVE | 1); | 366 | lcd_write_command(LCD_SET_POWER_SAVE | 1); |
386 | } | 367 | } |
387 | 368 | ||
369 | #ifndef BOOTLOADER | ||
388 | /* Monitor remote hotswap */ | 370 | /* Monitor remote hotswap */ |
389 | static void lcd_tick(void) | 371 | static void lcd_tick(void) |
390 | { | 372 | { |
@@ -422,6 +404,29 @@ static void lcd_tick(void) | |||
422 | } | 404 | } |
423 | } | 405 | } |
424 | } | 406 | } |
407 | #endif | ||
408 | |||
409 | void lcd_init_device(void) | ||
410 | { | ||
411 | or_l(0x24000000, &GPIO_OUT); | ||
412 | or_l(0x24000000, &GPIO_ENABLE); | ||
413 | or_l(0x24000000, &GPIO_FUNCTION); | ||
414 | |||
415 | or_l(0x00011000, &GPIO1_OUT); | ||
416 | or_l(0x00011000, &GPIO1_ENABLE); | ||
417 | or_l(0x00011000, &GPIO1_FUNCTION); | ||
418 | |||
419 | and_l(~0x40000000, &GPIO_OUT); | ||
420 | and_l(~0x40000000, &GPIO_ENABLE); | ||
421 | or_l(0x40000000, &GPIO_FUNCTION); | ||
422 | |||
423 | lcd_clear_display(); | ||
424 | #ifdef BOOTLOADER | ||
425 | lcd_on(); | ||
426 | #else | ||
427 | tick_add_task(lcd_tick); | ||
428 | #endif | ||
429 | } | ||
425 | 430 | ||
426 | /* Update the display. | 431 | /* Update the display. |
427 | This must be called after all other LCD functions that change the display. */ | 432 | This must be called after all other LCD functions that change the display. */ |