From cf59a4fc1d21c2a1d6cfc019f97268275d4a8581 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Fri, 10 Nov 2006 01:25:52 +0000 Subject: H300/X5: Moved backlight brightness code to target tree. Created __backlight_set_brightness in backlight-(target).c. backlight_set_brightness range clamps and calls the backlight driver. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11488 a1c6a512-1295-4272-9138-f99709370657 --- firmware/backlight.c | 29 +++++----------------- firmware/export/config-h300.h | 6 +++++ firmware/export/config-iaudiox5.h | 6 +++++ .../target/coldfire/iaudio/x5/backlight-target.h | 1 + firmware/target/coldfire/iaudio/x5/backlight-x5.c | 10 ++++++++ firmware/target/coldfire/iriver/backlight-target.h | 3 +++ .../target/coldfire/iriver/h300/backlight-h300.c | 10 ++++++++ 7 files changed, 42 insertions(+), 23 deletions(-) diff --git a/firmware/backlight.c b/firmware/backlight.c index 7b499f26bf..e1d92581c4 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c @@ -813,35 +813,18 @@ bool is_remote_backlight_on(void) {return true;} #endif #endif /* defined(CONFIG_BACKLIGHT) && !defined(BOOTLOADER) */ -/* TODO: Move low level code to target/ tree. Create - __backlight_set_brightness and call from here. */ #ifdef HAVE_BACKLIGHT_BRIGHTNESS -#if defined(IRIVER_H300_SERIES) || defined(IAUDIO_X5) void backlight_set_brightness(int val) { #ifndef SIMULATOR - /* set brightness by changing the PWM - * accepts 0..15 but note that 0 and 1 give a black display on H300! - * 0 is black on the X5. - */ + if (val < MIN_BRIGHTNESS_SETTING) + val = MIN_BRIGHTNESS_SETTING; + else if (val > MAX_BRIGHTNESS_SETTING) + val = MAX_BRIGHTNESS_SETTING; - /* disable IRQs while bitbanging */ - int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); - - /* Clamp setting to range */ - if(valMAX_BRIGHTNESS_SETTING) - val=MAX_BRIGHTNESS_SETTING; - - pcf50606_write(0x35, (val << 1) | 0x01); /* 512Hz, Enable PWM */ - - /* enable IRQs again */ - set_irq_level(old_irq_level); + __backlight_set_brightness(val); #else - val=0; + (void)val; #endif } -#endif #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ - diff --git a/firmware/export/config-h300.h b/firmware/export/config-h300.h index 748635dcb4..14034c61f0 100644 --- a/firmware/export/config-h300.h +++ b/firmware/export/config-h300.h @@ -156,6 +156,12 @@ #define MAX_CONTRAST_SETTING 63 #define DEFAULT_CONTRAST_SETTING 40 +/* Main LCD backlight brightness range and defaults */ +/* accepts 0..15 but note that 0 and 1 give a black display on H300! */ +#define MIN_BRIGHTNESS_SETTING 2 /* 2/16 (12.50%) */ +#define MAX_BRIGHTNESS_SETTING 15 /* 15/16 (93.75%) */ +#define DEFAULT_BRIGHTNESS_SETTING 9 /* 9/16 (56.25%) */ + /* Remote LCD contrast range and defaults */ #define MIN_REMOTE_CONTRAST_SETTING MIN_CONTRAST_SETTING #define MAX_REMOTE_CONTRAST_SETTING MAX_CONTRAST_SETTING diff --git a/firmware/export/config-iaudiox5.h b/firmware/export/config-iaudiox5.h index ddcac0e8ee..d45f58f14c 100644 --- a/firmware/export/config-iaudiox5.h +++ b/firmware/export/config-iaudiox5.h @@ -72,6 +72,12 @@ #define MAX_REMOTE_CONTRAST_SETTING 35 #define DEFAULT_REMOTE_CONTRAST_SETTING 24 /* Match boot contrast */ +/* Main LCD backlight brightness range and defaults */ +/* PCF50506 can output 0%-100% duty cycle but D305A expects %15-100%. */ +#define MIN_BRIGHTNESS_SETTING 1 /* 15/16 (93.75%) */ +#define MAX_BRIGHTNESS_SETTING 13 /* 3/16 (18.75%) */ +#define DEFAULT_BRIGHTNESS_SETTING 8 /* 8/16 (50.00%) = x5 boot default */ + /* Define this for LCD backlight available */ #define CONFIG_BACKLIGHT BL_X5 /* PCF50606 I2C */ #define HAVE_BACKLIGHT_BRIGHTNESS diff --git a/firmware/target/coldfire/iaudio/x5/backlight-target.h b/firmware/target/coldfire/iaudio/x5/backlight-target.h index 262650ae24..e982e656d6 100755 --- a/firmware/target/coldfire/iaudio/x5/backlight-target.h +++ b/firmware/target/coldfire/iaudio/x5/backlight-target.h @@ -21,6 +21,7 @@ void __backlight_on(void); void __backlight_off(void); +void __backlight_set_brightness(int val); void __remote_backlight_on(void); void __remote_backlight_off(void); diff --git a/firmware/target/coldfire/iaudio/x5/backlight-x5.c b/firmware/target/coldfire/iaudio/x5/backlight-x5.c index 70a5d957b6..9d02c35988 100755 --- a/firmware/target/coldfire/iaudio/x5/backlight-x5.c +++ b/firmware/target/coldfire/iaudio/x5/backlight-x5.c @@ -40,6 +40,16 @@ void __backlight_off(void) lcd_enable(false); } +/* set brightness by changing the PWM */ +void __backlight_set_brightness(int val) +{ + /* disable IRQs while bitbanging */ + int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); + pcf50606_write(0x35, (val << 1) | 0x01); /* 512Hz, Enable PWM */ + /* enable IRQs again */ + set_irq_level(old_irq_level); +} + void __remote_backlight_on(void) { and_l(~0x00200000, &GPIO_OUT); diff --git a/firmware/target/coldfire/iriver/backlight-target.h b/firmware/target/coldfire/iriver/backlight-target.h index 262650ae24..086ab02761 100644 --- a/firmware/target/coldfire/iriver/backlight-target.h +++ b/firmware/target/coldfire/iriver/backlight-target.h @@ -21,6 +21,9 @@ void __backlight_on(void); void __backlight_off(void); +#ifdef HAVE_BACKLIGHT_BRIGHTNESS +void __backlight_set_brightness(int val); +#endif void __remote_backlight_on(void); void __remote_backlight_off(void); diff --git a/firmware/target/coldfire/iriver/h300/backlight-h300.c b/firmware/target/coldfire/iriver/h300/backlight-h300.c index d5322c2cf7..50bd757612 100644 --- a/firmware/target/coldfire/iriver/h300/backlight-h300.c +++ b/firmware/target/coldfire/iriver/h300/backlight-h300.c @@ -38,6 +38,16 @@ void __backlight_off(void) lcd_enable(false); } +/* set brightness by changing the PWM */ +void __backlight_set_brightness(int val) +{ + /* disable IRQs while bitbanging */ + int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); + pcf50606_write(0x35, (val << 1) | 0x01); /* 512Hz, Enable PWM */ + /* enable IRQs again */ + set_irq_level(old_irq_level); +} + void __remote_backlight_on(void) { and_l(~0x00000002, &GPIO1_OUT); -- cgit v1.2.3