diff options
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c | 8 | ||||
-rw-r--r-- | firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c | 17 |
2 files changed, 20 insertions, 5 deletions
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c index 3a6a748621..62a25e879f 100644 --- a/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c +++ b/firmware/target/arm/tms320dm320/sansa-connect/avr-sansaconnect.c | |||
@@ -297,6 +297,8 @@ void avr_hid_init(void) | |||
297 | avr_hid_sync(); | 297 | avr_hid_sync(); |
298 | } | 298 | } |
299 | 299 | ||
300 | /* defined in powermgmt-sansaconnect.c */ | ||
301 | void set_battery_level(unsigned int level); | ||
300 | 302 | ||
301 | static void avr_hid_get_state(void) | 303 | static void avr_hid_get_state(void) |
302 | { | 304 | { |
@@ -309,6 +311,12 @@ static void avr_hid_get_state(void) | |||
309 | 311 | ||
310 | spi_txrx(cmd, buf, sizeof(cmd)); | 312 | spi_txrx(cmd, buf, sizeof(cmd)); |
311 | 313 | ||
314 | /* | ||
315 | * buf[8] contains some battery/charger related information (unknown) | ||
316 | * buf[9] contains battery level in percents (0-100) | ||
317 | */ | ||
318 | set_battery_level((unsigned int)buf[9]); | ||
319 | |||
312 | spi_txrx(cmd_empty, NULL, 1); /* request interrupt on button press */ | 320 | spi_txrx(cmd_empty, NULL, 1); /* request interrupt on button press */ |
313 | 321 | ||
314 | parse_button_state(buf); | 322 | parse_button_state(buf); |
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c index bd90c51072..9085679b32 100644 --- a/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c +++ b/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c | |||
@@ -24,9 +24,10 @@ | |||
24 | #include "powermgmt.h" | 24 | #include "powermgmt.h" |
25 | #include "kernel.h" | 25 | #include "kernel.h" |
26 | 26 | ||
27 | /* THIS CONTAINS CURRENTLY DUMMY CODE! */ | 27 | /* Use fake linear scale as AVR does the voltage to percentage conversion */ |
28 | |||
29 | static unsigned int current_battery_level = 100; | ||
28 | 30 | ||
29 | static const unsigned short current_voltage = 3910; | ||
30 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = | 31 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = |
31 | { | 32 | { |
32 | 0 | 33 | 0 |
@@ -40,17 +41,23 @@ const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] = | |||
40 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ | 41 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ |
41 | const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = | 42 | const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = |
42 | { | 43 | { |
43 | { 100, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1320 }, | 44 | { 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 }, |
44 | }; | 45 | }; |
45 | 46 | ||
46 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ | 47 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ |
47 | const unsigned short percent_to_volt_charge[11] = | 48 | const unsigned short percent_to_volt_charge[11] = |
48 | { | 49 | { |
49 | 100, 300, 400, 500, 600, 700, 800, 900, 1000, 1200, 1320, | 50 | 0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, |
50 | }; | 51 | }; |
51 | 52 | ||
52 | /* Returns battery voltage from ADC [millivolts] */ | 53 | /* Returns battery voltage from ADC [millivolts] */ |
53 | unsigned int battery_adc_voltage(void) | 54 | unsigned int battery_adc_voltage(void) |
54 | { | 55 | { |
55 | return current_voltage; | 56 | return current_battery_level; |
56 | } | 57 | } |
58 | |||
59 | void set_battery_level(unsigned int level) | ||
60 | { | ||
61 | current_battery_level = level; | ||
62 | } | ||
63 | |||