From feea8de21bb7d73624eddaeb536a0bc298ccc61e Mon Sep 17 00:00:00 2001 From: Alec Berg Date: Mon, 3 Aug 2015 16:33:44 -0700 Subject: 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 Reviewed-on: https://chromium-review.googlesource.com/290453 Reviewed-by: Shawn N Reviewed-by: Rong Chang --- board/ryu/board.c | 45 ++------------------------------------------- 1 file changed, 2 insertions(+), 43 deletions(-) (limited to 'board/ryu') 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); -- cgit v1.2.1