diff options
author | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2009-06-24 19:52:03 +0000 |
---|---|---|
committer | Maurus Cuelenaere <mcuelenaere@gmail.com> | 2009-06-24 19:52:03 +0000 |
commit | 5acfa34b9c60b9a2e5236b0fecd96e2c54e4e242 (patch) | |
tree | afbd33ffed38066b17a7158edd9d57b402cbb84e /firmware/target/mips | |
parent | 763a7d74573dfc3ab2bff99332f00f8dec29cf0c (diff) | |
download | rockbox-5acfa34b9c60b9a2e5236b0fecd96e2c54e4e242.tar.gz rockbox-5acfa34b9c60b9a2e5236b0fecd96e2c54e4e242.zip |
Use a logarithmic scale for the Onda VX747 backlight (thanks to Bertrik Sikken)
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21492 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/mips')
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/onda_vx747/backlight-onda_vx7X7.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/onda_vx747/backlight-onda_vx7X7.c b/firmware/target/mips/ingenic_jz47xx/onda_vx747/backlight-onda_vx7X7.c index e59f1812c1..48c4e2e636 100644 --- a/firmware/target/mips/ingenic_jz47xx/onda_vx747/backlight-onda_vx7X7.c +++ b/firmware/target/mips/ingenic_jz47xx/onda_vx747/backlight-onda_vx7X7.c @@ -32,23 +32,20 @@ * [PWM half rate, PWM full rate[ -> backlight on * [PWM full rate, PWM full rate] -> counter reset to 0 */ -static int old_val; +static int old_val = MAX_BRIGHTNESS_SETTING; +static const unsigned char logtable[] = {255, 254, 253, 252, 250, 248, 245, 240, 233, 224, 211, 192, 165, 128, 75, 0}; static void set_backlight(int val) { - /* The pulse repetition frequency should be greater than 100Hz so - the flickering is not perceptible to the human eye but - not greater than about 1kHz. */ + if(val == old_val) + return; /* Clock = 32 768 Hz */ - /* 1 <= val <= 30 */ - int cycle = (MAX_BRIGHTNESS_SETTING - val + 1); - __tcu_disable_pwm_output(BACKLIGHT_PWM); __tcu_stop_counter(BACKLIGHT_PWM); __tcu_set_count(BACKLIGHT_PWM, 0); - __tcu_set_half_data(BACKLIGHT_PWM, cycle-1); - __tcu_set_full_data(BACKLIGHT_PWM, cycle); + __tcu_set_half_data(BACKLIGHT_PWM, logtable[val]); + __tcu_set_full_data(BACKLIGHT_PWM, 256); __tcu_start_counter(BACKLIGHT_PWM); __tcu_enable_pwm_output(BACKLIGHT_PWM); @@ -58,7 +55,8 @@ static void set_backlight(int val) static void set_backlight_on(void) { - set_backlight(old_val); + __tcu_start_counter(BACKLIGHT_PWM); + __tcu_enable_pwm_output(BACKLIGHT_PWM); } static void set_backlight_off(void) @@ -83,7 +81,9 @@ bool _backlight_init(void) __tcu_mask_half_match_irq(BACKLIGHT_PWM); __tcu_mask_full_match_irq(BACKLIGHT_PWM); - old_val = MAX_BRIGHTNESS_SETTING; + __tcu_set_count(BACKLIGHT_PWM, 0); + __tcu_set_half_data(BACKLIGHT_PWM, 0); + __tcu_set_full_data(BACKLIGHT_PWM, 256); return true; } |