diff options
Diffstat (limited to 'firmware/target/hosted/android/dx50/powermgmt-dx50.c')
-rw-r--r-- | firmware/target/hosted/android/dx50/powermgmt-dx50.c | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/firmware/target/hosted/android/dx50/powermgmt-dx50.c b/firmware/target/hosted/android/dx50/powermgmt-dx50.c new file mode 100644 index 0000000000..45756cb8e8 --- /dev/null +++ b/firmware/target/hosted/android/dx50/powermgmt-dx50.c | |||
@@ -0,0 +1,72 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2010 by Thomas Martitz | ||
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 | |||
22 | #include <stdbool.h> | ||
23 | #include <stdio.h> | ||
24 | #include "config.h" | ||
25 | #include "power.h" | ||
26 | #include "powermgmt.h" | ||
27 | |||
28 | unsigned int power_input_status(void) | ||
29 | { | ||
30 | int val; | ||
31 | FILE *f = fopen("/sys/class/power_supply/ac/present", "r"); | ||
32 | fscanf(f, "%d", &val); | ||
33 | fclose(f); | ||
34 | return val?POWER_INPUT_MAIN_CHARGER:POWER_INPUT_NONE; | ||
35 | } | ||
36 | |||
37 | /* Values for stock PISEN battery. TODO: Needs optimization */ | ||
38 | |||
39 | const unsigned short battery_level_dangerous[BATTERY_TYPES_COUNT] = | ||
40 | { | ||
41 | 3380 | ||
42 | }; | ||
43 | |||
44 | const unsigned short battery_level_shutoff[BATTERY_TYPES_COUNT] = | ||
45 | { | ||
46 | 3100 | ||
47 | }; | ||
48 | |||
49 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging disabled */ | ||
50 | const unsigned short percent_to_volt_discharge[BATTERY_TYPES_COUNT][11] = | ||
51 | { | ||
52 | { 3370, 3650, 3700, 3740, 3780, 3820, 3870, 3930, 4000, 4090, 4190 } | ||
53 | }; | ||
54 | |||
55 | /* voltages (millivolt) of 0%, 10%, ... 100% when charging enabled */ | ||
56 | const unsigned short percent_to_volt_charge[11] = | ||
57 | { | ||
58 | 3540, 3860, 3930, 3980, 4000, 4020, 4040, 4080, 4130, 4180, 4220 /* LiPo */ | ||
59 | }; | ||
60 | |||
61 | |||
62 | /* Returns battery voltage from android measurement [millivolts] */ | ||
63 | int _battery_voltage(void) | ||
64 | { | ||
65 | int val; | ||
66 | FILE *f = fopen("/sys/class/power_supply/battery/voltage_now", "r"); | ||
67 | fscanf(f, "%d", &val); | ||
68 | fclose(f); | ||
69 | return (val/1000); | ||
70 | } | ||
71 | |||
72 | |||