From 73cd9f3b63718d1fe927e7ef4294ed902e8a1b73 Mon Sep 17 00:00:00 2001 From: Miika Pekkarinen Date: Fri, 12 Jan 2007 20:26:23 +0000 Subject: Turn backlight ON at boot unless bootloader has already done that. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11992 a1c6a512-1295-4272-9138-f99709370657 --- apps/main.c | 4 ++-- firmware/backlight.c | 24 +++++++++++++++------- .../target/arm/gigabeat/meg-fx/backlight-meg-fx.c | 4 +++- .../target/arm/gigabeat/meg-fx/backlight-target.h | 2 +- .../target/coldfire/iaudio/x5/backlight-target.h | 2 +- firmware/target/coldfire/iaudio/x5/backlight-x5.c | 4 +++- firmware/target/coldfire/iriver/backlight-target.h | 2 +- .../target/coldfire/iriver/h100/backlight-h100.c | 6 ++++-- .../target/coldfire/iriver/h300/backlight-h300.c | 4 +++- 9 files changed, 35 insertions(+), 17 deletions(-) diff --git a/apps/main.c b/apps/main.c index 4b0e98c57a..ccfc68f4f4 100644 --- a/apps/main.c +++ b/apps/main.c @@ -306,6 +306,8 @@ static void init(void) cpu_boost(true); #endif + backlight_init(); + buffer_init(); settings_reset(); @@ -347,8 +349,6 @@ static void init(void) m5636_init(); #endif - backlight_init(); - button_init(); powermgmt_init(); 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; static int fade_out_count = 4; static bool bl_timer_active = false; -static int bl_dim_current = BL_PWM_COUNT; -static int bl_dim_target = BL_PWM_COUNT; +static int bl_dim_current = 0; +static int bl_dim_target = 0; static int bl_pwm_counter = 0; static volatile int bl_cycle_counter = 0; static enum {DIM_STATE_START, DIM_STATE_MAIN} bl_dim_state = DIM_STATE_START; @@ -556,17 +556,21 @@ static void backlight_tick(void) void backlight_init(void) { queue_init(&backlight_queue, true); - create_thread(backlight_thread, backlight_stack, - sizeof(backlight_stack), backlight_thread_name - IF_PRIO(, PRIORITY_SYSTEM)); - tick_add_task(backlight_tick); + #ifdef SIMULATOR /* do nothing */ #elif defined(__BACKLIGHT_INIT) /* Remove the __BACKLIGHT_INIT references when __backlight_init is available on all backlighted targets. Take them out of the backlight-target.h files as well */ - __backlight_init(); + if (__backlight_init()) + { +# if defined(HAVE_BACKLIGHT_PWM_FADING) && !defined(SIMULATOR) + /* If backlight is already on, don't fade in. */ + bl_dim_current = BL_PWM_COUNT; + bl_dim_target = BL_PWM_COUNT; +# endif + } #elif CONFIG_BACKLIGHT == BL_PA14_LO || CONFIG_BACKLIGHT == BL_PA14_HI PACR1 &= ~0x3000; /* Set PA14 (backlight control) to GPIO */ or_b(0x40, &PAIORH); /* ..and output */ @@ -575,6 +579,11 @@ void backlight_init(void) #ifdef HAVE_REMOTE_LCD remote_backlight_on(); #endif + + create_thread(backlight_thread, backlight_stack, + sizeof(backlight_stack), backlight_thread_name + IF_PRIO(, PRIORITY_SYSTEM)); + tick_add_task(backlight_tick); } #ifdef X5_BACKLIGHT_SHUTDOWN @@ -803,6 +812,7 @@ void backlight_init(void) { #ifdef __BACKLIGHT_INIT __backlight_init(); + __backlight_on(); #endif } #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 }; -void __backlight_init(void) +bool __backlight_init(void) { backlight_control = BACKLIGHT_CONTROL_IDLE; @@ -127,6 +127,8 @@ void __backlight_init(void) initial_tick_delay = 2000; /* put the led control on the tick list */ tick_add_task(led_control_service); + + return true; } 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, unsigned short brightness); -void __backlight_init(void); +bool __backlight_init(void); void __backlight_on(void); void __backlight_off(void); void __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 @@ #define BACKLIGHT_TARGET_H #define __BACKLIGHT_INIT -void __backlight_init(void); +bool __backlight_init(void); void __backlight_on(void); void __backlight_off(void); void __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 @@ #include "pcf50606.h" #include "lcd.h" -void __backlight_init(void) +bool __backlight_init(void) { __backlight_set_brightness(DEFAULT_BRIGHTNESS_SETTING); __backlight_on(); + + return true; /* Backlight always ON after boot. */ } void __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 @@ #define BACKLIGHT_TARGET_H #define __BACKLIGHT_INIT -void __backlight_init(void); +bool __backlight_init(void); /* Returns backlight current state (true=ON). */ void __backlight_on(void); void __backlight_off(void); #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 @@ #include "backlight.h" #include "lcd.h" -void __backlight_init(void) +/* Returns the current state of the backlight (true=ON, false=OFF). */ +bool __backlight_init(void) { or_l(0x00020000, &GPIO1_ENABLE); or_l(0x00020000, &GPIO1_FUNCTION); - and_l(~0x00020000, &GPIO1_OUT); /* Start with the backlight ON */ + + return (GPIO1_OUT & 0x00020000) ? false : true; } void __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 @@ #include "pcf50606.h" #include "lcd.h" -void __backlight_init(void) +bool __backlight_init(void) { or_l(0x00020000, &GPIO1_ENABLE); or_l(0x00020000, &GPIO1_FUNCTION); or_l(0x00020000, &GPIO1_OUT); /* Start with the backlight ON */ + + return true; /* Backlight always ON after boot. */ } void __backlight_on(void) -- cgit v1.2.3