summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2006-11-10 01:25:52 +0000
committerMichael Sevakis <jethead71@rockbox.org>2006-11-10 01:25:52 +0000
commitcf59a4fc1d21c2a1d6cfc019f97268275d4a8581 (patch)
treea00e4a8e6d6c993b4195c0e2291d3cbf93312989
parentf64f589d2efeb2749314bb9f91523b4555ded2d5 (diff)
downloadrockbox-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.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 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);