summaryrefslogtreecommitdiff
path: root/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c')
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c30
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
26const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = 27const 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
32const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] = 32const 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 */
39const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = 38const 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 */
47const unsigned short percent_to_volt_charge[11] = 45const 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] */
60unsigned int battery_adc_voltage(void) 57unsigned 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
66void 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