diff options
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c index fc63a9cc54..b0578a33d5 100644 --- a/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c +++ b/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c | |||
@@ -22,32 +22,29 @@ | |||
22 | #include "config.h" | 22 | #include "config.h" |
23 | #include "powermgmt.h" | 23 | #include "powermgmt.h" |
24 | #include "pmu-target.h" | 24 | #include "pmu-target.h" |
25 | #include "power.h" | ||
25 | 26 | ||
26 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = | 27 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = |
27 | { | 28 | { |
28 | /* TODO: this is just an initial guess */ | ||
29 | 3600 | 29 | 3600 |
30 | }; | 30 | }; |
31 | 31 | ||
32 | const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] = | 32 | const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] = |
33 | { | 33 | { |
34 | /* TODO: this is just an initial guess */ | ||
35 | 3350 | 34 | 3350 |
36 | }; | 35 | }; |
37 | 36 | ||
38 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ | 37 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ |
39 | const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = | 38 | const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = |
40 | { | 39 | { |
41 | /* TODO: simple uncalibrated curve, linear except for first 10% */ | 40 | { 3550, 3783, 3830, 3882, 3911, 3949, 3996, 4067, 4148, 4228, 4310 } |
42 | { 3377, 3741, 3783, 3820, 3856, 3892, 3934, 3989, 4061, 4144, 4249 } | ||
43 | }; | 41 | }; |
44 | 42 | ||
45 | #if CONFIG_CHARGING | 43 | #if CONFIG_CHARGING |
46 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ | 44 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ |
47 | const unsigned short percent_to_volt_charge[11] = | 45 | const unsigned short percent_to_volt_charge[11] = |
48 | { | 46 | { |
49 | /* TODO: simple uncalibrated curve, linear except for first 10% */ | 47 | 3550, 3783, 3830, 3882, 3911, 3949, 3996, 4067, 4148, 4228, 4310 |
50 | 3344, 3969, 4038, 4105, 4205, 4310, 4312, 4314, 4316, 4318, 4320 | ||
51 | }; | 48 | }; |
52 | #endif /* CONFIG_CHARGING */ | 49 | #endif /* CONFIG_CHARGING */ |
53 | 50 | ||
@@ -59,5 +56,24 @@ const unsigned short percent_to_volt_charge[11] = | |||
59 | /* Returns battery voltage from ADC [millivolts] */ | 56 | /* Returns battery voltage from ADC [millivolts] */ |
60 | unsigned int battery_adc_voltage(void) | 57 | unsigned int battery_adc_voltage(void) |
61 | { | 58 | { |
62 | return pmu_read_battery_voltage(); | 59 | int compensation = (10 * (pmu_read_battery_current() - 7)) / 12; |
60 | if (charging_state()) return pmu_read_battery_voltage() - compensation; | ||
61 | return pmu_read_battery_voltage() + compensation; | ||
63 | } | 62 | } |
63 | |||
64 | |||
65 | #ifdef HAVE_ACCESSORY_SUPPLY | ||
66 | void accessory_supply_set(bool enable) | ||
67 | { | ||
68 | if (enable) | ||
69 | { | ||
70 | /* Accessory voltage supply on */ | ||
71 | pmu_ldo_power_on(6); | ||
72 | } | ||
73 | else | ||
74 | { | ||
75 | /* Accessory voltage supply off */ | ||
76 | pmu_ldo_power_off(6); | ||
77 | } | ||
78 | } | ||
79 | #endif | ||