diff options
Diffstat (limited to 'board/dibbi/usb_pd_policy.c')
-rw-r--r-- | board/dibbi/usb_pd_policy.c | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/board/dibbi/usb_pd_policy.c b/board/dibbi/usb_pd_policy.c index 9d573b9c61..21cdf82a57 100644 --- a/board/dibbi/usb_pd_policy.c +++ b/board/dibbi/usb_pd_policy.c @@ -8,9 +8,9 @@ #include "chipset.h" #include "common.h" #include "console.h" -#include "driver/tcpm/tcpci.h" #include "gpio.h" #include "usb_pd.h" +#include "usbc_ppc.h" #define CPRINTF(format, args...) cprintf(CC_USBPD, format, ##args) #define CPRINTS(format, args...) cprints(CC_USBPD, format, ##args) @@ -36,11 +36,19 @@ int pd_check_vconn_swap(int port) void pd_power_supply_reset(int port) { + int prev_en; + if (port < 0 || port >= board_get_usb_pd_port_count()) return; + prev_en = ppc_is_sourcing_vbus(port); + /* Disable VBUS source */ - gpio_set_level(GPIO_EN_USB_C0_VBUS, 0); + ppc_vbus_source_enable(port, 0); + + /* Enable discharge if we were previously sourcing 5V */ + if (prev_en) + pd_set_vbus_discharge(port, 1); /* Notify host of power info change. */ pd_send_host_event(PD_EVENT_POWER_CHANGE); @@ -48,11 +56,19 @@ void pd_power_supply_reset(int port) int pd_set_power_supply_ready(int port) { + int rv; + /* Disable charging */ - gpio_set_level(GPIO_EN_PPVAR_USBC_ADP_L, 1); + rv = ppc_vbus_sink_enable(port, 0); + if (rv) + return rv; + + pd_set_vbus_discharge(port, 0); /* Enable VBUS source */ - gpio_set_level(GPIO_EN_USB_C0_VBUS, 1); + rv = ppc_vbus_source_enable(port, 1); + if (rv) + return rv; /* Notify host of power info change. */ pd_send_host_event(PD_EVENT_POWER_CHANGE); @@ -65,5 +81,5 @@ __override int pd_snk_is_vbus_provided(int port) if (port != CHARGE_PORT_TYPEC0) return 0; - return gpio_get_level(GPIO_USBC_ADP_PRESENT_L); + return ppc_is_vbus_present(port); } |