summaryrefslogtreecommitdiff
path: root/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c')
-rwxr-xr-xfirmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c32
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
28unsigned short current_voltage = 3910; 28static unsigned short current_voltage = 3910;
29const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = 29const 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
50void read_battery_inputs(void) 51void 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(&current_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] */
68unsigned int battery_adc_voltage(void) 61unsigned 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