diff options
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/s5l8700/backlight-meizu.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/firmware/target/arm/s5l8700/backlight-meizu.c b/firmware/target/arm/s5l8700/backlight-meizu.c index 43cbb16a2d..23dcbb1820 100644 --- a/firmware/target/arm/s5l8700/backlight-meizu.c +++ b/firmware/target/arm/s5l8700/backlight-meizu.c | |||
@@ -58,6 +58,8 @@ void INT_TIMERA(void) | |||
58 | 58 | ||
59 | void _backlight_set_brightness(int brightness) | 59 | void _backlight_set_brightness(int brightness) |
60 | { | 60 | { |
61 | static const unsigned char logtable[] = {0, 1, 2, 3, 5, 7, 10, 15, 22, 31, 44, 63, 90, 127, 180, 255}; | ||
62 | |||
61 | if (brightness == MIN_BRIGHTNESS_SETTING) { | 63 | if (brightness == MIN_BRIGHTNESS_SETTING) { |
62 | /* turn backlight fully off and disable interrupt */ | 64 | /* turn backlight fully off and disable interrupt */ |
63 | PDAT0 &= ~(1 << 2); | 65 | PDAT0 &= ~(1 << 2); |
@@ -70,7 +72,7 @@ void _backlight_set_brightness(int brightness) | |||
70 | } | 72 | } |
71 | else { | 73 | else { |
72 | /* set PWM width and enable interrupt */ | 74 | /* set PWM width and enable interrupt */ |
73 | TADATA0 = brightness; | 75 | TADATA0 = logtable[brightness]; |
74 | INTMSK |= (1 << 5); | 76 | INTMSK |= (1 << 5); |
75 | } | 77 | } |
76 | } | 78 | } |
@@ -101,8 +103,8 @@ bool _backlight_init(void) | |||
101 | (1 << 11) | /* TA_START */ | 103 | (1 << 11) | /* TA_START */ |
102 | (3 << 8) | /* TA_CS = PCLK / 64 */ | 104 | (3 << 8) | /* TA_CS = PCLK / 64 */ |
103 | (1 << 4); /* TA_MODE_SEL = PWM mode */ | 105 | (1 << 4); /* TA_MODE_SEL = PWM mode */ |
104 | TADATA1 = MAX_BRIGHTNESS_SETTING; /* set PWM period */ | 106 | TADATA1 = 255; /* set PWM period */ |
105 | TAPRE = 100; /* prescaler */ | 107 | TAPRE = 30; /* prescaler */ |
106 | 108 | ||
107 | _backlight_on(); | 109 | _backlight_on(); |
108 | 110 | ||