summaryrefslogtreecommitdiff
path: root/firmware/backlight.c
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 /firmware/backlight.c
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
Diffstat (limited to 'firmware/backlight.c')
-rw-r--r--firmware/backlight.c20
1 files changed, 9 insertions, 11 deletions
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