summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2006-07-25 15:21:31 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2006-07-25 15:21:31 +0000
commitf18f9a806142f96f435480473796e12b4a11e7b4 (patch)
treeea05323a5695ea0d4ff7cf5d3094dbf8a6a2b167
parent8bb4bab54b580b36d819e4e4fcc864a3335ef270 (diff)
downloadrockbox-f18f9a806142f96f435480473796e12b4a11e7b4.tar.gz
rockbox-f18f9a806142f96f435480473796e12b4a11e7b4.zip
Patch FS#5712 by Michael Sevakis - X5 Backlight brightness improvement/fix
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10322 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/settings.c2
-rw-r--r--docs/CREDITS1
-rw-r--r--firmware/backlight.c20
-rw-r--r--firmware/export/backlight.h13
-rwxr-xr-xfirmware/target/coldfire/iaudio/x5/backlight-x5.c5
-rw-r--r--firmware/target/coldfire/iaudio/x5/pcf50606-x5.c10
6 files changed, 32 insertions, 19 deletions
diff --git a/apps/settings.c b/apps/settings.c
index db3b45d155..b3623f233a 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -349,7 +349,7 @@ static const struct bit_entry hd_bits[] =
349 "remote caption backlight", off_on }, 349 "remote caption backlight", off_on },
350#endif 350#endif
351#ifdef HAVE_BACKLIGHT_BRIGHTNESS 351#ifdef HAVE_BACKLIGHT_BRIGHTNESS
352 {4, S_O(brightness), 9, "brightness", NULL }, 352 {4, S_O(brightness), DEFAULT_BRIGHTNESS_SETTING, "brightness", NULL },
353#endif 353#endif
354#ifdef HAVE_BACKLIGHT_PWM_FADING 354#ifdef HAVE_BACKLIGHT_PWM_FADING
355 /* backlight fading */ 355 /* backlight fading */
diff --git a/docs/CREDITS b/docs/CREDITS
index fa6ec5d9ff..e71ae8ca11 100644
--- a/docs/CREDITS
+++ b/docs/CREDITS
@@ -216,3 +216,4 @@ Daniel Ankers
216Paul Louden 216Paul Louden
217Rainer Sinsch 217Rainer Sinsch
218Plácido Revilla 218Plácido Revilla
219Michael Sevakis
diff --git a/firmware/backlight.c b/firmware/backlight.c
index 8285ff894b..1e72c6a81d 100644
--- a/firmware/backlight.c
+++ b/firmware/backlight.c
@@ -659,28 +659,26 @@ bool is_remote_backlight_on(void) {return true;}
659void backlight_set_brightness(int val) 659void backlight_set_brightness(int val)
660{ 660{
661#ifndef SIMULATOR 661#ifndef SIMULATOR
662 /* set H300 brightness by changing the PWM 662 /* set brightness by changing the PWM
663 accepts 0..15 but note that 0 and 1 give a black display! */ 663 * accepts 0..15 but note that 0 and 1 give a black display on H300!
664 * 0 is black on the X5.
665 */
664 666
665 /* disable IRQs while bitbanging */ 667 /* disable IRQs while bitbanging */
666 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL); 668 int old_irq_level = set_irq_level(HIGHEST_IRQ_LEVEL);
667 669
668 val &= 0x0F; 670 /* Clamp setting to range */
669 if(val<MIN_BRIGHTNESS_SETTING) 671 if(val<MIN_BRIGHTNESS_SETTING)
670 val=MIN_BRIGHTNESS_SETTING; 672 val=MIN_BRIGHTNESS_SETTING;
673 else if(val>MAX_BRIGHTNESS_SETTING)
674 val=MAX_BRIGHTNESS_SETTING;
671 675
672 /* shift one bit left */ 676 pcf50606_write(0x35, (val << 1) | 0x01); /* 512Hz, Enable PWM */
673 val <<= 1;
674
675 /* enable PWM */
676 val |= 0x01;
677
678 pcf50606_write(0x35, val);
679 677
680 /* enable IRQs again */ 678 /* enable IRQs again */
681 set_irq_level(old_irq_level); 679 set_irq_level(old_irq_level);
682#else 680#else
683 val=0; 681 val=0;
684#endif 682#endif
685} 683}
686#endif 684#endif
diff --git a/firmware/export/backlight.h b/firmware/export/backlight.h
index c1a7ade38f..09960b7537 100644
--- a/firmware/export/backlight.h
+++ b/firmware/export/backlight.h
@@ -53,7 +53,16 @@ void sim_remote_backlight(int value);
53#endif 53#endif
54 54
55#ifdef HAVE_BACKLIGHT_BRIGHTNESS 55#ifdef HAVE_BACKLIGHT_BRIGHTNESS
56#define MIN_BRIGHTNESS_SETTING 2 56#ifdef IAUDIO_X5
57#define MAX_BRIGHTNESS_SETTING 15 57/* PFC50506 can output 0%-100% duty cycle but D305A expects %15-100%. */
58#define MIN_BRIGHTNESS_SETTING 1 /* 15/16 (93.75%) */
59#define MAX_BRIGHTNESS_SETTING 13 /* 3/16 (18.75%) */
60#define DEFAULT_BRIGHTNESS_SETTING 8 /* 8/16 (50.00%) = x5 boot default */
61#else
62#define MIN_BRIGHTNESS_SETTING 2 /* 2/16 (12.50%) */
63#define MAX_BRIGHTNESS_SETTING 15 /* 15/16 (93.75%) */
64#define DEFAULT_BRIGHTNESS_SETTING 9 /* 9/16 (56.25%) */
65#endif /* HAVE_BACKLIGHT_BRIGHTNESS */
66
58void backlight_set_brightness(int val); 67void backlight_set_brightness(int val);
59#endif 68#endif
diff --git a/firmware/target/coldfire/iaudio/x5/backlight-x5.c b/firmware/target/coldfire/iaudio/x5/backlight-x5.c
index e48e55d27b..2b09d14b55 100755
--- a/firmware/target/coldfire/iaudio/x5/backlight-x5.c
+++ b/firmware/target/coldfire/iaudio/x5/backlight-x5.c
@@ -25,14 +25,13 @@
25void __backlight_on(void) 25void __backlight_on(void)
26{ 26{
27 int level = set_irq_level(HIGHEST_IRQ_LEVEL); 27 int level = set_irq_level(HIGHEST_IRQ_LEVEL);
28 pcf50606_write(0x38, 0x30); /* Backlight ON */ 28 pcf50606_write(0x38, 0xb0); /* Backlight ON, GPO1INV=1, GPO1ACT=011 */
29 set_irq_level(level); 29 set_irq_level(level);
30} 30}
31 31
32void __backlight_off(void) 32void __backlight_off(void)
33{ 33{
34 int level = set_irq_level(HIGHEST_IRQ_LEVEL); 34 int level = set_irq_level(HIGHEST_IRQ_LEVEL);
35 pcf50606_write(0x38, 0x70); /* Backlight OFF */ 35 pcf50606_write(0x38, 0x80); /* Backlight OFF, GPO1INV=1, GPO1ACT=000 */
36 set_irq_level(level); 36 set_irq_level(level);
37} 37}
38
diff --git a/firmware/target/coldfire/iaudio/x5/pcf50606-x5.c b/firmware/target/coldfire/iaudio/x5/pcf50606-x5.c
index da13f1d65e..158e0fbbab 100644
--- a/firmware/target/coldfire/iaudio/x5/pcf50606-x5.c
+++ b/firmware/target/coldfire/iaudio/x5/pcf50606-x5.c
@@ -169,6 +169,12 @@ void pcf50606_init(void)
169 pcf50606_write(0x39, 0x00); /* GPOOD0 = green led OFF */ 169 pcf50606_write(0x39, 0x00); /* GPOOD0 = green led OFF */
170 pcf50606_write(0x3a, 0x00); /* GPOOD1 = red led OFF */ 170 pcf50606_write(0x3a, 0x00); /* GPOOD1 = red led OFF */
171 171
172 pcf50606_write(0x35, 0xf1); /* Backlight PWM = 7kHz 8/16 */ 172 /* D305A datasheet says PWM clock frequency should be 400Hz - 2000Hz so
173 pcf50606_write(0x38, 0x30); /* Backlight ON */ 173 * I changed it from 7kHz to 512Hz. The lower frequency looks the same.
174 * GPO1 is also inverted so that display brightness increases with PWM
175 * setting which also lets the X5 share the H300's
176 * set_backlight_brightness code.
177 */
178 pcf50606_write(0x35, 0x11); /* Backlight PWM = 512Hz, 8/16, Active */
179 pcf50606_write(0x38, 0xb0); /* Backlight ON, GPO1INV=1, GPO1ACT=011 */
174} 180}