diff options
Diffstat (limited to 'firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c')
-rwxr-xr-x | firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c | 32 |
1 files changed, 11 insertions, 21 deletions
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c index f3746c8c98..654ec96591 100755 --- a/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c +++ b/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include "tsc2100.h" | 25 | #include "tsc2100.h" |
26 | #include "kernel.h" | 26 | #include "kernel.h" |
27 | 27 | ||
28 | unsigned short current_voltage = 3910; | 28 | static unsigned short current_voltage = 3910; |
29 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = | 29 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = |
30 | { | 30 | { |
31 | 0 | 31 | 0 |
@@ -47,38 +47,28 @@ const unsigned short percent_to_volt_charge[11] = | |||
47 | { | 47 | { |
48 | 100, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1320, | 48 | 100, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1320, |
49 | }; | 49 | }; |
50 | |||
50 | void read_battery_inputs(void) | 51 | void read_battery_inputs(void) |
51 | { | 52 | { |
52 | short tsadc = tsc2100_readreg(TSADC_PAGE, TSADC_ADDRESS); | 53 | short dummy1, dummy2; |
53 | short adscm = (tsadc&TSADC_ADSCM_MASK)>>TSADC_ADSCM_SHIFT; | 54 | tsc2100_read_volt(¤t_voltage, &dummy1, &dummy2); |
54 | if (adscm == 0xb) /* battery is available */ | 55 | |
55 | { | 56 | /* Set the TSC2100 back to read touches */ |
56 | current_voltage = tsc2100_readreg(0, 5); /* BAT1 */ | 57 | tsc2100_set_mode(0x01); |
57 | tsc2100_readreg(0, 6); /* BAT2 */ | ||
58 | tsc2100_readreg(0, 7); /* AUX */ | ||
59 | /* reset the TSC2100 to read touches */ | ||
60 | tsadc &= ~(TSADC_PSTCM|TSADC_ADST|TSADC_ADSCM_MASK); | ||
61 | tsadc |= TSADC_PSTCM|(0x2<<TSADC_ADSCM_SHIFT); | ||
62 | tsc2100_writereg(TSADC_PAGE, TSADC_ADDRESS, tsadc); | ||
63 | tsc2100_writereg(TSSTAT_PAGE, TSSTAT_ADDRESS, 2<<TSSTAT_PINTDAV_SHIFT); | ||
64 | } | ||
65 | } | 58 | } |
66 | 59 | ||
67 | /* Returns battery voltage from ADC [millivolts] */ | 60 | /* Returns battery voltage from ADC [millivolts] */ |
68 | unsigned int battery_adc_voltage(void) | 61 | unsigned int battery_adc_voltage(void) |
69 | { | 62 | { |
70 | static unsigned last_tick = 0; | 63 | static unsigned last_tick = 0; |
71 | short tsadc = tsc2100_readreg(TSADC_PAGE, TSADC_ADDRESS); | 64 | |
72 | if (TIME_BEFORE(last_tick+2*HZ, current_tick)) | 65 | if (TIME_BEFORE(last_tick+2*HZ, current_tick)) |
73 | { | 66 | { |
74 | tsadc &= ~(TSADC_PSTCM|TSADC_ADST|TSADC_ADSCM_MASK); | 67 | /* Set the TSC2100 to read voltages */ |
75 | tsadc |= 0xb<<TSADC_ADSCM_SHIFT; | 68 | tsc2100_set_mode(0x0B); |
76 | tsc2100_writereg(TSADC_PAGE, TSADC_ADDRESS, tsadc&(~(1<<15))); | ||
77 | tsc2100_writereg(TSSTAT_PAGE, TSSTAT_ADDRESS, 2<<TSSTAT_PINTDAV_SHIFT); | ||
78 | last_tick = current_tick; | 69 | last_tick = current_tick; |
79 | } | 70 | } |
80 | else | 71 | |
81 | read_battery_inputs(); | ||
82 | return current_voltage; | 72 | return current_voltage; |
83 | } | 73 | } |
84 | 74 | ||