summaryrefslogtreecommitdiff
path: root/board/dibbi/usb_pd_policy.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/dibbi/usb_pd_policy.c')
-rw-r--r--board/dibbi/usb_pd_policy.c26
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);
}