summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/backlight.c24
-rw-r--r--firmware/target/arm/gigabeat/meg-fx/backlight-meg-fx.c4
-rw-r--r--firmware/target/arm/gigabeat/meg-fx/backlight-target.h2
-rw-r--r--firmware/target/coldfire/iaudio/x5/backlight-target.h2
-rw-r--r--firmware/target/coldfire/iaudio/x5/backlight-x5.c4
-rw-r--r--firmware/target/coldfire/iriver/backlight-target.h2
-rw-r--r--firmware/target/coldfire/iriver/h100/backlight-h100.c6
-rw-r--r--firmware/target/coldfire/iriver/h300/backlight-h300.c4
8 files changed, 33 insertions, 15 deletions
diff --git a/firmware/backlight.c b/firmware/backlight.c
index 63bde6a868..d621aa42d1 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -152,8 +152,8 @@ static int fade_in_count = 1;
152static int fade_out_count = 4; 152static int fade_out_count = 4;
153 153
154static bool bl_timer_active = false; 154static bool bl_timer_active = false;
155static int bl_dim_current = BL_PWM_COUNT; 155static int bl_dim_current = 0;
156static int bl_dim_target = BL_PWM_COUNT; 156static int bl_dim_target = 0;
157static int bl_pwm_counter = 0; 157static int bl_pwm_counter = 0;
158static volatile int bl_cycle_counter = 0; 158static volatile int bl_cycle_counter = 0;
159static enum {DIM_STATE_START, DIM_STATE_MAIN} bl_dim_state = DIM_STATE_START; 159static enum {DIM_STATE_START, DIM_STATE_MAIN} bl_dim_state = DIM_STATE_START;
@@ -556,17 +556,21 @@ static void backlight_tick(void)
556void backlight_init(void) 556void backlight_init(void)
557{ 557{
558 queue_init(&backlight_queue, true); 558 queue_init(&backlight_queue, true);
559 create_thread(backlight_thread, backlight_stack, 559
560 sizeof(backlight_stack), backlight_thread_name
561 IF_PRIO(, PRIORITY_SYSTEM));
562 tick_add_task(backlight_tick);
563#ifdef SIMULATOR 560#ifdef SIMULATOR
564 /* do nothing */ 561 /* do nothing */
565#elif defined(__BACKLIGHT_INIT) 562#elif defined(__BACKLIGHT_INIT)
566 /* Remove the __BACKLIGHT_INIT references when __backlight_init is 563 /* Remove the __BACKLIGHT_INIT references when __backlight_init is
567 available on all backlighted targets. Take them out of the 564 available on all backlighted targets. Take them out of the
568 backlight-target.h files as well */ 565 backlight-target.h files as well */
569 __backlight_init(); 566 if (__backlight_init())
567 {
568# if defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR)
569 /* If backlight is already on, don't fade in. */
570 bl_dim_current = BL_PWM_COUNT;
571 bl_dim_target = BL_PWM_COUNT;
572# endif
573 }
570#elif CONFIG_BACKLIGHT == BL_PA14_LO || CONFIG_BACKLIGHT == BL_PA14_HI 574#elif CONFIG_BACKLIGHT == BL_PA14_LO || CONFIG_BACKLIGHT == BL_PA14_HI
571 PACR1 &= ~0x3000; /* Set PA14 (backlight control) to GPIO */ 575 PACR1 &= ~0x3000; /* Set PA14 (backlight control) to GPIO */
572 or_b(0x40, &PAIORH); /* ..and output */ 576 or_b(0x40, &PAIORH); /* ..and output */
@@ -575,6 +579,11 @@ void backlight_init(void)
575#ifdef HAVE_REMOTE_LCD 579#ifdef HAVE_REMOTE_LCD
576 remote_backlight_on(); 580 remote_backlight_on();
577#endif 581#endif
582
583 create_thread(backlight_thread, backlight_stack,
584 sizeof(backlight_stack), backlight_thread_name
585 IF_PRIO(, PRIORITY_SYSTEM));
586 tick_add_task(backlight_tick);
578} 587}
579 588
580#ifdef X5_BACKLIGHT_SHUTDOWN 589#ifdef X5_BACKLIGHT_SHUTDOWN
@@ -803,6 +812,7 @@ void backlight_init(void)
803{ 812{
804#ifdef __BACKLIGHT_INIT 813#ifdef __BACKLIGHT_INIT
805 __backlight_init(); 814 __backlight_init();
815 __backlight_on();
806#endif 816#endif
807} 817}
808#endif 818#endif
diff --git a/firmware/target/arm/gigabeat/meg-fx/backlight-meg-fx.c b/firmware/target/arm/gigabeat/meg-fx/backlight-meg-fx.c
index 5b32c98572..f6a8d31c7b 100644
--- a/firmware/target/arm/gigabeat/meg-fx/backlight-meg-fx.c
+++ b/firmware/target/arm/gigabeat/meg-fx/backlight-meg-fx.c
@@ -113,7 +113,7 @@ unsigned char charging_leds[] = { 0x00, 0x20, 0x38, 0x3C };
113 113
114 114
115 115
116void __backlight_init(void) 116bool __backlight_init(void)
117{ 117{
118 backlight_control = BACKLIGHT_CONTROL_IDLE; 118 backlight_control = BACKLIGHT_CONTROL_IDLE;
119 119
@@ -127,6 +127,8 @@ void __backlight_init(void)
127 initial_tick_delay = 2000; 127 initial_tick_delay = 2000;
128 /* put the led control on the tick list */ 128 /* put the led control on the tick list */
129 tick_add_task(led_control_service); 129 tick_add_task(led_control_service);
130
131 return true;
130} 132}
131 133
132 134
diff --git a/firmware/target/arm/gigabeat/meg-fx/backlight-target.h b/firmware/target/arm/gigabeat/meg-fx/backlight-target.h
index 781fb9647b..5f92cee935 100644
--- a/firmware/target/arm/gigabeat/meg-fx/backlight-target.h
+++ b/firmware/target/arm/gigabeat/meg-fx/backlight-target.h
@@ -76,7 +76,7 @@ void __buttonlight_mode(enum buttonlight_mode mode,
76 unsigned short brightness); 76 unsigned short brightness);
77 77
78 78
79void __backlight_init(void); 79bool __backlight_init(void);
80void __backlight_on(void); 80void __backlight_on(void);
81void __backlight_off(void); 81void __backlight_off(void);
82void __backlight_set_brightness(int val); 82void __backlight_set_brightness(int val);
diff --git a/firmware/target/coldfire/iaudio/x5/backlight-target.h b/firmware/target/coldfire/iaudio/x5/backlight-target.h
index e6feb8bc0c..e70bea08e4 100644
--- a/firmware/target/coldfire/iaudio/x5/backlight-target.h
+++ b/firmware/target/coldfire/iaudio/x5/backlight-target.h
@@ -20,7 +20,7 @@
20#define BACKLIGHT_TARGET_H 20#define BACKLIGHT_TARGET_H
21 21
22#define __BACKLIGHT_INIT 22#define __BACKLIGHT_INIT
23void __backlight_init(void); 23bool __backlight_init(void);
24void __backlight_on(void); 24void __backlight_on(void);
25void __backlight_off(void); 25void __backlight_off(void);
26void __backlight_set_brightness(int val); 26void __backlight_set_brightness(int val);
diff --git a/firmware/target/coldfire/iaudio/x5/backlight-x5.c b/firmware/target/coldfire/iaudio/x5/backlight-x5.c
index 9b50993d90..a2682ff1ae 100644
--- a/firmware/target/coldfire/iaudio/x5/backlight-x5.c
+++ b/firmware/target/coldfire/iaudio/x5/backlight-x5.c
@@ -24,10 +24,12 @@
24#include "pcf50606.h" 24#include "pcf50606.h"
25#include "lcd.h" 25#include "lcd.h"
26 26
27void __backlight_init(void) 27bool __backlight_init(void)
28{ 28{
29 __backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING); 29 __backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING);
30 __backlight_on(); 30 __backlight_on();
31
32 return true; /* Backlight always ON after boot. */
31} 33}
32 34
33void __backlight_on(void) 35void __backlight_on(void)
diff --git a/firmware/target/coldfire/iriver/backlight-target.h b/firmware/target/coldfire/iriver/backlight-target.h
index ac146eac83..e653fa1ffb 100644
--- a/firmware/target/coldfire/iriver/backlight-target.h
+++ b/firmware/target/coldfire/iriver/backlight-target.h
@@ -20,7 +20,7 @@
20#define BACKLIGHT_TARGET_H 20#define BACKLIGHT_TARGET_H
21 21
22#define __BACKLIGHT_INIT 22#define __BACKLIGHT_INIT
23void __backlight_init(void); 23bool __backlight_init(void); /* Returns backlight current state (true=ON). */
24void __backlight_on(void); 24void __backlight_on(void);
25void __backlight_off(void); 25void __backlight_off(void);
26#ifdef HAVE_BACKLIGHT_BRIGHTNESS 26#ifdef HAVE_BACKLIGHT_BRIGHTNESS
diff --git a/firmware/target/coldfire/iriver/h100/backlight-h100.c b/firmware/target/coldfire/iriver/h100/backlight-h100.c
index 62c24dc861..7cff965ff9 100644
--- a/firmware/target/coldfire/iriver/h100/backlight-h100.c
+++ b/firmware/target/coldfire/iriver/h100/backlight-h100.c
@@ -24,11 +24,13 @@
24#include "backlight.h" 24#include "backlight.h"
25#include "lcd.h" 25#include "lcd.h"
26 26
27void __backlight_init(void) 27/* Returns the current state of the backlight (true=ON, false=OFF). */
28bool __backlight_init(void)
28{ 29{
29 or_l(0x00020000, &GPIO1_ENABLE); 30 or_l(0x00020000, &GPIO1_ENABLE);
30 or_l(0x00020000, &GPIO1_FUNCTION); 31 or_l(0x00020000, &GPIO1_FUNCTION);
31 and_l(~0x00020000, &GPIO1_OUT); /* Start with the backlight ON */ 32
33 return (GPIO1_OUT & 0x00020000) ? false : true;
32} 34}
33 35
34void __backlight_on(void) 36void __backlight_on(void)
diff --git a/firmware/target/coldfire/iriver/h300/backlight-h300.c b/firmware/target/coldfire/iriver/h300/backlight-h300.c
index ef1d6d344d..4cec54f0d7 100644
--- a/firmware/target/coldfire/iriver/h300/backlight-h300.c
+++ b/firmware/target/coldfire/iriver/h300/backlight-h300.c
@@ -25,11 +25,13 @@
25#include "pcf50606.h" 25#include "pcf50606.h"
26#include "lcd.h" 26#include "lcd.h"
27 27
28void __backlight_init(void) 28bool __backlight_init(void)
29{ 29{
30 or_l(0x00020000, &GPIO1_ENABLE); 30 or_l(0x00020000, &GPIO1_ENABLE);
31 or_l(0x00020000, &GPIO1_FUNCTION); 31 or_l(0x00020000, &GPIO1_FUNCTION);
32 or_l(0x00020000, &GPIO1_OUT); /* Start with the backlight ON */ 32 or_l(0x00020000, &GPIO1_OUT); /* Start with the backlight ON */
33
34 return true; /* Backlight always ON after boot. */
33} 35}
34 36
35void __backlight_on(void) 37void __backlight_on(void)