diff options
author | Alec Berg <alecaberg@chromium.org> | 2015-08-03 16:33:44 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-08-05 16:50:46 +0000 |
commit | feea8de21bb7d73624eddaeb536a0bc298ccc61e (patch) | |
tree | beeeda82a2bf7b7d536bedd55d2ba4aa44a38967 /board/ryu | |
parent | 38eb374fceed84ea499c5e27c8b2ded869c5d75f (diff) | |
download | chrome-ec-feea8de21bb7d73624eddaeb536a0bc298ccc61e.tar.gz |
usb_charger: move common usb charger code out of board directory
Move common USB charger code out of board directory including
setting VBUS supplier when VBUS changes, and initializing BC1.2
supplier types on init.
This also enables re-enabling of Pericom BC1.2 detection interrupts
when VBUS is changed on all boards that use USB_CHG task.
BUG=chrome-os-partner:42292
BRANCH=none
TEST=make -j buildall. Tested on glados and samus by plugging in
a few different chargers and making sure we charge.
Change-Id: Ib102fbf7a6aace998e6fcb6d35f3c97e5f03f5c2
Signed-off-by: Alec Berg <alecaberg@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/290453
Reviewed-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Rong Chang <rongchang@chromium.org>
Diffstat (limited to 'board/ryu')
-rw-r--r-- | board/ryu/board.c | 45 |
1 files changed, 2 insertions, 43 deletions
diff --git a/board/ryu/board.c b/board/ryu/board.c index ad1f5788b6..045fbe3dd4 100644 --- a/board/ryu/board.c +++ b/board/ryu/board.c @@ -58,34 +58,15 @@ static int charge_current_limit; */ static struct ec_response_host_event_status host_event_status __aligned(4); -static void vbus_log(void) -{ - CPRINTS("VBUS %d", gpio_get_level(GPIO_CHGR_ACOK)); -} -DECLARE_DEFERRED(vbus_log); - void vbus_evt(enum gpio_signal signal) { - struct charge_port_info charge; - int vbus_level = gpio_get_level(signal); - - /* - * If VBUS is low, or VBUS is high and we are not outputting VBUS - * ourselves, then update the VBUS supplier. - */ - if (!vbus_level || !gpio_get_level(GPIO_CHGR_OTG)) { - charge.voltage = USB_CHARGER_VOLTAGE_MV; - charge.current = vbus_level ? USB_CHARGER_MIN_CURR_MA : 0; - charge_manager_update_charge(CHARGE_SUPPLIER_VBUS, 0, &charge); - } - - hook_call_deferred(vbus_log, 0); + usb_charger_vbus_change(0, gpio_get_level(signal)); task_wake(TASK_ID_PD); } void usb_evt(enum gpio_signal signal) { - task_wake(TASK_ID_USB_CHG_P0); + task_set_event(TASK_ID_USB_CHG_P0, USB_CHG_EVENT_BC12, 0); } #include "gpio_list.h" @@ -152,28 +133,6 @@ BUILD_ASSERT(ARRAY_SIZE(pi3usb9281_chips) == static void board_init(void) { int i; - struct charge_port_info charge_none, charge_vbus; - - /* Initialize all pericom charge suppliers to 0 */ - charge_none.voltage = USB_CHARGER_VOLTAGE_MV; - charge_none.current = 0; - charge_manager_update_charge(CHARGE_SUPPLIER_PROPRIETARY, - 0, - &charge_none); - charge_manager_update_charge(CHARGE_SUPPLIER_BC12_CDP, 0, &charge_none); - charge_manager_update_charge(CHARGE_SUPPLIER_BC12_DCP, 0, &charge_none); - charge_manager_update_charge(CHARGE_SUPPLIER_BC12_SDP, 0, &charge_none); - charge_manager_update_charge(CHARGE_SUPPLIER_OTHER, 0, &charge_none); - - /* Initialize VBUS supplier based on whether or not VBUS is present */ - charge_vbus.voltage = USB_CHARGER_VOLTAGE_MV; - charge_vbus.current = USB_CHARGER_MIN_CURR_MA; - if (gpio_get_level(GPIO_CHGR_ACOK)) - charge_manager_update_charge(CHARGE_SUPPLIER_VBUS, 0, - &charge_vbus); - else - charge_manager_update_charge(CHARGE_SUPPLIER_VBUS, 0, - &charge_none); /* Enable pericom BC1.2 interrupts. */ gpio_enable_interrupt(GPIO_USBC_BC12_INT_L); |