diff options
author | Bertrik Sikken <bertrik@sikken.nl> | 2009-08-01 18:28:25 +0000 |
---|---|---|
committer | Bertrik Sikken <bertrik@sikken.nl> | 2009-08-01 18:28:25 +0000 |
commit | 1b2fe50f3dd6d808fffc707428b39329a15d5752 (patch) | |
tree | d8a9c71f42775db9dc9c0a04e64c8ced2101fcfe /firmware/target/arm/s5l8700/backlight-meizu.c | |
parent | fc570147e66b91686aeffdf9896eb209027cf9ca (diff) | |
download | rockbox-1b2fe50f3dd6d808fffc707428b39329a15d5752.tar.gz rockbox-1b2fe50f3dd6d808fffc707428b39329a15d5752.zip |
Meizu: update backlight brightness curve so backlight is still on at the minimum brightness setting
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22102 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm/s5l8700/backlight-meizu.c')
-rw-r--r-- | firmware/target/arm/s5l8700/backlight-meizu.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/firmware/target/arm/s5l8700/backlight-meizu.c b/firmware/target/arm/s5l8700/backlight-meizu.c index bc0c290e05..4eb6967b94 100644 --- a/firmware/target/arm/s5l8700/backlight-meizu.c +++ b/firmware/target/arm/s5l8700/backlight-meizu.c | |||
@@ -34,29 +34,30 @@ | |||
34 | 34 | ||
35 | void _backlight_set_brightness(int brightness) | 35 | void _backlight_set_brightness(int brightness) |
36 | { | 36 | { |
37 | /* pwm = (sqrt(2)**x)-1, where brightness level x = 0..16 */ | 37 | /* pwm = round(sqrt(2)**x), where brightness level x = 1..16 */ |
38 | static const unsigned char logtable[] = | 38 | static const unsigned int logtable[] = |
39 | {0, 1, 2, 3, 5, 7, 10, 15, 22, 31, 44, 63, 90, 127, 180, 255}; | 39 | {1, 2, 3, 4, 6, 8, 11, 16, 23, 32, 45, 64, 91, 128, 181, 256}; |
40 | 40 | ||
41 | /* set PWM width */ | 41 | /* set PWM width */ |
42 | TCDATA0 = 255 - logtable[brightness]; | 42 | TCDATA0 = logtable[brightness]; |
43 | } | 43 | } |
44 | 44 | ||
45 | void _backlight_on(void) | 45 | void _backlight_on(void) |
46 | { | 46 | { |
47 | /* configure backlight pin P0.2 as timer PWM output */ | ||
48 | PCON0 = ((PCON0 & ~(3 << 4)) | (2 << 4)); | ||
47 | _backlight_set_brightness(backlight_brightness); | 49 | _backlight_set_brightness(backlight_brightness); |
48 | } | 50 | } |
49 | 51 | ||
50 | void _backlight_off(void) | 52 | void _backlight_off(void) |
51 | { | 53 | { |
52 | _backlight_set_brightness(MIN_BRIGHTNESS_SETTING); | 54 | /* configure backlight pin P0.2 as GPIO and switch off */ |
55 | PCON0 = ((PCON0 & ~(3 << 4)) | (1 << 4)); | ||
56 | PDAT0 &= ~(1 << 2); | ||
53 | } | 57 | } |
54 | 58 | ||
55 | bool _backlight_init(void) | 59 | bool _backlight_init(void) |
56 | { | 60 | { |
57 | /* enable backlight pin as timer output */ | ||
58 | PCON0 = ((PCON0 & ~(3 << 4)) | (2 << 4)); | ||
59 | |||
60 | /* enable timer clock */ | 61 | /* enable timer clock */ |
61 | PWRCON &= ~(1 << 4); | 62 | PWRCON &= ~(1 << 4); |
62 | 63 | ||
@@ -64,11 +65,11 @@ bool _backlight_init(void) | |||
64 | TCCMD = (1 << 1); /* TC_CLR */ | 65 | TCCMD = (1 << 1); /* TC_CLR */ |
65 | TCCON = (0 << 13) | /* TC_INT1_EN */ | 66 | TCCON = (0 << 13) | /* TC_INT1_EN */ |
66 | (0 << 12) | /* TC_INT0_EN */ | 67 | (0 << 12) | /* TC_INT0_EN */ |
67 | (0 << 11) | /* TC_START */ | 68 | (1 << 11) | /* TC_START */ |
68 | (3 << 8) | /* TC_CS = PCLK / 64 */ | 69 | (3 << 8) | /* TC_CS = PCLK / 64 */ |
69 | (1 << 4); /* TC_MODE_SEL = PWM mode */ | 70 | (1 << 4); /* TC_MODE_SEL = PWM mode */ |
70 | TCDATA1 = 255; /* set PWM period */ | 71 | TCDATA1 = 256; /* set PWM period */ |
71 | TCPRE = 30; /* prescaler */ | 72 | TCPRE = 20; /* prescaler */ |
72 | TCCMD = (1 << 0); /* TC_EN */ | 73 | TCCMD = (1 << 0); /* TC_EN */ |
73 | 74 | ||
74 | _backlight_on(); | 75 | _backlight_on(); |