Subversion Repositories freemyipod

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
273 theseven 1
//
2
//
3
//    Copyright 2010 TheSeven
4
//
5
//
427 farthen 6
//    This file is part of emCORE.
273 theseven 7
//
427 farthen 8
//    emCORE is free software: you can redistribute it and/or
273 theseven 9
//    modify it under the terms of the GNU General Public License as
10
//    published by the Free Software Foundation, either version 2 of the
11
//    License, or (at your option) any later version.
12
//
427 farthen 13
//    emCORE is distributed in the hope that it will be useful,
273 theseven 14
//    but WITHOUT ANY WARRANTY; without even the implied warranty of
15
//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
//    See the GNU General Public License for more details.
17
//
18
//    You should have received a copy of the GNU General Public License along
427 farthen 19
//    with emCORE.  If not, see <http://www.gnu.org/licenses/>.
273 theseven 20
//
21
//
22
 
23
 
24
#include "global.h"
25
#include "s5l8702.h"
26
#include "power.h"
27
#include "pmu.h"
28
 
29
 
30
void reset();
31
 
32
 
33
void power_off(void)
34
{
35
    pmu_set_wake_condition(0x42); /* USB inserted or EXTON1 */
36
    pmu_enter_standby();
37
 
38
    reset();
39
}
40
 
41
void power_init(void)
42
{
43
    pmu_init();
44
}                          
45
 
46
bool charging_state(void)
47
{
48
    return false;
49
}
50
 
51
bool external_power_state(void)
52
{
284 theseven 53
    return (PDAT(12) & 8) ? false : true;
273 theseven 54
}
55
 
56
bool vbus_state(void)
57
{
284 theseven 58
    return (PDAT(12) & 8) ? false : true;
273 theseven 59
}
622 theseven 60
 
61
int read_battery_voltage(int battery)
62
{
63
    if (battery == 0) return pmu_read_battery_voltage();
64
    return -1;
65
}
66
 
67
int read_battery_current(int battery)
68
{
69
    if (battery == 0) return pmu_read_battery_current();
70
    return -1;
71
}
72
 
73
int read_battery_mwh_design(int battery)
74
{
75
    if (battery == 0) return 2035;
76
    return -1;
77
}
78
 
79
int read_battery_mwh_full(int battery)
80
{
81
    if (battery == 0) return 2035;
82
    return -1;
83
}
84
 
85
int read_battery_mwh_current(int battery)
86
{
87
    // TODO: Approximate that better
88
    if (battery == 0) return (read_battery_voltage(0) - 3600) * 3;
89
    return -1;
90
}
91
 
92
int read_battery_mw(int battery)
93
{
94
    return -1;
95
}
96
 
97
enum battery_state read_battery_state(int battery)
98
{
99
    if (battery != 0) return BATTERY_STATE_INVALID;
100
    if (charging_state()) return BATTERY_STATE_CHARGING;
101
    if (external_power_state()) return BATTERY_STATE_IDLE;
102
    return BATTERY_STATE_DISCHARGING;
103
}
845 theseven 104
 
105
int read_input_voltage(int input)
106
{
107
    return -1;
108
}
109
 
110
int read_input_current(int input)
111
{
112
    return -1;
113
}
114
 
115
int read_input_mw(int input)
116
{
117
    return -1;
118
}
119
 
120
enum input_state read_input_state(int input)
121
{
122
    if (input != 0) return INPUT_STATE_INVALID;
123
    if (external_power_state()) return INPUT_STATE_ACTIVE;
124
    return INPUT_STATE_NONPRESENT;
125
}