mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-27 18:25:05 +00:00
apollolake: Do not power-on AP till sufficient power is provided
Do not power-on the AP unless battery can provide sufficient power
or the charger is negotiated to sufficient power.
BUG=chrome-os-partner:56494
BRANCH=none
TEST=Manually tested on Reef. Device can boot to OS without the
battery & cut-off battery.
Change-Id: Ib22bad81a29ccbb2fecc8e835148b627dd722988
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/374023
Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
committed by
chrome-bot
parent
748b5bad9f
commit
f322e32a3e
@@ -34,6 +34,14 @@ static const struct battery_info info = {
|
||||
.discharging_max_c = 60,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_BATTERY_PRESENT_CUSTOM
|
||||
static inline enum battery_present battery_hw_present(void)
|
||||
{
|
||||
/* The GPIO is low when the battery is physically present */
|
||||
return gpio_get_level(GPIO_EC_BATT_PRES_L) ? BP_NO : BP_YES;
|
||||
}
|
||||
#endif
|
||||
|
||||
const struct battery_info *battery_get_info(void)
|
||||
{
|
||||
return &info;
|
||||
@@ -105,8 +113,12 @@ enum battery_disconnect_state battery_get_disconnect_state(void)
|
||||
if (rv || data[2] || data[3] || data[4] || data[5])
|
||||
return BATTERY_DISCONNECT_ERROR;
|
||||
|
||||
/* No safety fault, battery is disconnected */
|
||||
return BATTERY_DISCONNECTED;
|
||||
/*
|
||||
* Battery is present and also the status is initialized and
|
||||
* no safety fault, battery is disconnected.
|
||||
*/
|
||||
if (battery_is_present() == BP_YES)
|
||||
return BATTERY_DISCONNECTED;
|
||||
}
|
||||
not_disconnected = 1;
|
||||
return BATTERY_NOT_DISCONNECTED;
|
||||
@@ -296,8 +308,8 @@ enum battery_present battery_is_present(void)
|
||||
enum battery_present batt_pres;
|
||||
int batt_status;
|
||||
|
||||
/* The GPIO is low when the battery is physically present */
|
||||
batt_pres = gpio_get_level(GPIO_EC_BATT_PRES_L) ? BP_NO : BP_YES;
|
||||
/* Get the physical hardware status */
|
||||
batt_pres = battery_hw_present();
|
||||
|
||||
/*
|
||||
* Make sure battery status is implemented, I2C transactions are
|
||||
|
||||
@@ -256,9 +256,6 @@ static enum power_state _power_handle_state(enum power_state state)
|
||||
/* Platform is powering up, clear forcing_coldreset */
|
||||
forcing_coldreset = 0;
|
||||
|
||||
/* Call hooks to initialize PMIC */
|
||||
hook_notify(HOOK_CHIPSET_PRE_INIT);
|
||||
|
||||
/*
|
||||
* Allow up to 1s for charger to be initialized, in case
|
||||
* we're trying to boot the AP with no battery.
|
||||
@@ -276,6 +273,9 @@ static enum power_state _power_handle_state(enum power_state state)
|
||||
return POWER_G3;
|
||||
}
|
||||
|
||||
/* Call hooks to initialize PMIC */
|
||||
hook_notify(HOOK_CHIPSET_PRE_INIT);
|
||||
|
||||
/* Wait for RSMRST_L de-assert */
|
||||
if (power_wait_signals(IN_PGOOD_ALL_CORE)) {
|
||||
chipset_force_shutdown();
|
||||
|
||||
Reference in New Issue
Block a user