diff options
-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 7b499f26bf..e1d92581c4 100644 --- a/firmware/backlight.c +++ b/firmware/backlight.c | |||
@@ -813,35 +813,18 @@ bool is_remote_backlight_on(void) {return true;} | |||
813 | #endif | 813 | #endif |
814 | #endif /* defined(CONFIG_BACKLIGHT) && !defined(BOOTLOADER) */ | 814 | #endif /* defined(CONFIG_BACKLIGHT) && !defined(BOOTLOADER) */ |
815 | 815 | ||
816 | /* TODO: Move low level code to target/ tree. Create | ||
817 | __backlight_set_brightness and call from here. */ | ||
818 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS | 816 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS |
819 | #if defined(IRIVER_H300_SERIES) || defined(IAUDIO_X5) | ||
820 | void backlight_set_brightness(int val) | 817 | void backlight_set_brightness(int val) |
821 | { | 818 | { |
822 | #ifndef SIMULATOR | 819 | #ifndef SIMULATOR |
823 | /* set brightness by changing the PWM | 820 | if (val < MIN_BRIGHTNESS_SETTING) |
824 | * accepts 0..15 but note that 0 and 1 give a black display on H300! | 821 | val = MIN_BRIGHTNESS_SETTING; |
825 | * 0 is black on the X5. | 822 | else if (val > MAX_BRIGHTNESS_SETTING) |
826 | */ | 823 | val = MAX_BRIGHTNESS_SETTING; |
827 | 824 | ||
828 | /* disable IRQs while bitbanging */ | 825 | __backlight_set_brightness(val); |
829 | int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); | ||
830 | |||
831 | /* Clamp setting to range */ | ||
832 | if(val<MIN_BRIGHTNESS_SETTING) | ||
833 | val=MIN_BRIGHTNESS_SETTING; | ||
834 | else if(val>MAX_BRIGHTNESS_SETTING) | ||
835 | val=MAX_BRIGHTNESS_SETTING; | ||
836 | |||
837 | pcf50606_write(0x35, (val << 1) | 0x01); /* 512Hz, Enable PWM */ | ||
838 | |||
839 | /* enable IRQs again */ | ||
840 | set_irq_level(old_irq_level); | ||
841 | #else | 826 | #else |
842 | val=0; | 827 | (void)val; |
843 | #endif | 828 | #endif |
844 | } | 829 | } |
845 | #endif | ||
846 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ | 830 | #endif /* HAVE_BACKLIGHT_BRIGHTNESS */ |
847 | |||
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 @@ | |||
156 | #define MAX_CONTRAST_SETTING 63 | 156 | #define MAX_CONTRAST_SETTING 63 |
157 | #define DEFAULT_CONTRAST_SETTING 40 | 157 | #define DEFAULT_CONTRAST_SETTING 40 |
158 | 158 | ||
159 | /* Main LCD backlight brightness range and defaults */ | ||
160 | /* accepts 0..15 but note that 0 and 1 give a black display on H300! */ | ||
161 | #define MIN_BRIGHTNESS_SETTING 2 /* 2/16 (12.50%) */ | ||
162 | #define MAX_BRIGHTNESS_SETTING 15 /* 15/16 (93.75%) */ | ||
163 | #define DEFAULT_BRIGHTNESS_SETTING 9 /* 9/16 (56.25%) */ | ||
164 | |||
159 | /* Remote LCD contrast range and defaults */ | 165 | /* Remote LCD contrast range and defaults */ |
160 | #define MIN_REMOTE_CONTRAST_SETTING MIN_CONTRAST_SETTING | 166 | #define MIN_REMOTE_CONTRAST_SETTING MIN_CONTRAST_SETTING |
161 | #define MAX_REMOTE_CONTRAST_SETTING MAX_CONTRAST_SETTING | 167 | #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 @@ | |||
72 | #define MAX_REMOTE_CONTRAST_SETTING 35 | 72 | #define MAX_REMOTE_CONTRAST_SETTING 35 |
73 | #define DEFAULT_REMOTE_CONTRAST_SETTING 24 /* Match boot contrast */ | 73 | #define DEFAULT_REMOTE_CONTRAST_SETTING 24 /* Match boot contrast */ |
74 | 74 | ||
75 | /* Main LCD backlight brightness range and defaults */ | ||
76 | /* PCF50506 can output 0%-100% duty cycle but D305A expects %15-100%. */ | ||
77 | #define MIN_BRIGHTNESS_SETTING 1 /* 15/16 (93.75%) */ | ||
78 | #define MAX_BRIGHTNESS_SETTING 13 /* 3/16 (18.75%) */ | ||
79 | #define DEFAULT_BRIGHTNESS_SETTING 8 /* 8/16 (50.00%) = x5 boot default */ | ||
80 | |||
75 | /* Define this for LCD backlight available */ | 81 | /* Define this for LCD backlight available */ |
76 | #define CONFIG_BACKLIGHT BL_X5 /* PCF50606 I2C */ | 82 | #define CONFIG_BACKLIGHT BL_X5 /* PCF50606 I2C */ |
77 | #define HAVE_BACKLIGHT_BRIGHTNESS | 83 | #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 @@ | |||
21 | 21 | ||
22 | void __backlight_on(void); | 22 | void __backlight_on(void); |
23 | void __backlight_off(void); | 23 | void __backlight_off(void); |
24 | void __backlight_set_brightness(int val); | ||
24 | void __remote_backlight_on(void); | 25 | void __remote_backlight_on(void); |
25 | void __remote_backlight_off(void); | 26 | void __remote_backlight_off(void); |
26 | 27 | ||
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) | |||
40 | lcd_enable(false); | 40 | lcd_enable(false); |
41 | } | 41 | } |
42 | 42 | ||
43 | /* set brightness by changing the PWM */ | ||
44 | void __backlight_set_brightness(int val) | ||
45 | { | ||
46 | /* disable IRQs while bitbanging */ | ||
47 | int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); | ||
48 | pcf50606_write(0x35, (val << 1) | 0x01); /* 512Hz, Enable PWM */ | ||
49 | /* enable IRQs again */ | ||
50 | set_irq_level(old_irq_level); | ||
51 | } | ||
52 | |||
43 | void __remote_backlight_on(void) | 53 | void __remote_backlight_on(void) |
44 | { | 54 | { |
45 | and_l(~0x00200000, &GPIO_OUT); | 55 | 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 @@ | |||
21 | 21 | ||
22 | void __backlight_on(void); | 22 | void __backlight_on(void); |
23 | void __backlight_off(void); | 23 | void __backlight_off(void); |
24 | #ifdef HAVE_BACKLIGHT_BRIGHTNESS | ||
25 | void __backlight_set_brightness(int val); | ||
26 | #endif | ||
24 | void __remote_backlight_on(void); | 27 | void __remote_backlight_on(void); |
25 | void __remote_backlight_off(void); | 28 | void __remote_backlight_off(void); |
26 | 29 | ||
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) | |||
38 | lcd_enable(false); | 38 | lcd_enable(false); |
39 | } | 39 | } |
40 | 40 | ||
41 | /* set brightness by changing the PWM */ | ||
42 | void __backlight_set_brightness(int val) | ||
43 | { | ||
44 | /* disable IRQs while bitbanging */ | ||
45 | int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); | ||
46 | pcf50606_write(0x35, (val << 1) | 0x01); /* 512Hz, Enable PWM */ | ||
47 | /* enable IRQs again */ | ||
48 | set_irq_level(old_irq_level); | ||
49 | } | ||
50 | |||
41 | void __remote_backlight_on(void) | 51 | void __remote_backlight_on(void) |
42 | { | 52 | { |
43 | and_l(~0x00000002, &GPIO1_OUT); | 53 | and_l(~0x00000002, &GPIO1_OUT); |