summaryrefslogtreecommitdiff
path: root/firmware/target
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2012-01-03 23:44:38 +0000
committerThomas Martitz <kugel@rockbox.org>2012-01-03 23:44:38 +0000
commitc1bd9b0361ba92c29ceef68d74093e70a1a3e481 (patch)
tree1a42acdf2099b7f5ac06eee11e1d488b388c6d9f /firmware/target
parent949e6398c89e3c277a4c542f67a5ee788c6f642d (diff)
downloadrockbox-c1bd9b0361ba92c29ceef68d74093e70a1a3e481.tar.gz
rockbox-c1bd9b0361ba92c29ceef68d74093e70a1a3e481.zip
Rework powermgmt to enable code re-use on appliation and sims.
* Introduce CONFIG_BATTERY_MEASURE define, to allow targets (application) to break powermgmt.c's assumption about the ability to read battery voltage. There's now additionally percentage (android) and remaining time measure (maemo). No measure at all also works (sdl app). If voltage can't be measured, then battery_level() is king and it'll be used for power_history and runtime estimation. * Implement target's API in the simulator, i.e. _battery_voltage(), so it doesn't need to implement it's own powermgmt.c and other stubs. Now the sim behaves much more like a native target, although it still changes the simulated battery voltage quickly, * Other changes include include renaming battery_adc_voltage() to _battery_voltage(), for consistency with the new target functions and making some of the apps code aware that voltage and runtime estimation is not always available. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31548 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r--firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c2
-rw-r--r--firmware/target/arm/imx233/debug-imx233.c2
-rw-r--r--firmware/target/arm/imx233/powermgmt-imx233.c2
-rw-r--r--firmware/target/arm/imx31/gigabeat-s/powermgmt-gigabeat-s.c6
-rw-r--r--firmware/target/arm/ipod/1g2g/powermgmt-1g2g.c2
-rw-r--r--firmware/target/arm/ipod/powermgmt-ipod-pcf.c2
-rw-r--r--firmware/target/arm/iriver/h10/powermgmt-h10.c2
-rw-r--r--firmware/target/arm/olympus/mrobe-100/powermgmt-mr100.c2
-rw-r--r--firmware/target/arm/pbell/vibe500/powermgmt-vibe500.c2
-rw-r--r--firmware/target/arm/philips/hdd1630/powermgmt-hdd1630.c2
-rw-r--r--firmware/target/arm/philips/hdd6330/powermgmt-hdd6330.c2
-rw-r--r--firmware/target/arm/pnx0101/iriver-ifp7xx/powermgmt-ifp7xx.c2
-rw-r--r--firmware/target/arm/powermgmt-ascodec.c4
-rw-r--r--firmware/target/arm/rk27xx/hm60x/powermgmt-hm60x.c2
-rw-r--r--firmware/target/arm/rk27xx/hm801/powermgmt-hm801.c2
-rw-r--r--firmware/target/arm/rk27xx/rk27generic/powermgmt-rk27generic.c2
-rw-r--r--firmware/target/arm/s3c2440/gigabeat-fx/powermgmt-meg-fx.c2
-rw-r--r--firmware/target/arm/s3c2440/mini2440/powermgmt-mini2440.c2
-rw-r--r--firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c2
-rw-r--r--firmware/target/arm/s5l8700/meizu-m3/powermgmt-m3.c2
-rw-r--r--firmware/target/arm/s5l8700/meizu-m6sp/powermgmt-m6sp.c2
-rw-r--r--firmware/target/arm/s5l8702/ipod6g/powermgmt-ipod6g.c2
-rw-r--r--firmware/target/arm/samsung/yh820/powermgmt-yh820.c2
-rw-r--r--firmware/target/arm/samsung/yh920/powermgmt-yh920.c2
-rw-r--r--firmware/target/arm/samsung/yh925/powermgmt-yh925.c2
-rw-r--r--firmware/target/arm/sandisk/sansa-view/powermgmt-view.c2
-rw-r--r--firmware/target/arm/tatung/tpj1022/powermgmt-tpj1022.c2
-rw-r--r--firmware/target/arm/tcc77x/iaudio7/powermgmt-iaudio7.c2
-rw-r--r--firmware/target/arm/tcc77x/powermgmt-tcc77x.c2
-rw-r--r--firmware/target/arm/tcc780x/cowond2/powermgmt-cowond2.c2
-rw-r--r--firmware/target/arm/tms320dm320/creative-zvm/powermgmt-creativezvm.c2
-rw-r--r--firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c2
-rw-r--r--firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c2
-rw-r--r--firmware/target/coldfire/iaudio/m3/powermgmt-m3.c2
-rw-r--r--firmware/target/coldfire/iaudio/powermgmt-iaudio.c2
-rw-r--r--firmware/target/coldfire/iriver/h100/powermgmt-h100.c2
-rw-r--r--firmware/target/coldfire/iriver/h300/powermgmt-h300.c2
-rw-r--r--firmware/target/coldfire/mpio/hd200/powermgmt-hd200.c2
-rw-r--r--firmware/target/coldfire/mpio/hd300/powermgmt-hd300.c2
-rw-r--r--firmware/target/hosted/android/powermgmt-android.c28
-rw-r--r--firmware/target/hosted/android/system-android.c2
-rw-r--r--firmware/target/hosted/maemo/maemo-thread.c30
-rw-r--r--firmware/target/hosted/powermgmt.c56
-rw-r--r--firmware/target/hosted/sdl/system-sdl.c2
-rw-r--r--firmware/target/hosted/ypr0/powermgmt-ypr0.c4
-rw-r--r--firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c2
-rw-r--r--firmware/target/mips/ingenic_jz47xx/onda_vx767/sadc-onda_vx767.c2
-rw-r--r--firmware/target/sh/archos/fm_v2/powermgmt-fm_v2.c2
-rw-r--r--firmware/target/sh/archos/ondio/powermgmt-ondio.c2
-rw-r--r--firmware/target/sh/archos/player/powermgmt-player.c2
-rw-r--r--firmware/target/sh/archos/recorder/powermgmt-recorder.c2
51 files changed, 61 insertions, 157 deletions
diff --git a/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c b/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c
index cbd2c4bf27..829ed36a8e 100644
--- a/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c
+++ b/firmware/target/arm/as3525/sansa-m200v4/powermgmt-m200v4.c
@@ -52,7 +52,7 @@ const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
52/* full-scale ADC readout (2^10) in millivolt */ 52/* full-scale ADC readout (2^10) in millivolt */
53 53
54/* Returns battery voltage from ADC [millivolts] */ 54/* Returns battery voltage from ADC [millivolts] */
55unsigned int battery_adc_voltage(void) 55int _battery_voltage(void)
56{ 56{
57 return (adc_read(ADC_VBAT) * BATTERY_SCALE_FACTOR) >> 10; 57 return (adc_read(ADC_VBAT) * BATTERY_SCALE_FACTOR) >> 10;
58} 58}
diff --git a/firmware/target/arm/imx233/debug-imx233.c b/firmware/target/arm/imx233/debug-imx233.c
index 228d2abcdb..82ad86f148 100644
--- a/firmware/target/arm/imx233/debug-imx233.c
+++ b/firmware/target/arm/imx233/debug-imx233.c
@@ -153,7 +153,7 @@ bool dbg_hw_info_adc(void)
153 lcd_clear_display(); 153 lcd_clear_display();
154 154
155 /* add battery readout in mV, this it is not the direct output of a channel */ 155 /* add battery readout in mV, this it is not the direct output of a channel */
156 lcd_putsf(0, 0, "Battery(mV) %d", battery_adc_voltage()); 156 lcd_putsf(0, 0, "Battery(mV) %d", _battery_voltage());
157 for(unsigned i = 0; i < NUM_ADC_CHANNELS; i++) 157 for(unsigned i = 0; i < NUM_ADC_CHANNELS; i++)
158 { 158 {
159 lcd_putsf(0, i + 1, "%s %d", imx233_adc_channel_name[i], 159 lcd_putsf(0, i + 1, "%s %d", imx233_adc_channel_name[i],
diff --git a/firmware/target/arm/imx233/powermgmt-imx233.c b/firmware/target/arm/imx233/powermgmt-imx233.c
index 87c48e7655..0f3336d602 100644
--- a/firmware/target/arm/imx233/powermgmt-imx233.c
+++ b/firmware/target/arm/imx233/powermgmt-imx233.c
@@ -38,7 +38,7 @@ static int timeout_topping_off; /* timeout before stopping charging after toppin
38static int timeout_4p2_ilimit_increase; /* timeout before increasing 4p2 ilimit */ 38static int timeout_4p2_ilimit_increase; /* timeout before increasing 4p2 ilimit */
39 39
40/* Returns battery voltage from ADC [millivolts] */ 40/* Returns battery voltage from ADC [millivolts] */
41unsigned int battery_adc_voltage(void) 41int _battery_voltage(void)
42{ 42{
43 /* battery value is in 8mV LSB */ 43 /* battery value is in 8mV LSB */
44 return __XTRACT(HW_POWER_BATTMONITOR, BATT_VAL) * 8; 44 return __XTRACT(HW_POWER_BATTMONITOR, BATT_VAL) * 8;
diff --git a/firmware/target/arm/imx31/gigabeat-s/powermgmt-gigabeat-s.c b/firmware/target/arm/imx31/gigabeat-s/powermgmt-gigabeat-s.c
index d87e367cba..1a8e12182a 100644
--- a/firmware/target/arm/imx31/gigabeat-s/powermgmt-gigabeat-s.c
+++ b/firmware/target/arm/imx31/gigabeat-s/powermgmt-gigabeat-s.c
@@ -53,7 +53,7 @@ const unsigned short percent_to_volt_charge[11] =
53}; 53};
54 54
55/* Returns battery voltage from ADC [millivolts] */ 55/* Returns battery voltage from ADC [millivolts] */
56unsigned int battery_adc_voltage(void) 56int _battery_voltage(void)
57{ 57{
58 /* ADC reading 0-1023 = 2400mV-4700mV */ 58 /* ADC reading 0-1023 = 2400mV-4700mV */
59 return ((adc_read(ADC_BATTERY) * 2303) >> 10) + 2400; 59 return ((adc_read(ADC_BATTERY) * 2303) >> 10) + 2400;
@@ -249,7 +249,7 @@ static int stat_battery_reading(int type)
249 switch (type) 249 switch (type)
250 { 250 {
251 case ADC_BATTERY: 251 case ADC_BATTERY:
252 reading = battery_adc_voltage(); 252 reading = _battery_voltage();
253 break; 253 break;
254 254
255 case ADC_CHARGER_CURRENT: 255 case ADC_CHARGER_CURRENT:
@@ -780,7 +780,7 @@ static void charger_control(void)
780 /* Battery voltage may have dropped and a charge cycle should 780 /* Battery voltage may have dropped and a charge cycle should
781 * start again. Debounced. */ 781 * start again. Debounced. */
782 if (autorecharge_counter < 0 && 782 if (autorecharge_counter < 0 &&
783 battery_adc_voltage() < BATT_FULL_VOLTAGE) 783 _battery_voltage() < BATT_FULL_VOLTAGE)
784 { 784 {
785 /* Try starting a cycle now if battery isn't already topped 785 /* Try starting a cycle now if battery isn't already topped
786 * off to allow user to ensure the battery is full. */ 786 * off to allow user to ensure the battery is full. */
diff --git a/firmware/target/arm/ipod/1g2g/powermgmt-1g2g.c b/firmware/target/arm/ipod/1g2g/powermgmt-1g2g.c
index 1bc5de9986..c3eca14332 100644
--- a/firmware/target/arm/ipod/1g2g/powermgmt-1g2g.c
+++ b/firmware/target/arm/ipod/1g2g/powermgmt-1g2g.c
@@ -57,7 +57,7 @@ const unsigned short percent_to_volt_charge[11] =
57/* full-scale ADC readout (2^8) in millivolt */ 57/* full-scale ADC readout (2^8) in millivolt */
58 58
59/* Returns battery voltage from ADC [millivolts] */ 59/* Returns battery voltage from ADC [millivolts] */
60unsigned int battery_adc_voltage(void) 60int _battery_voltage(void)
61{ 61{
62 unsigned adcval = adc_read(ADC_UNREG_POWER); 62 unsigned adcval = adc_read(ADC_UNREG_POWER);
63 63
diff --git a/firmware/target/arm/ipod/powermgmt-ipod-pcf.c b/firmware/target/arm/ipod/powermgmt-ipod-pcf.c
index 44e908a4a2..1241f47302 100644
--- a/firmware/target/arm/ipod/powermgmt-ipod-pcf.c
+++ b/firmware/target/arm/ipod/powermgmt-ipod-pcf.c
@@ -109,7 +109,7 @@ const unsigned short percent_to_volt_charge[11] =
109/* full-scale ADC readout (2^10) in millivolt */ 109/* full-scale ADC readout (2^10) in millivolt */
110 110
111/* Returns battery voltage from ADC [millivolts] */ 111/* Returns battery voltage from ADC [millivolts] */
112unsigned int battery_adc_voltage(void) 112int _battery_voltage(void)
113{ 113{
114 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 114 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
115} 115}
diff --git a/firmware/target/arm/iriver/h10/powermgmt-h10.c b/firmware/target/arm/iriver/h10/powermgmt-h10.c
index 9970c292bc..c20d802983 100644
--- a/firmware/target/arm/iriver/h10/powermgmt-h10.c
+++ b/firmware/target/arm/iriver/h10/powermgmt-h10.c
@@ -67,7 +67,7 @@ const unsigned short percent_to_volt_charge[11] =
67/* full-scale ADC readout (2^10) in millivolt */ 67/* full-scale ADC readout (2^10) in millivolt */
68 68
69/* Returns battery voltage from ADC [millivolts] */ 69/* Returns battery voltage from ADC [millivolts] */
70unsigned int battery_adc_voltage(void) 70int _battery_voltage(void)
71{ 71{
72 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 72 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
73} 73}
diff --git a/firmware/target/arm/olympus/mrobe-100/powermgmt-mr100.c b/firmware/target/arm/olympus/mrobe-100/powermgmt-mr100.c
index c8d5584305..ae33fc5ca3 100644
--- a/firmware/target/arm/olympus/mrobe-100/powermgmt-mr100.c
+++ b/firmware/target/arm/olympus/mrobe-100/powermgmt-mr100.c
@@ -58,7 +58,7 @@ const unsigned short percent_to_volt_charge[11] =
58 */ 58 */
59 59
60/* Returns battery voltage from ADC [millivolts] */ 60/* Returns battery voltage from ADC [millivolts] */
61unsigned int battery_adc_voltage(void) 61int _battery_voltage(void)
62{ 62{
63 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 63 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
64} 64}
diff --git a/firmware/target/arm/pbell/vibe500/powermgmt-vibe500.c b/firmware/target/arm/pbell/vibe500/powermgmt-vibe500.c
index d84881cea1..dbd7d8cbf7 100644
--- a/firmware/target/arm/pbell/vibe500/powermgmt-vibe500.c
+++ b/firmware/target/arm/pbell/vibe500/powermgmt-vibe500.c
@@ -51,7 +51,7 @@ const unsigned short percent_to_volt_charge[11] =
51/* full-scale ADC readout (2^10) in millivolt */ 51/* full-scale ADC readout (2^10) in millivolt */
52 52
53/* Returns battery voltage from ADC [millivolts] */ 53/* Returns battery voltage from ADC [millivolts] */
54unsigned int battery_adc_voltage(void) 54int _battery_voltage(void)
55{ 55{
56 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 56 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
57} 57}
diff --git a/firmware/target/arm/philips/hdd1630/powermgmt-hdd1630.c b/firmware/target/arm/philips/hdd1630/powermgmt-hdd1630.c
index 8090c624df..7d132523e6 100644
--- a/firmware/target/arm/philips/hdd1630/powermgmt-hdd1630.c
+++ b/firmware/target/arm/philips/hdd1630/powermgmt-hdd1630.c
@@ -57,7 +57,7 @@ const unsigned short percent_to_volt_charge[11] =
57/* full-scale ADC readout (2^10) in millivolt */ 57/* full-scale ADC readout (2^10) in millivolt */
58 58
59/* Returns battery voltage from ADC [millivolts] */ 59/* Returns battery voltage from ADC [millivolts] */
60unsigned int battery_adc_voltage(void) 60int _battery_voltage(void)
61{ 61{
62 /* return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; */ 62 /* return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; */
63 63
diff --git a/firmware/target/arm/philips/hdd6330/powermgmt-hdd6330.c b/firmware/target/arm/philips/hdd6330/powermgmt-hdd6330.c
index 8090c624df..7d132523e6 100644
--- a/firmware/target/arm/philips/hdd6330/powermgmt-hdd6330.c
+++ b/firmware/target/arm/philips/hdd6330/powermgmt-hdd6330.c
@@ -57,7 +57,7 @@ const unsigned short percent_to_volt_charge[11] =
57/* full-scale ADC readout (2^10) in millivolt */ 57/* full-scale ADC readout (2^10) in millivolt */
58 58
59/* Returns battery voltage from ADC [millivolts] */ 59/* Returns battery voltage from ADC [millivolts] */
60unsigned int battery_adc_voltage(void) 60int _battery_voltage(void)
61{ 61{
62 /* return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; */ 62 /* return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; */
63 63
diff --git a/firmware/target/arm/pnx0101/iriver-ifp7xx/powermgmt-ifp7xx.c b/firmware/target/arm/pnx0101/iriver-ifp7xx/powermgmt-ifp7xx.c
index 76646d368c..4ce90a4c4f 100644
--- a/firmware/target/arm/pnx0101/iriver-ifp7xx/powermgmt-ifp7xx.c
+++ b/firmware/target/arm/pnx0101/iriver-ifp7xx/powermgmt-ifp7xx.c
@@ -48,7 +48,7 @@ const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
48/* full-scale ADC readout (2^10) in millivolt */ 48/* full-scale ADC readout (2^10) in millivolt */
49 49
50/* Returns battery voltage from ADC [millivolts] */ 50/* Returns battery voltage from ADC [millivolts] */
51unsigned int battery_adc_voltage(void) 51int _battery_voltage(void)
52{ 52{
53 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 53 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
54} 54}
diff --git a/firmware/target/arm/powermgmt-ascodec.c b/firmware/target/arm/powermgmt-ascodec.c
index 3232a9a6fb..c05fc7bf7a 100644
--- a/firmware/target/arm/powermgmt-ascodec.c
+++ b/firmware/target/arm/powermgmt-ascodec.c
@@ -67,7 +67,7 @@ static unsigned int batt_threshold = 0;
67/* full-scale ADC readout (2^10) in millivolt */ 67/* full-scale ADC readout (2^10) in millivolt */
68 68
69/* Returns battery voltage from ADC [millivolts] */ 69/* Returns battery voltage from ADC [millivolts] */
70unsigned int battery_adc_voltage(void) 70int _battery_voltage(void)
71{ 71{
72 return (adc_read(ADC_BATTERY) * 5125 + 512) >> 10; 72 return (adc_read(ADC_BATTERY) * 5125 + 512) >> 10;
73} 73}
@@ -85,7 +85,7 @@ static void battery_voltage_sync(void)
85 unsigned int mv; 85 unsigned int mv;
86 86
87 for (i = 0, mv = 0; i < 5; i++) 87 for (i = 0, mv = 0; i < 5; i++)
88 mv += battery_adc_voltage(); 88 mv += _battery_voltage();
89 89
90 reset_battery_filter(mv / 5); 90 reset_battery_filter(mv / 5);
91} 91}
diff --git a/firmware/target/arm/rk27xx/hm60x/powermgmt-hm60x.c b/firmware/target/arm/rk27xx/hm60x/powermgmt-hm60x.c
index 7b5b171ccb..6ab761672a 100644
--- a/firmware/target/arm/rk27xx/hm60x/powermgmt-hm60x.c
+++ b/firmware/target/arm/rk27xx/hm60x/powermgmt-hm60x.c
@@ -60,7 +60,7 @@ const unsigned short percent_to_volt_charge[11] =
60#define BATTERY_SCALE_FACTOR 6000 60#define BATTERY_SCALE_FACTOR 6000
61 61
62/* Returns battery voltage from ADC [millivolts] */ 62/* Returns battery voltage from ADC [millivolts] */
63unsigned int battery_adc_voltage(void) 63int _battery_voltage(void)
64{ 64{
65 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 10; 65 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 10;
66} 66}
diff --git a/firmware/target/arm/rk27xx/hm801/powermgmt-hm801.c b/firmware/target/arm/rk27xx/hm801/powermgmt-hm801.c
index a815d893b2..dc555be4cf 100644
--- a/firmware/target/arm/rk27xx/hm801/powermgmt-hm801.c
+++ b/firmware/target/arm/rk27xx/hm801/powermgmt-hm801.c
@@ -54,7 +54,7 @@ const unsigned short percent_to_volt_charge[11] =
54 /* TODO: simple uncalibrated curve */ 54 /* TODO: simple uncalibrated curve */
55 { 425, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520 }; 55 { 425, 430, 440, 450, 460, 470, 480, 490, 500, 510, 520 };
56 56
57unsigned int battery_adc_voltage(void) 57int _battery_voltage(void)
58{ 58{
59 return adc_read(ADC_BATTERY); 59 return adc_read(ADC_BATTERY);
60} 60}
diff --git a/firmware/target/arm/rk27xx/rk27generic/powermgmt-rk27generic.c b/firmware/target/arm/rk27xx/rk27generic/powermgmt-rk27generic.c
index 3960dab2c1..ccbc098d91 100644
--- a/firmware/target/arm/rk27xx/rk27generic/powermgmt-rk27generic.c
+++ b/firmware/target/arm/rk27xx/rk27generic/powermgmt-rk27generic.c
@@ -60,7 +60,7 @@ const unsigned short percent_to_volt_charge[11] =
60#define BATTERY_SCALE_FACTOR 6000 60#define BATTERY_SCALE_FACTOR 6000
61 61
62/* Returns battery voltage from ADC [millivolts] */ 62/* Returns battery voltage from ADC [millivolts] */
63unsigned int battery_adc_voltage(void) 63int _battery_voltage(void)
64{ 64{
65 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 10; 65 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 10;
66} 66}
diff --git a/firmware/target/arm/s3c2440/gigabeat-fx/powermgmt-meg-fx.c b/firmware/target/arm/s3c2440/gigabeat-fx/powermgmt-meg-fx.c
index 49f7e2e049..4cc43d038a 100644
--- a/firmware/target/arm/s3c2440/gigabeat-fx/powermgmt-meg-fx.c
+++ b/firmware/target/arm/s3c2440/gigabeat-fx/powermgmt-meg-fx.c
@@ -54,7 +54,7 @@ const unsigned short percent_to_volt_charge[11] =
54/* full-scale ADC readout (2^10) in millivolt */ 54/* full-scale ADC readout (2^10) in millivolt */
55 55
56/* Returns battery voltage from ADC [millivolts] */ 56/* Returns battery voltage from ADC [millivolts] */
57unsigned int battery_adc_voltage(void) 57int _battery_voltage(void)
58{ 58{
59 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 59 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
60} 60}
diff --git a/firmware/target/arm/s3c2440/mini2440/powermgmt-mini2440.c b/firmware/target/arm/s3c2440/mini2440/powermgmt-mini2440.c
index 5281b10698..9a05cd37c6 100644
--- a/firmware/target/arm/s3c2440/mini2440/powermgmt-mini2440.c
+++ b/firmware/target/arm/s3c2440/mini2440/powermgmt-mini2440.c
@@ -52,7 +52,7 @@ const unsigned short percent_to_volt_charge[11] =
52 52
53/* Returns battery voltage from ADC [millivolts] */ 53/* Returns battery voltage from ADC [millivolts] */
54/* full-scale (2^10) in millivolt */ 54/* full-scale (2^10) in millivolt */
55unsigned int battery_adc_voltage(void) 55int _battery_voltage(void)
56{ 56{
57 /* Since we have no battery, return a fully charged value */ 57 /* Since we have no battery, return a fully charged value */
58 return 4000 * 1024 / 1000; 58 return 4000 * 1024 / 1000;
diff --git a/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c b/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c
index 52491cf480..647c13ed79 100644
--- a/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c
+++ b/firmware/target/arm/s5l8700/ipodnano2g/powermgmt-nano2g.c
@@ -55,7 +55,7 @@ const unsigned short percent_to_volt_charge[11] =
55 55
56 56
57/* Returns battery voltage from ADC [millivolts] */ 57/* Returns battery voltage from ADC [millivolts] */
58unsigned int battery_adc_voltage(void) 58int _battery_voltage(void)
59{ 59{
60 int compensation = (10 * (pmu_read_battery_current() - 7)) / 12; 60 int compensation = (10 * (pmu_read_battery_current() - 7)) / 12;
61 if (charging_state()) return pmu_read_battery_voltage() - compensation; 61 if (charging_state()) return pmu_read_battery_voltage() - compensation;
diff --git a/firmware/target/arm/s5l8700/meizu-m3/powermgmt-m3.c b/firmware/target/arm/s5l8700/meizu-m3/powermgmt-m3.c
index 3960dab2c1..ccbc098d91 100644
--- a/firmware/target/arm/s5l8700/meizu-m3/powermgmt-m3.c
+++ b/firmware/target/arm/s5l8700/meizu-m3/powermgmt-m3.c
@@ -60,7 +60,7 @@ const unsigned short percent_to_volt_charge[11] =
60#define BATTERY_SCALE_FACTOR 6000 60#define BATTERY_SCALE_FACTOR 6000
61 61
62/* Returns battery voltage from ADC [millivolts] */ 62/* Returns battery voltage from ADC [millivolts] */
63unsigned int battery_adc_voltage(void) 63int _battery_voltage(void)
64{ 64{
65 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 10; 65 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 10;
66} 66}
diff --git a/firmware/target/arm/s5l8700/meizu-m6sp/powermgmt-m6sp.c b/firmware/target/arm/s5l8700/meizu-m6sp/powermgmt-m6sp.c
index 86b6e46b4d..b59d0fac45 100644
--- a/firmware/target/arm/s5l8700/meizu-m6sp/powermgmt-m6sp.c
+++ b/firmware/target/arm/s5l8700/meizu-m6sp/powermgmt-m6sp.c
@@ -58,7 +58,7 @@ const unsigned short percent_to_volt_charge[11] =
58 58
59 59
60/* Returns battery voltage from ADC [millivolts] */ 60/* Returns battery voltage from ADC [millivolts] */
61unsigned int battery_adc_voltage(void) 61int _battery_voltage(void)
62{ 62{
63 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 10; 63 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 10;
64} 64}
diff --git a/firmware/target/arm/s5l8702/ipod6g/powermgmt-ipod6g.c b/firmware/target/arm/s5l8702/ipod6g/powermgmt-ipod6g.c
index 6caeafd8fc..b88ac16d55 100644
--- a/firmware/target/arm/s5l8702/ipod6g/powermgmt-ipod6g.c
+++ b/firmware/target/arm/s5l8702/ipod6g/powermgmt-ipod6g.c
@@ -55,7 +55,7 @@ const unsigned short percent_to_volt_charge[11] =
55 55
56 56
57/* Returns battery voltage from ADC [millivolts] */ 57/* Returns battery voltage from ADC [millivolts] */
58unsigned int battery_adc_voltage(void) 58int _battery_voltage(void)
59{ 59{
60 int compensation = (10 * (pmu_read_battery_current() - 7)) / 12; 60 int compensation = (10 * (pmu_read_battery_current() - 7)) / 12;
61 if (charging_state()) return pmu_read_battery_voltage() - compensation; 61 if (charging_state()) return pmu_read_battery_voltage() - compensation;
diff --git a/firmware/target/arm/samsung/yh820/powermgmt-yh820.c b/firmware/target/arm/samsung/yh820/powermgmt-yh820.c
index 495590413c..180194c704 100644
--- a/firmware/target/arm/samsung/yh820/powermgmt-yh820.c
+++ b/firmware/target/arm/samsung/yh820/powermgmt-yh820.c
@@ -52,7 +52,7 @@ const unsigned short percent_to_volt_charge[11] =
52/* full-scale ADC readout (2^10) in millivolt */ 52/* full-scale ADC readout (2^10) in millivolt */
53 53
54/* Returns battery voltage from ADC [millivolts] */ 54/* Returns battery voltage from ADC [millivolts] */
55unsigned int battery_adc_voltage(void) 55int _battery_voltage(void)
56{ 56{
57 /* return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; */ 57 /* return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; */
58 return 4100; 58 return 4100;
diff --git a/firmware/target/arm/samsung/yh920/powermgmt-yh920.c b/firmware/target/arm/samsung/yh920/powermgmt-yh920.c
index 0ea3c5d50e..f33afb31bd 100644
--- a/firmware/target/arm/samsung/yh920/powermgmt-yh920.c
+++ b/firmware/target/arm/samsung/yh920/powermgmt-yh920.c
@@ -52,7 +52,7 @@ const unsigned short percent_to_volt_charge[11] =
52/* full-scale ADC readout (2^10) in millivolt */ 52/* full-scale ADC readout (2^10) in millivolt */
53 53
54/* Returns battery voltage from ADC [millivolts] */ 54/* Returns battery voltage from ADC [millivolts] */
55unsigned int battery_adc_voltage(void) 55int _battery_voltage(void)
56{ 56{
57 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 57 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
58} 58}
diff --git a/firmware/target/arm/samsung/yh925/powermgmt-yh925.c b/firmware/target/arm/samsung/yh925/powermgmt-yh925.c
index 3eb5dd6c61..ab9cbcdfc1 100644
--- a/firmware/target/arm/samsung/yh925/powermgmt-yh925.c
+++ b/firmware/target/arm/samsung/yh925/powermgmt-yh925.c
@@ -52,7 +52,7 @@ const unsigned short percent_to_volt_charge[11] =
52/* full-scale ADC readout (2^10) in millivolt */ 52/* full-scale ADC readout (2^10) in millivolt */
53 53
54/* Returns battery voltage from ADC [millivolts] */ 54/* Returns battery voltage from ADC [millivolts] */
55unsigned int battery_adc_voltage(void) 55int _battery_voltage(void)
56{ 56{
57 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 57 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
58} 58}
diff --git a/firmware/target/arm/sandisk/sansa-view/powermgmt-view.c b/firmware/target/arm/sandisk/sansa-view/powermgmt-view.c
index 459b60dd45..870a883087 100644
--- a/firmware/target/arm/sandisk/sansa-view/powermgmt-view.c
+++ b/firmware/target/arm/sandisk/sansa-view/powermgmt-view.c
@@ -23,7 +23,7 @@
23#include "adc.h" 23#include "adc.h"
24#include "powermgmt.h" 24#include "powermgmt.h"
25 25
26unsigned int battery_adc_voltage(void) 26int _battery_voltage(void)
27{ 27{
28 return 0; 28 return 0;
29} 29}
diff --git a/firmware/target/arm/tatung/tpj1022/powermgmt-tpj1022.c b/firmware/target/arm/tatung/tpj1022/powermgmt-tpj1022.c
index ef7919d5aa..cc91012fcd 100644
--- a/firmware/target/arm/tatung/tpj1022/powermgmt-tpj1022.c
+++ b/firmware/target/arm/tatung/tpj1022/powermgmt-tpj1022.c
@@ -56,7 +56,7 @@ const unsigned short percent_to_volt_charge[11] =
56/* full-scale ADC readout (2^10) in millivolt */ 56/* full-scale ADC readout (2^10) in millivolt */
57 57
58/* Returns battery voltage from ADC [millivolts] */ 58/* Returns battery voltage from ADC [millivolts] */
59unsigned int battery_adc_voltage(void) 59int _battery_voltage(void)
60{ 60{
61 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 61 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
62} 62}
diff --git a/firmware/target/arm/tcc77x/iaudio7/powermgmt-iaudio7.c b/firmware/target/arm/tcc77x/iaudio7/powermgmt-iaudio7.c
index 9b65bbde1f..bc7ead61f0 100644
--- a/firmware/target/arm/tcc77x/iaudio7/powermgmt-iaudio7.c
+++ b/firmware/target/arm/tcc77x/iaudio7/powermgmt-iaudio7.c
@@ -59,7 +59,7 @@ const unsigned short percent_to_volt_charge[11] =
59/* full-scale ADC readout (2^10) in millivolt */ 59/* full-scale ADC readout (2^10) in millivolt */
60 60
61/* Returns battery voltage from ADC [millivolts] */ 61/* Returns battery voltage from ADC [millivolts] */
62unsigned int battery_adc_voltage(void) 62int _battery_voltage(void)
63{ 63{
64 static unsigned last_tick = 0; 64 static unsigned last_tick = 0;
65 65
diff --git a/firmware/target/arm/tcc77x/powermgmt-tcc77x.c b/firmware/target/arm/tcc77x/powermgmt-tcc77x.c
index 90c66d30e6..07a56777d0 100644
--- a/firmware/target/arm/tcc77x/powermgmt-tcc77x.c
+++ b/firmware/target/arm/tcc77x/powermgmt-tcc77x.c
@@ -59,7 +59,7 @@ const unsigned short percent_to_volt_charge[11] =
59/* full-scale ADC readout (2^10) in millivolt */ 59/* full-scale ADC readout (2^10) in millivolt */
60 60
61/* Returns battery voltage from ADC [millivolts] */ 61/* Returns battery voltage from ADC [millivolts] */
62unsigned int battery_adc_voltage(void) 62int _battery_voltage(void)
63{ 63{
64 return current_voltage; 64 return current_voltage;
65} 65}
diff --git a/firmware/target/arm/tcc780x/cowond2/powermgmt-cowond2.c b/firmware/target/arm/tcc780x/cowond2/powermgmt-cowond2.c
index 9b2320b7cf..91361fe5f4 100644
--- a/firmware/target/arm/tcc780x/cowond2/powermgmt-cowond2.c
+++ b/firmware/target/arm/tcc780x/cowond2/powermgmt-cowond2.c
@@ -61,7 +61,7 @@ const unsigned short percent_to_volt_charge[11] =
61/* full-scale ADC readout (2^10) in millivolt */ 61/* full-scale ADC readout (2^10) in millivolt */
62 62
63/* Returns battery voltage from ADC [millivolts] */ 63/* Returns battery voltage from ADC [millivolts] */
64unsigned int battery_adc_voltage(void) 64int _battery_voltage(void)
65{ 65{
66 static unsigned last_tick = 0; 66 static unsigned last_tick = 0;
67 67
diff --git a/firmware/target/arm/tms320dm320/creative-zvm/powermgmt-creativezvm.c b/firmware/target/arm/tms320dm320/creative-zvm/powermgmt-creativezvm.c
index a6d19347c4..23ee9c6abe 100644
--- a/firmware/target/arm/tms320dm320/creative-zvm/powermgmt-creativezvm.c
+++ b/firmware/target/arm/tms320dm320/creative-zvm/powermgmt-creativezvm.c
@@ -50,7 +50,7 @@ const unsigned short percent_to_volt_charge[11] =
50}; 50};
51 51
52/* Returns battery voltage from ADC [millivolts] */ 52/* Returns battery voltage from ADC [millivolts] */
53unsigned int battery_adc_voltage(void) 53int _battery_voltage(void)
54{ 54{
55 return current_voltage; 55 return current_voltage;
56} 56}
diff --git a/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c b/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c
index 5da03692f7..78f9bbb9c2 100644
--- a/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c
+++ b/firmware/target/arm/tms320dm320/mrobe-500/powermgmt-mr500.c
@@ -60,7 +60,7 @@ const unsigned short percent_to_volt_charge[11] =
60}; 60};
61 61
62/* Returns battery voltage from ADC [millivolts] */ 62/* Returns battery voltage from ADC [millivolts] */
63unsigned int battery_adc_voltage(void) 63int _battery_voltage(void)
64{ 64{
65 short bat1, bat2, aux; 65 short bat1, bat2, aux;
66 static unsigned last_tick = 0; 66 static unsigned last_tick = 0;
diff --git a/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c b/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c
index c42f56b0b3..8b3f05107c 100644
--- a/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c
+++ b/firmware/target/arm/tms320dm320/sansa-connect/powermgmt-sansaconnect.c
@@ -53,7 +53,7 @@ const unsigned short percent_to_volt_charge[11] =
53}; 53};
54 54
55/* Returns battery voltage from ADC [millivolts] */ 55/* Returns battery voltage from ADC [millivolts] */
56unsigned int battery_adc_voltage(void) 56int _battery_voltage(void)
57{ 57{
58 return current_battery_level; 58 return current_battery_level;
59} 59}
diff --git a/firmware/target/coldfire/iaudio/m3/powermgmt-m3.c b/firmware/target/coldfire/iaudio/m3/powermgmt-m3.c
index bb8f5cf811..b97d6913f2 100644
--- a/firmware/target/coldfire/iaudio/m3/powermgmt-m3.c
+++ b/firmware/target/coldfire/iaudio/m3/powermgmt-m3.c
@@ -52,7 +52,7 @@ const unsigned short percent_to_volt_charge[11] =
52/* full-scale ADC readout (2^8) in millivolt */ 52/* full-scale ADC readout (2^8) in millivolt */
53 53
54/* Returns battery voltage from ADC [millivolts] */ 54/* Returns battery voltage from ADC [millivolts] */
55unsigned int battery_adc_voltage(void) 55int _battery_voltage(void)
56{ 56{
57 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 8; 57 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 8;
58} 58}
diff --git a/firmware/target/coldfire/iaudio/powermgmt-iaudio.c b/firmware/target/coldfire/iaudio/powermgmt-iaudio.c
index 4bfea20432..56915266da 100644
--- a/firmware/target/coldfire/iaudio/powermgmt-iaudio.c
+++ b/firmware/target/coldfire/iaudio/powermgmt-iaudio.c
@@ -53,7 +53,7 @@ const unsigned short percent_to_volt_charge[11] =
53/* full-scale ADC readout (2^10) in millivolt */ 53/* full-scale ADC readout (2^10) in millivolt */
54 54
55/* Returns battery voltage from ADC [millivolts] */ 55/* Returns battery voltage from ADC [millivolts] */
56unsigned int battery_adc_voltage(void) 56int _battery_voltage(void)
57{ 57{
58 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 58 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
59} 59}
diff --git a/firmware/target/coldfire/iriver/h100/powermgmt-h100.c b/firmware/target/coldfire/iriver/h100/powermgmt-h100.c
index e238711120..20e1a88d4a 100644
--- a/firmware/target/coldfire/iriver/h100/powermgmt-h100.c
+++ b/firmware/target/coldfire/iriver/h100/powermgmt-h100.c
@@ -53,7 +53,7 @@ const unsigned short percent_to_volt_charge[11] =
53/* full-scale ADC readout (2^8) in millivolt */ 53/* full-scale ADC readout (2^8) in millivolt */
54 54
55/* Returns battery voltage from ADC [millivolts] */ 55/* Returns battery voltage from ADC [millivolts] */
56unsigned int battery_adc_voltage(void) 56int _battery_voltage(void)
57{ 57{
58 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 8; 58 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 8;
59} 59}
diff --git a/firmware/target/coldfire/iriver/h300/powermgmt-h300.c b/firmware/target/coldfire/iriver/h300/powermgmt-h300.c
index 95a5741759..00aad31279 100644
--- a/firmware/target/coldfire/iriver/h300/powermgmt-h300.c
+++ b/firmware/target/coldfire/iriver/h300/powermgmt-h300.c
@@ -53,7 +53,7 @@ const unsigned short percent_to_volt_charge[11] =
53/* full-scale ADC readout (2^10) in millivolt */ 53/* full-scale ADC readout (2^10) in millivolt */
54 54
55/* Returns battery voltage from ADC [millivolts] */ 55/* Returns battery voltage from ADC [millivolts] */
56unsigned int battery_adc_voltage(void) 56int _battery_voltage(void)
57{ 57{
58 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 58 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
59} 59}
diff --git a/firmware/target/coldfire/mpio/hd200/powermgmt-hd200.c b/firmware/target/coldfire/mpio/hd200/powermgmt-hd200.c
index 9d95938ff9..964d551de1 100644
--- a/firmware/target/coldfire/mpio/hd200/powermgmt-hd200.c
+++ b/firmware/target/coldfire/mpio/hd200/powermgmt-hd200.c
@@ -51,7 +51,7 @@ const unsigned short percent_to_volt_charge[11] =
51 51
52 52
53/* Returns battery voltage from ADC [millivolts] */ 53/* Returns battery voltage from ADC [millivolts] */
54unsigned int battery_adc_voltage(void) 54int _battery_voltage(void)
55{ 55{
56 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 11; 56 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 11;
57} 57}
diff --git a/firmware/target/coldfire/mpio/hd300/powermgmt-hd300.c b/firmware/target/coldfire/mpio/hd300/powermgmt-hd300.c
index bdfe9b5fc4..ffd0190073 100644
--- a/firmware/target/coldfire/mpio/hd300/powermgmt-hd300.c
+++ b/firmware/target/coldfire/mpio/hd300/powermgmt-hd300.c
@@ -51,7 +51,7 @@ const unsigned short percent_to_volt_charge[11] =
51 51
52 52
53/* Returns battery voltage from ADC [millivolts] */ 53/* Returns battery voltage from ADC [millivolts] */
54unsigned int battery_adc_voltage(void) 54int _battery_voltage(void)
55{ 55{
56 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 11; 56 return (adc_read(ADC_BATTERY) * BATTERY_SCALE_FACTOR) >> 11;
57} 57}
diff --git a/firmware/target/hosted/android/powermgmt-android.c b/firmware/target/hosted/android/powermgmt-android.c
index dcbd7a6214..1e70a81753 100644
--- a/firmware/target/hosted/android/powermgmt-android.c
+++ b/firmware/target/hosted/android/powermgmt-android.c
@@ -28,10 +28,10 @@ extern JNIEnv *env_ptr;
28extern jclass RockboxService_class; 28extern jclass RockboxService_class;
29extern jobject RockboxService_instance; 29extern jobject RockboxService_instance;
30 30
31static jfieldID _battery_level; 31static jfieldID __battery_level;
32static jobject BatteryMonitor_instance; 32static jobject BatteryMonitor_instance;
33 33
34void powermgmt_init_target(void) 34static void new_battery_monitor(void)
35{ 35{
36 JNIEnv e = *env_ptr; 36 JNIEnv e = *env_ptr;
37 jclass class = e->FindClass(env_ptr, "org/rockbox/monitors/BatteryMonitor"); 37 jclass class = e->FindClass(env_ptr, "org/rockbox/monitors/BatteryMonitor");
@@ -43,29 +43,15 @@ void powermgmt_init_target(void)
43 RockboxService_instance); 43 RockboxService_instance);
44 44
45 /* cache the battery level field id */ 45 /* cache the battery level field id */
46 _battery_level = (*env_ptr)->GetFieldID(env_ptr, 46 __battery_level = (*env_ptr)->GetFieldID(env_ptr,
47 class, 47 class,
48 "mBattLevel", "I"); 48 "mBattLevel", "I");
49} 49}
50 50
51int battery_level(void) 51int _battery_level(void)
52{ 52{
53 return (*env_ptr)->GetIntField(env_ptr, BatteryMonitor_instance, _battery_level); 53 if (!BatteryMonitor_instance)
54 new_battery_monitor();
55 return (*env_ptr)->GetIntField(env_ptr, BatteryMonitor_instance, __battery_level);
54} 56}
55 57
56int battery_time(void)
57{ /* cannot calculate yet */
58 return 0;
59}
60
61/* should always be safe on android targets, the host shuts us down before */
62bool battery_level_safe(void)
63{
64 return true;
65}
66
67/* TODO */
68unsigned battery_voltage(void)
69{
70 return 0;
71}
diff --git a/firmware/target/hosted/android/system-android.c b/firmware/target/hosted/android/system-android.c
index fba7ff4e2c..e48e910c0c 100644
--- a/firmware/target/hosted/android/system-android.c
+++ b/firmware/target/hosted/android/system-android.c
@@ -45,7 +45,7 @@ void system_reboot(void) { }
45 45
46/* this is used to return from the entry point of the native library. */ 46/* this is used to return from the entry point of the native library. */
47static jmp_buf poweroff_buf; 47static jmp_buf poweroff_buf;
48void shutdown_hw(void) 48void power_off(void)
49{ 49{
50 longjmp(poweroff_buf, 1); 50 longjmp(poweroff_buf, 1);
51} 51}
diff --git a/firmware/target/hosted/maemo/maemo-thread.c b/firmware/target/hosted/maemo/maemo-thread.c
index a32a563459..2f1d033baa 100644
--- a/firmware/target/hosted/maemo/maemo-thread.c
+++ b/firmware/target/hosted/maemo/maemo-thread.c
@@ -163,40 +163,14 @@ int maemo_thread_func (void *wait_for_osso_startup)
163 return 0; 163 return 0;
164} 164}
165 165
166/** Rockbox battery related functions */
167void battery_status_update(void)
168{
169 battery_percent = maemo_battery_level;
170 send_battery_level_event();
171}
172
173/* Returns true if any power input is connected - charging-capable
174 * or not. */
175bool power_input_present(void)
176{
177 return false;
178}
179
180unsigned battery_voltage(void)
181{
182 return 0;
183}
184
185/* Returns battery level in percent */ 166/* Returns battery level in percent */
186int battery_level(void) 167int _battery_level(void)
187{ 168{
188 battery_status_update();
189 return maemo_battery_level; 169 return maemo_battery_level;
190} 170}
191 171
192/* Return remaining battery time in minutes */ 172/* Return remaining battery time in minutes */
193int battery_time(void) 173int _battery_time(void)
194{ 174{
195 battery_status_update();
196 return maemo_remaining_time_sec / 60; 175 return maemo_remaining_time_sec / 60;
197} 176}
198
199bool battery_level_safe(void)
200{
201 return battery_level() >= 5;
202}
diff --git a/firmware/target/hosted/powermgmt.c b/firmware/target/hosted/powermgmt.c
deleted file mode 100644
index bf05e5ff19..0000000000
--- a/firmware/target/hosted/powermgmt.c
+++ /dev/null
@@ -1,56 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2011 by Thomas Jarosch
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21#include "config.h"
22#include "powermgmt.h"
23#include "thread.h"
24#include "kernel.h"
25
26static char power_stack[DEFAULT_STACK_SIZE];
27static const char power_thread_name[] = "power";
28
29void powermgmt_init_target(void);
30
31#if !(CONFIG_PLATFORM & PLATFORM_ANDROID)
32void powermgmt_init_target(void)
33{
34 /* Nothing to do */
35}
36#endif
37
38static void power_thread(void)
39{
40 powermgmt_init_target();
41
42 while (1)
43 {
44 /* Sleep two seconds */
45 sleep(HZ*2);
46
47 handle_auto_poweroff();
48 }
49} /* power_thread */
50
51void powermgmt_init(void)
52{
53 create_thread(power_thread, power_stack, sizeof(power_stack), 0,
54 power_thread_name IF_PRIO(, PRIORITY_SYSTEM)
55 IF_COP(, CPU));
56}
diff --git a/firmware/target/hosted/sdl/system-sdl.c b/firmware/target/hosted/sdl/system-sdl.c
index 93a8a7cb66..87b2e0ccd1 100644
--- a/firmware/target/hosted/sdl/system-sdl.c
+++ b/firmware/target/hosted/sdl/system-sdl.c
@@ -196,7 +196,7 @@ static int sdl_event_thread(void * param)
196 return 0; 196 return 0;
197} 197}
198 198
199void shutdown_hw(void) 199void power_off(void)
200{ 200{
201 /* Shut down SDL event loop */ 201 /* Shut down SDL event loop */
202 SDL_Event event; 202 SDL_Event event;
diff --git a/firmware/target/hosted/ypr0/powermgmt-ypr0.c b/firmware/target/hosted/ypr0/powermgmt-ypr0.c
index 0c162a619d..9c90f7ea02 100644
--- a/firmware/target/hosted/ypr0/powermgmt-ypr0.c
+++ b/firmware/target/hosted/ypr0/powermgmt-ypr0.c
@@ -70,7 +70,7 @@ unsigned int power_input_status(void)
70 70
71/* Returns battery voltage from ADC [millivolts], 71/* Returns battery voltage from ADC [millivolts],
72 * adc returns voltage in 5mV steps */ 72 * adc returns voltage in 5mV steps */
73unsigned int battery_adc_voltage(void) 73int _battery_voltage(void)
74{ 74{
75 return adc_read(3) * 5; 75 return adc_read(3) * 5;
76} 76}
@@ -80,5 +80,5 @@ bool charging_state(void)
80 const unsigned short charged_thres = 4170; 80 const unsigned short charged_thres = 4170;
81 bool ret = (power_input_status() == POWER_INPUT_MAIN_CHARGER); 81 bool ret = (power_input_status() == POWER_INPUT_MAIN_CHARGER);
82 /* dont indicate for > ~95% */ 82 /* dont indicate for > ~95% */
83 return ret && (battery_adc_voltage() <= charged_thres); 83 return ret && (_battery_voltage() <= charged_thres);
84} 84}
diff --git a/firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c b/firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c
index 99d73fa3c7..e6f0cd9cc3 100644
--- a/firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c
+++ b/firmware/target/mips/ingenic_jz47xx/onda_vx747/sadc-onda_vx747.c
@@ -102,7 +102,7 @@ const unsigned short percent_to_volt_charge[11] =
102#define BATTERY_SCALE_FACTOR 7500 102#define BATTERY_SCALE_FACTOR 7500
103 103
104/* Returns battery voltage from ADC [millivolts] */ 104/* Returns battery voltage from ADC [millivolts] */
105unsigned int battery_adc_voltage(void) 105int _battery_voltage(void)
106{ 106{
107 unsigned int dummy, bat_val; 107 unsigned int dummy, bat_val;
108 108
diff --git a/firmware/target/mips/ingenic_jz47xx/onda_vx767/sadc-onda_vx767.c b/firmware/target/mips/ingenic_jz47xx/onda_vx767/sadc-onda_vx767.c
index 98dbf08fe9..710da6b729 100644
--- a/firmware/target/mips/ingenic_jz47xx/onda_vx767/sadc-onda_vx767.c
+++ b/firmware/target/mips/ingenic_jz47xx/onda_vx767/sadc-onda_vx767.c
@@ -67,7 +67,7 @@ const unsigned short percent_to_volt_charge[11] =
67#define BATTERY_SCALE_FACTOR 1875 67#define BATTERY_SCALE_FACTOR 1875
68 68
69/* Returns battery voltage from ADC [millivolts] */ 69/* Returns battery voltage from ADC [millivolts] */
70unsigned int battery_adc_voltage(void) 70int _battery_voltage(void)
71{ 71{
72 unsigned int dummy, timeout=HZ/4; 72 unsigned int dummy, timeout=HZ/4;
73 73
diff --git a/firmware/target/sh/archos/fm_v2/powermgmt-fm_v2.c b/firmware/target/sh/archos/fm_v2/powermgmt-fm_v2.c
index 20596ddedb..5dd7f26d2f 100644
--- a/firmware/target/sh/archos/fm_v2/powermgmt-fm_v2.c
+++ b/firmware/target/sh/archos/fm_v2/powermgmt-fm_v2.c
@@ -54,7 +54,7 @@ const unsigned short percent_to_volt_charge[11] =
54/* full-scale ADC readout (2^10) in millivolt */ 54/* full-scale ADC readout (2^10) in millivolt */
55 55
56/* Returns battery voltage from ADC [millivolts] */ 56/* Returns battery voltage from ADC [millivolts] */
57unsigned int battery_adc_voltage(void) 57int _battery_voltage(void)
58{ 58{
59 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 59 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
60} 60}
diff --git a/firmware/target/sh/archos/ondio/powermgmt-ondio.c b/firmware/target/sh/archos/ondio/powermgmt-ondio.c
index dc0c37b9f9..dc3cab031f 100644
--- a/firmware/target/sh/archos/ondio/powermgmt-ondio.c
+++ b/firmware/target/sh/archos/ondio/powermgmt-ondio.c
@@ -46,7 +46,7 @@ const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
46/* full-scale ADC readout (2^10) in millivolt */ 46/* full-scale ADC readout (2^10) in millivolt */
47 47
48/* Returns battery voltage from ADC [millivolts] */ 48/* Returns battery voltage from ADC [millivolts] */
49unsigned int battery_adc_voltage(void) 49int _battery_voltage(void)
50{ 50{
51 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 51 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
52} 52}
diff --git a/firmware/target/sh/archos/player/powermgmt-player.c b/firmware/target/sh/archos/player/powermgmt-player.c
index b9a4fe3277..8aa03d88a5 100644
--- a/firmware/target/sh/archos/player/powermgmt-player.c
+++ b/firmware/target/sh/archos/player/powermgmt-player.c
@@ -56,7 +56,7 @@ const unsigned short percent_to_volt_charge[11] =
56/* full-scale ADC readout (2^10) in millivolt */ 56/* full-scale ADC readout (2^10) in millivolt */
57 57
58/* Returns battery voltage from ADC [millivolts] */ 58/* Returns battery voltage from ADC [millivolts] */
59unsigned int battery_adc_voltage(void) 59int _battery_voltage(void)
60{ 60{
61 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 61 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
62} 62}
diff --git a/firmware/target/sh/archos/recorder/powermgmt-recorder.c b/firmware/target/sh/archos/recorder/powermgmt-recorder.c
index 47f0093456..0bce1585cd 100644
--- a/firmware/target/sh/archos/recorder/powermgmt-recorder.c
+++ b/firmware/target/sh/archos/recorder/powermgmt-recorder.c
@@ -60,7 +60,7 @@ const unsigned short percent_to_volt_charge[11] =
60/* full-scale ADC readout (2^10) in millivolt */ 60/* full-scale ADC readout (2^10) in millivolt */
61 61
62/* Returns battery voltage from ADC [millivolts] */ 62/* Returns battery voltage from ADC [millivolts] */
63unsigned int battery_adc_voltage(void) 63int _battery_voltage(void)
64{ 64{
65 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10; 65 return (adc_read(ADC_UNREG_POWER) * BATTERY_SCALE_FACTOR) >> 10;
66} 66}