summaryrefslogtreecommitdiff
path: root/board/glados/board.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/glados/board.c')
-rw-r--r--board/glados/board.c59
1 files changed, 4 insertions, 55 deletions
diff --git a/board/glados/board.c b/board/glados/board.c
index fe7773d085..5e026b71b6 100644
--- a/board/glados/board.c
+++ b/board/glados/board.c
@@ -47,51 +47,28 @@ static void pd_mcu_interrupt(enum gpio_signal signal)
host_command_pd_send_status(0);
}
-static void update_vbus_supplier(int port, int vbus_level)
-{
- struct charge_port_info charge;
-
- /*
- * If VBUS is low, or VBUS is high and we are not outputting VBUS
- * ourselves, then update the VBUS supplier.
- */
- if (!vbus_level || !usb_charger_port_is_sourcing_vbus(port)) {
- charge.voltage = USB_CHARGER_VOLTAGE_MV;
- charge.current = vbus_level ? USB_CHARGER_MIN_CURR_MA : 0;
- charge_manager_update_charge(CHARGE_SUPPLIER_VBUS,
- port,
- &charge);
- }
-}
-
void vbus0_evt(enum gpio_signal signal)
{
/* VBUS present GPIO is inverted */
- int vbus_level = !gpio_get_level(signal);
-
- CPRINTF("VBUS C0, %d\n", vbus_level);
- update_vbus_supplier(0, vbus_level);
+ usb_charger_vbus_change(0, !gpio_get_level(signal));
task_wake(TASK_ID_PD_C0);
}
void vbus1_evt(enum gpio_signal signal)
{
/* VBUS present GPIO is inverted */
- int vbus_level = !gpio_get_level(signal);
-
- CPRINTF("VBUS C1, %d\n", vbus_level);
- update_vbus_supplier(0, vbus_level);
+ usb_charger_vbus_change(1, !gpio_get_level(signal));
task_wake(TASK_ID_PD_C1);
}
void usb0_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);
}
void usb1_evt(enum gpio_signal signal)
{
- task_wake(TASK_ID_USB_CHG_P1);
+ task_set_event(TASK_ID_USB_CHG_P1, USB_CHG_EVENT_BC12, 0);
}
#include "gpio_list.h"
@@ -234,40 +211,12 @@ DECLARE_HOOK(HOOK_CHIPSET_PRE_INIT, pmic_init, HOOK_PRIO_DEFAULT);
/* Initialize board. */
static void board_init(void)
{
- int i;
- struct charge_port_info charge_none;
-
/* Enable PD MCU interrupt */
gpio_enable_interrupt(GPIO_PD_MCU_INT);
/* Enable VBUS interrupt */
gpio_enable_interrupt(GPIO_USB_C0_VBUS_WAKE_L);
gpio_enable_interrupt(GPIO_USB_C1_VBUS_WAKE_L);
- /* Initialize all pericom charge suppliers to 0 */
- charge_none.voltage = USB_CHARGER_VOLTAGE_MV;
- charge_none.current = 0;
- for (i = 0; i < CONFIG_USB_PD_PORT_COUNT; i++) {
- 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 whether or not VBUS is present */
- update_vbus_supplier(0, !gpio_get_level(GPIO_USB_C0_VBUS_WAKE_L));
- update_vbus_supplier(1, !gpio_get_level(GPIO_USB_C1_VBUS_WAKE_L));
-
/* Enable pericom BC1.2 interrupts */
gpio_enable_interrupt(GPIO_USB_C0_BC12_INT_L);
gpio_enable_interrupt(GPIO_USB_C1_BC12_INT_L);