Trim down peak calculation a bit.
[kugel-rb.git] / firmware / target / arm / s5l8700 / power-meizu.c
blob49458e50bae1fda6716a6225f197411d54f361ce
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright © 2009 Bertrik Sikken
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.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
21 #include <stdbool.h>
22 #include "config.h"
23 #include "inttypes.h"
24 #include "s5l8700.h"
25 #include "power.h"
27 /* Power handling for S5L8700 based Meizu players
29 The M3 and M6 players appear to use the same pins for power, USB detection
30 and charging status.
33 void power_off(void)
35 /* take down PWRON_M (P1.3) */
36 PDAT1 &= ~(1 << 3);
39 void power_init(void)
41 /* configure PWRON_M (P1.3) as output and set it to keep power turned on */
42 PCON1 = (PCON1 & ~(0xF << 12)) | (0x1 << 12);
43 PDAT1 |= (1 << 3);
45 /* configure PBSTAT (P1.4) as input */
46 PCON1 &= ~(0xF << 16);
48 /* configure CHRG (P5.7) as input to monitor charging state */
49 PCON5 &= ~(0xF << 28);
51 /* enable USB2.0 function controller to allow VBUS monitoring */
52 PWRCON &= ~(1 << 15);
55 #if CONFIG_CHARGING
56 unsigned int power_input_status(void)
58 /* check VBUS in the USB2.0 function controller */
59 if (USB_TR & (1 << 15)) {
60 return POWER_INPUT_USB;
63 return POWER_INPUT_NONE;
66 bool charging_state(void)
68 /* CHRG pin goes low when charging */
69 return ((PDAT5 & (1 << 7)) == 0);
71 #endif /* CONFIG_CHARGING */
73 #if CONFIG_TUNER
74 static bool tuner_on = false;
76 bool tuner_power(bool status)
78 if (status != tuner_on)
80 tuner_on = status;
81 status = !status;
84 return status;
87 bool tuner_powered(void)
89 return tuner_on; /* No debug info */
91 #endif /* CONFIG_TUNER */