diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2006-11-10 01:25:52 +0000 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2006-11-10 01:25:52 +0000 |
| commit | cf59a4fc1d21c2a1d6cfc019f97268275d4a8581 (patch) | |
| tree | a00e4a8e6d6c993b4195c0e2291d3cbf93312989 | |
| parent | f64f589d2efeb2749314bb9f91523b4555ded2d5 (diff) | |
| download | rockbox-cf59a4fc1d21c2a1d6cfc019f97268275d4a8581.zip rockbox-cf59a4fc1d21c2a1d6cfc019f97268275d4a8581.tar.gz rockbox-cf59a4fc1d21c2a1d6cfc019f97268275d4a8581.tar.bz2 rockbox-cf59a4fc1d21c2a1d6cfc019f97268275d4a8581.tar.xz | |
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
| -rw-r--r-- | firmware/backlight.c | 29 | ||||
| -rw-r--r-- | firmware/export/config-h300.h | 6 | ||||
| -rw-r--r-- | firmware/export/config-iaudiox5.h | 6 | ||||
| -rwxr-xr-x | firmware/target/coldfire/iaudio/x5/backlight-target.h | 1 | ||||
| -rwxr-xr-x | firmware/target/coldfire/iaudio/x5/backlight-x5.c | 10 | ||||
| -rw-r--r-- | firmware/target/coldfire/iriver/backlight-target.h | 3 | ||||
| -rw-r--r-- | firmware/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 7b499f2..e1d9258 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(val<MIN_BRIGHTNESS_SETTING) - val=MIN_BRIGHTNESS_SETTING; - else if(val>MAX_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 748635d..14034c6 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 ddcac0e..d45f58f 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 262650a..e982e65 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 70a5d95..9d02c35 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 262650a..086ab02 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 d5322c2..50bd757 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); |