summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tcc780x/cowond2/backlight-cowond2.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/tcc780x/cowond2/backlight-cowond2.c')
-rw-r--r--firmware/target/arm/tcc780x/cowond2/backlight-cowond2.c42
1 files changed, 38 insertions, 4 deletions
diff --git a/firmware/target/arm/tcc780x/cowond2/backlight-cowond2.c b/firmware/target/arm/tcc780x/cowond2/backlight-cowond2.c
index 39a9abf073..d417687804 100644
--- a/firmware/target/arm/tcc780x/cowond2/backlight-cowond2.c
+++ b/firmware/target/arm/tcc780x/cowond2/backlight-cowond2.c
@@ -22,7 +22,9 @@
22#include "system.h" 22#include "system.h"
23#include "backlight.h" 23#include "backlight.h"
24#include "pcf50606.h" 24#include "pcf50606.h"
25#include "pcf50635.h"
25#include "tcc780x.h" 26#include "tcc780x.h"
27#include "power-target.h"
26 28
27int _backlight_init(void) 29int _backlight_init(void)
28{ 30{
@@ -35,17 +37,49 @@ int _backlight_init(void)
35void _backlight_set_brightness(int brightness) 37void _backlight_set_brightness(int brightness)
36{ 38{
37 int level = disable_irq_save(); 39 int level = disable_irq_save();
38 pcf50606_write(PCF5060X_PWMC1, 0xe1 | (MAX_BRIGHTNESS_SETTING-brightness)<<1); 40
39 pcf50606_write(PCF5060X_GPOC1, 0x3); 41 if (get_pmu_type() == PCF50606)
42 {
43 pcf50606_write(PCF5060X_PWMC1,
44 0xe1 | (MAX_BRIGHTNESS_SETTING-brightness)<<1);
45 pcf50606_write(PCF5060X_GPOC1, 0x3);
46 }
47 else
48 {
49 static const int brightness_lookup[MAX_BRIGHTNESS_SETTING+1] =
50 {0x1, 0x8, 0xa, 0xe, 0x12, 0x16, 0x19, 0x1b, 0x1e,
51 0x21, 0x24, 0x26, 0x28, 0x2a, 0x2c};
52
53 pcf50635_write(PCF5063X_REG_LEDOUT, brightness_lookup[brightness]);
54 }
55
40 restore_irq(level); 56 restore_irq(level);
41} 57}
42 58
43void _backlight_on(void) 59void _backlight_on(void)
44{ 60{
45 GPIOA_SET = (1<<6); 61 if (get_pmu_type() == PCF50606)
62 {
63 GPIOA_SET = (1<<6);
64 }
65 else
66 {
67 int level = disable_irq_save();
68 pcf50635_write(PCF5063X_REG_LEDENA, 1);
69 restore_irq(level);
70 }
46} 71}
47 72
48void _backlight_off(void) 73void _backlight_off(void)
49{ 74{
50 GPIOA_CLEAR = (1<<6); 75 if (get_pmu_type() == PCF50606)
76 {
77 GPIOA_CLEAR = (1<<6);
78 }
79 else
80 {
81 int level = disable_irq_save();
82 pcf50635_write(PCF5063X_REG_LEDENA, 0);
83 restore_irq(level);
84 }
51} 85}