diff options
author | Rong Chang <rongchang@chromium.org> | 2015-06-10 20:41:33 +0800 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-06-10 18:23:55 +0000 |
commit | 5cc37f51d6047320dcff379a61e31987237ddf4c (patch) | |
tree | 9b037e158bf7ea186a48453d64c9c4bfadda567d | |
parent | 09779ca159d983e60cd9e5f36aa7c2795c7058fb (diff) | |
download | chrome-ec-5cc37f51d6047320dcff379a61e31987237ddf4c.tar.gz |
oak: initialize charge manager to use BC1.2 suppliers
This change continues porting CL:275686 to oak. Since oak didn't connect
VBUS wake signals to EC, it checks Pericom BC1.2 status on initialize VBUS
suppliers.
BRANCH=none
BUG=chrome-os-partner:41167
TEST=none
Change-Id: Idbc7032329f7c46aee8f35c3fdd1e8e4aa9c001c
Signed-off-by: Rong Chang <rongchang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/276587
Reviewed-by: Alec Berg <alecaberg@chromium.org>
-rw-r--r-- | board/oak/board.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/board/oak/board.c b/board/oak/board.c index b49155b430..f4fc84918c 100644 --- a/board/oak/board.c +++ b/board/oak/board.c @@ -21,6 +21,7 @@ #include "keyboard_raw.h" #include "lid_switch.h" #include "pi3usb30532.h" +#include "pi3usb9281.h" #include "power.h" #include "power_button.h" #include "registers.h" @@ -156,6 +157,10 @@ void i2c_set_timeout(int port, uint32_t timeout) /* Initialize board. */ static void board_init(void) { + int i, bc12_status; + struct charge_port_info charge_none, charge_vbus; + struct charge_port_info *charge_sel; + /* Enable rev1 testing GPIOs */ gpio_set_level(GPIO_SYSTEM_POWER_H, 1); /* Enable PD MCU interrupt */ @@ -165,6 +170,43 @@ static void board_init(void) #ifdef CONFIG_AP_WARM_RESET_INTERRUPT gpio_enable_interrupt(GPIO_AP_RESET_L); #endif + + charge_none.voltage = USB_BC12_CHARGE_VOLTAGE; + charge_none.current = 0; + charge_vbus.voltage = USB_BC12_CHARGE_VOLTAGE; + charge_vbus.current = DEFAULT_CURR_LIMIT; + for (i = 0; i < CONFIG_USB_PD_PORT_COUNT; i++) { + /* Initialize all pericom charge suppliers to 0 */ + charge_manager_update_charge( + CHARGE_SUPPLIER_PROPRIETARY, + i, + &charge_none); + charge_manager_update_charge( + CHARGE_SUPPLIER_BC12_CDP, + i, + &charge_none); + charge_manager_update_charge( + CHARGE_SUPPLIER_BC12_DCP, + i, + &charge_none); + charge_manager_update_charge( + CHARGE_SUPPLIER_BC12_SDP, + i, + &charge_none); + charge_manager_update_charge( + CHARGE_SUPPLIER_OTHER, + i, + &charge_none); + + /* Initialize VBUS supplier based on VBUS */ + bc12_status = pi3usb9281_get_charger_status(i); + charge_sel = PI3USB9281_CHG_STATUS_ANY(bc12_status) ? + &charge_vbus : &charge_none; + charge_manager_update_charge( + CHARGE_SUPPLIER_VBUS, + i, + charge_sel); + } } DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT); |