summaryrefslogtreecommitdiff
path: root/firmware/target/hosted/ibasso/powermgmt-ibasso.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/hosted/ibasso/powermgmt-ibasso.c')
-rw-r--r--firmware/target/hosted/ibasso/powermgmt-ibasso.c122
1 files changed, 122 insertions, 0 deletions
diff --git a/firmware/target/hosted/ibasso/powermgmt-ibasso.c b/firmware/target/hosted/ibasso/powermgmt-ibasso.c
new file mode 100644
index 0000000000..7df0064097
--- /dev/null
+++ b/firmware/target/hosted/ibasso/powermgmt-ibasso.c
@@ -0,0 +1,122 @@
1/***************************************************************************
2 * __________ __ ___
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 *
9 * Copyright (C) 2014 by Ilia Sergachev: Initial Rockbox port to iBasso DX50
10 * Copyright (C) 2014 by Mario Basister: iBasso DX90 port
11 * Copyright (C) 2014 by Simon Rothen: Initial Rockbox repository submission, additional features
12 * Copyright (C) 2014 by Udo Schläpfer: Code clean up, additional features
13 *
14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License
16 * as published by the Free Software Foundation; either version 2
17 * of the License, or (at your option) any later version.
18 *
19 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20 * KIND, either express or implied.
21 *
22 ****************************************************************************/
23
24
25#include <stdio.h>
26
27#include "config.h"
28#include "debug.h"
29#include "panic.h"
30
31#include "debug-ibasso.h"
32#include "sysfs-ibasso.h"
33
34
35/* Based on batterymonitor with PISEN and Samsung SIII battery. */
36
37
38const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] =
39{
40 3600
41};
42
43
44const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] =
45{
46 3500
47};
48
49
50/*
51 Averages at percent of running time from five measuremnts with PISEN and Samsung SIII battery
52 during normal usage.
53
54 Mongo default values (?)
55 < 3660 (0%), < 3730 (1% - 10%), < 3780 (11% - 20%), < 3830 (21% - 40%), < 3950 (41% - 60%),
56 < 4080 (61% - 80%), > 4081 (81% - 100%)
57*/
58const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] =
59{
60 { 3522, 3660, 3720, 3752, 3784, 3827, 3896, 3978, 4072, 4168, 4255 }
61};
62
63
64/* Copied from percent_to_volt_discharge. */
65const unsigned short percent_to_volt_charge[11] =
66{
67 3500, 3544, 3578, 3623, 3660, 3773, 3782, 3853, 3980, 4130, 4360
68};
69
70
71static int _battery_present = -1;
72
73
74int _battery_voltage(void)
75{
76 /*TRACE;*/
77
78 if( (_battery_present == -1)
79 && (! sysfs_get_int(SYSFS_BATTERY_PRESENT, &_battery_present)))
80 {
81 /* This check is only done once at startup. */
82
83 DEBUGF("ERROR %s: Can not get current battery availabilty.", __func__);
84 _battery_present = 1;
85 }
86
87 int val;
88
89 if(_battery_present == 1)
90 {
91 /* Battery is present. */
92
93 /*
94 /sys/class/power_supply/battery/voltage_now
95 Voltage in microvolt.
96 */
97 if(! sysfs_get_int(SYSFS_BATTERY_VOLTAGE_NOW, &val))
98 {
99 DEBUGF("ERROR %s: Can not get current battery voltage.", __func__);
100 return 0;
101 }
102 }
103 else
104 {
105 /*
106 No battery, so we have to be running solely from USB power.
107 This will prevent Rockbox from forcing shutdown due to low power.
108 */
109
110 /*
111 /sys/class/power_supply/usb/voltage_now
112 Voltage in microvolt.
113 */
114 if(! sysfs_get_int(SYSFS_USB_POWER_VOLTAGE_NOW, &val))
115 {
116 DEBUGF("ERROR %s: Can not get current USB voltage.", __func__);
117 return 0;
118 }
119 }
120
121 return(val / 1000);
122}