diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2006-07-25 15:21:31 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2006-07-25 15:21:31 +0000 |
commit | f18f9a806142f96f435480473796e12b4a11e7b4 (patch) | |
tree | ea05323a5695ea0d4ff7cf5d3094dbf8a6a2b167 /firmware | |
parent | 8bb4bab54b580b36d819e4e4fcc864a3335ef270 (diff) | |
download | rockbox-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')
-rw-r--r-- | firmware/backlight.c | 20 | ||||
-rw-r--r-- | firmware/export/backlight.h | 13 | ||||
-rwxr-xr-x | firmware/target/coldfire/iaudio/x5/backlight-x5.c | 5 | ||||
-rw-r--r-- | firmware/target/coldfire/iaudio/x5/pcf50606-x5.c | 10 |
4 files changed, 30 insertions, 18 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;} | |||
659 | void backlight_set_brightness(int val) | 659 | void 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 | |||
58 | void backlight_set_brightness(int val); | 67 | void 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 @@ | |||
25 | void __backlight_on(void) | 25 | void __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 | ||
32 | void __backlight_off(void) | 32 | void __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 | } |