mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2026-01-09 17:11:42 +00:00
Add initial support for Oak rev1 board. This is just the EC and includes battery charging but does not include USB PD. BUG=none BRANCH=none TEST=load on oak board and get console Signed-off-by: Rong Chang <rongchang@chromium.org> Signed-off-by: Alec Berg <alecaberg@chromium.org> Change-Id: I626f3921025fbc39ba22b04eeb6dd1084cd70777 Reviewed-on: https://chromium-review.googlesource.com/261678
52 lines
1.3 KiB
C
52 lines
1.3 KiB
C
/* Copyright 2015 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
/*
|
|
* Pure GPIO-based external power detection, buffered to PCH.
|
|
* Drive high in S5-S0 when AC_PRESENT is high, otherwise drive low.
|
|
*/
|
|
|
|
#include "chipset.h"
|
|
#include "common.h"
|
|
#include "gpio.h"
|
|
#include "hooks.h"
|
|
#include "system.h"
|
|
#include "util.h"
|
|
|
|
int extpower_is_present(void)
|
|
{
|
|
return gpio_get_level(GPIO_AC_PRESENT);
|
|
}
|
|
|
|
static void extpower_buffer_to_soc(void)
|
|
{
|
|
/* Drive high when AP is off */
|
|
gpio_set_level(GPIO_LEVEL_SHIFT_EN_L,
|
|
chipset_in_state(CHIPSET_STATE_HARD_OFF) ? 1 : 0);
|
|
}
|
|
DECLARE_HOOK(HOOK_CHIPSET_PRE_INIT, extpower_buffer_to_soc, HOOK_PRIO_DEFAULT);
|
|
|
|
static void extpower_shutdown(void)
|
|
{
|
|
/* Disable level shift to SoC when shutting down */
|
|
gpio_set_level(GPIO_LEVEL_SHIFT_EN_L, 1);
|
|
}
|
|
DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, extpower_shutdown, HOOK_PRIO_DEFAULT);
|
|
|
|
void extpower_interrupt(enum gpio_signal signal)
|
|
{
|
|
/* Trigger notification of external power change */
|
|
extpower_buffer_to_soc();
|
|
}
|
|
|
|
static void extpower_init(void)
|
|
{
|
|
extpower_buffer_to_soc();
|
|
|
|
/* Enable interrupts, now that we've initialized */
|
|
gpio_enable_interrupt(GPIO_AC_PRESENT);
|
|
}
|
|
DECLARE_HOOK(HOOK_INIT, extpower_init, HOOK_PRIO_DEFAULT);
|