summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/backlight.c29
-rw-r--r--firmware/export/config-h300.h6
-rw-r--r--firmware/export/config-iaudiox5.h6
-rwxr-xr-xfirmware/target/coldfire/iaudio/x5/backlight-target.h1
-rwxr-xr-xfirmware/target/coldfire/iaudio/x5/backlight-x5.c10
-rw-r--r--firmware/target/coldfire/iriver/backlight-target.h3
-rw-r--r--firmware/target/coldfire/iriver/h300/backlight-h300.c10
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)
820void backlight_set_brightness(int val) 817void 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
22void __backlight_on(void); 22void __backlight_on(void);
23void __backlight_off(void); 23void __backlight_off(void);
24void __backlight_set_brightness(int val);
24void __remote_backlight_on(void); 25void __remote_backlight_on(void);
25void __remote_backlight_off(void); 26void __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 */
44void __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
43void __remote_backlight_on(void) 53void __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
22void __backlight_on(void); 22void __backlight_on(void);
23void __backlight_off(void); 23void __backlight_off(void);
24#ifdef HAVE_BACKLIGHT_BRIGHTNESS
25void __backlight_set_brightness(int val);
26#endif
24void __remote_backlight_on(void); 27void __remote_backlight_on(void);
25void __remote_backlight_off(void); 28void __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 */
42void __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
41void __remote_backlight_on(void) 51void __remote_backlight_on(void)
42{ 52{
43 and_l(~0x00000002, &GPIO1_OUT); 53 and_l(~0x00000002, &GPIO1_OUT);