summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@google.com>2020-05-13 07:31:21 -0600
committerCommit Bot <commit-bot@chromium.org>2020-05-15 18:05:27 +0000
commit887e071cd0e00d2c41324364599c3099f25bebd3 (patch)
tree548e22db552aea8d8fa0eec87fd2a3b8e7f6ced2
parent7e70fc5301b425ce8e0265b6e7ebb3cf9e7109bb (diff)
downloadchrome-ec-887e071cd0e00d2c41324364599c3099f25bebd3.tar.gz
tcpc: change name of get_vbus_level to check_vbus_level
this is to add near future functionality to allow not only the current PRESENT range check but to add Save0V range checking as well, for platforms that allow for this. This just lays the framework and is functionally equivalent. BUG=none BRANCH=none TEST=verify basic USB functionality Signed-off-by: Denis Brockus <dbrockus@google.com> Change-Id: I1eb3411bc3aa9b792c9b97799e1721e5cb229f64 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2199036 Tested-by: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Denis Brockus <dbrockus@chromium.org> Auto-Submit: Denis Brockus <dbrockus@chromium.org>
-rw-r--r--board/atlas/usb_pd_policy.c2
-rw-r--r--board/flapjack/board.c2
-rw-r--r--board/kakadu/board.c4
-rw-r--r--board/kodama/board.c4
-rw-r--r--board/kukui/board.c4
-rw-r--r--board/oak/board.c2
-rw-r--r--board/scarlet/board.c2
-rw-r--r--common/mock/tcpc_mock.c4
-rw-r--r--common/usb_common.c13
-rw-r--r--driver/bc12/max14637.c2
-rw-r--r--driver/tcpm/anx7447.c2
-rw-r--r--driver/tcpm/anx74xx.c4
-rw-r--r--driver/tcpm/anx7688.c4
-rw-r--r--driver/tcpm/fusb302.c9
-rw-r--r--driver/tcpm/mt6370.c2
-rw-r--r--driver/tcpm/nct38xx.c2
-rw-r--r--driver/tcpm/ps8xxx.c2
-rw-r--r--driver/tcpm/raa489000.c2
-rw-r--r--driver/tcpm/tcpci.c13
-rw-r--r--driver/tcpm/tcpci.h2
-rw-r--r--driver/tcpm/tcpm.h11
-rw-r--r--driver/tcpm/tusb422.c2
-rw-r--r--fuzz/usb_pd_fuzz.c2
-rw-r--r--include/usb_pd.h10
-rw-r--r--include/usb_pd_tcpm.h14
25 files changed, 76 insertions, 44 deletions
diff --git a/board/atlas/usb_pd_policy.c b/board/atlas/usb_pd_policy.c
index ffaa2cc04e..cb9a460330 100644
--- a/board/atlas/usb_pd_policy.c
+++ b/board/atlas/usb_pd_policy.c
@@ -61,7 +61,7 @@ void typec_set_source_current_limit(int port, enum tcpc_rp_value rp)
int pd_snk_is_vbus_provided(int port)
{
- return tcpci_tcpm_get_vbus_level(port);
+ return tcpci_tcpm_check_vbus_level(port, VBUS_PRESENT);
}
int pd_set_power_supply_ready(int port)
diff --git a/board/flapjack/board.c b/board/flapjack/board.c
index fc214278ac..4474442b9f 100644
--- a/board/flapjack/board.c
+++ b/board/flapjack/board.c
@@ -366,7 +366,7 @@ void board_set_charge_limit(int port, int supplier, int charge_ma,
int extpower_is_present(void)
{
- return tcpm_get_vbus_level(0);
+ return tcpm_check_vbus_level(0, VBUS_PRESENT);
}
int pd_snk_is_vbus_provided(int port)
diff --git a/board/kakadu/board.c b/board/kakadu/board.c
index 6a362b9a36..3237449495 100644
--- a/board/kakadu/board.c
+++ b/board/kakadu/board.c
@@ -226,7 +226,9 @@ int extpower_is_present(void)
if (board_vbus_source_enabled(CHARGE_PORT_USB_C))
usb_c_extpower_present = 0;
else
- usb_c_extpower_present = tcpm_get_vbus_level(CHARGE_PORT_USB_C);
+ usb_c_extpower_present = tcpm_check_vbus_level(
+ CHARGE_PORT_USB_C,
+ VBUS_PRESENT);
return usb_c_extpower_present;
}
diff --git a/board/kodama/board.c b/board/kodama/board.c
index fdb40d32b8..2fab43d3ac 100644
--- a/board/kodama/board.c
+++ b/board/kodama/board.c
@@ -216,7 +216,9 @@ int extpower_is_present(void)
if (board_vbus_source_enabled(CHARGE_PORT_USB_C))
usb_c_extpower_present = 0;
else
- usb_c_extpower_present = tcpm_get_vbus_level(CHARGE_PORT_USB_C);
+ usb_c_extpower_present = tcpm_check_vbus_level(
+ CHARGE_PORT_USB_C,
+ VBUS_PRESENT);
return usb_c_extpower_present;
}
diff --git a/board/kukui/board.c b/board/kukui/board.c
index 57ba1e82f7..68edc00d3a 100644
--- a/board/kukui/board.c
+++ b/board/kukui/board.c
@@ -247,7 +247,9 @@ int extpower_is_present(void)
if (board_vbus_source_enabled(CHARGE_PORT_USB_C))
usb_c_extpower_present = 0;
else
- usb_c_extpower_present = tcpm_get_vbus_level(CHARGE_PORT_USB_C);
+ usb_c_extpower_present = tcpm_check_vbus_level(
+ CHARGE_PORT_USB_C,
+ VBUS_PRESENT);
return usb_c_extpower_present || kukui_pogo_extpower_present();
}
diff --git a/board/oak/board.c b/board/oak/board.c
index 05f030f89e..b282daf2a3 100644
--- a/board/oak/board.c
+++ b/board/oak/board.c
@@ -511,7 +511,7 @@ void vbus_task(void *u)
vbus = !gpio_get_level(port ? GPIO_USB_C1_VBUS_WAKE_L :
GPIO_USB_C0_VBUS_WAKE_L);
#else
- vbus = tcpm_get_vbus_level(port);
+ vbus = tcpm_check_vbus_level(port, VBUS_PRESENT);
#endif
/* check if VBUS changed */
if (((bc12[port].vbus >> port) & 1) == vbus)
diff --git a/board/scarlet/board.c b/board/scarlet/board.c
index 97c6f61e10..cb70a7c163 100644
--- a/board/scarlet/board.c
+++ b/board/scarlet/board.c
@@ -218,7 +218,7 @@ int extpower_is_present(void)
if (board_vbus_source_enabled(0))
return 0;
else
- return tcpm_get_vbus_level(0);
+ return tcpm_check_vbus_level(0, VBUS_PRESENT);
}
int pd_snk_is_vbus_provided(int port)
diff --git a/common/mock/tcpc_mock.c b/common/mock/tcpc_mock.c
index 45b748f895..c67ce8a040 100644
--- a/common/mock/tcpc_mock.c
+++ b/common/mock/tcpc_mock.c
@@ -42,7 +42,7 @@ static int mock_get_cc(int port, enum tcpc_cc_voltage_status *cc1,
return EC_SUCCESS;
}
-static int mock_get_vbus_level(int port)
+static bool mock_check_vbus_level(int port, enum vbus_level level)
{
return mock_tcpc.vbus_level;
}
@@ -167,7 +167,7 @@ const struct tcpm_drv mock_tcpc_driver = {
.init = &mock_init,
.release = &mock_release,
.get_cc = &mock_get_cc,
- .get_vbus_level = &mock_get_vbus_level,
+ .check_vbus_level = &mock_check_vbus_level,
.select_rp_value = &mock_select_rp_value,
.set_cc = &mock_set_cc,
.set_polarity = &mock_set_polarity,
diff --git a/common/usb_common.c b/common/usb_common.c
index 91f0ad5a97..f3607f7aa5 100644
--- a/common/usb_common.c
+++ b/common/usb_common.c
@@ -713,10 +713,17 @@ void pd_deferred_resume(int port)
}
#endif /* CONFIG_USB_PD_TCPM_TCPCI */
-int pd_is_vbus_present(int port)
+bool pd_check_vbus_level(int port, enum vbus_level level)
{
if (IS_ENABLED(CONFIG_USB_PD_VBUS_DETECT_TCPC))
- return tcpm_get_vbus_level(port);
- else
+ return tcpm_check_vbus_level(port, level);
+ else if (level == VBUS_PRESENT)
return pd_snk_is_vbus_provided(port);
+ else
+ return !pd_snk_is_vbus_provided(port);
+}
+
+int pd_is_vbus_present(int port)
+{
+ return pd_check_vbus_level(port, VBUS_PRESENT);
}
diff --git a/driver/bc12/max14637.c b/driver/bc12/max14637.c
index ea5dfa126f..2aab525f00 100644
--- a/driver/bc12/max14637.c
+++ b/driver/bc12/max14637.c
@@ -129,7 +129,7 @@ static void detect_or_power_down_ic(const int port)
int vbus_present;
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- vbus_present = tcpm_get_vbus_level(port);
+ vbus_present = tcpm_check_vbus_level(port, VBUS_PRESENT);
#else
vbus_present = pd_snk_is_vbus_provided(port);
#endif /* !defined(CONFIG_USB_PD_VBUS_DETECT_TCPC) */
diff --git a/driver/tcpm/anx7447.c b/driver/tcpm/anx7447.c
index 0d4be2c477..aee839936d 100644
--- a/driver/tcpm/anx7447.c
+++ b/driver/tcpm/anx7447.c
@@ -751,7 +751,7 @@ const struct tcpm_drv anx7447_tcpm_drv = {
.release = &anx7447_release,
.get_cc = &tcpci_tcpm_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &tcpci_tcpm_get_vbus_level,
+ .check_vbus_level = &tcpci_tcpm_check_vbus_level,
#endif
.select_rp_value = &tcpci_tcpm_select_rp_value,
.set_cc = &anx7447_set_cc,
diff --git a/driver/tcpm/anx74xx.c b/driver/tcpm/anx74xx.c
index f8b12fe43d..c40c65e312 100644
--- a/driver/tcpm/anx74xx.c
+++ b/driver/tcpm/anx74xx.c
@@ -860,7 +860,7 @@ static int anx74xx_tcpm_set_rx_enable(int port, int enable)
}
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
-static int anx74xx_tcpm_get_vbus_level(int port)
+static bool anx74xx_tcpm_check_vbus_level(int port, enum vbus_level level)
{
int reg = 0;
@@ -1155,7 +1155,7 @@ const struct tcpm_drv anx74xx_tcpm_drv = {
.release = &anx74xx_tcpm_release,
.get_cc = &anx74xx_tcpm_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &anx74xx_tcpm_get_vbus_level,
+ .check_vbus_level = &anx74xx_tcpm_check_vbus_level,
#endif
.select_rp_value = &anx74xx_tcpm_select_rp_value,
.set_cc = &anx74xx_tcpm_set_cc,
diff --git a/driver/tcpm/anx7688.c b/driver/tcpm/anx7688.c
index 8b5a70cf73..a4baad42c3 100644
--- a/driver/tcpm/anx7688.c
+++ b/driver/tcpm/anx7688.c
@@ -171,7 +171,7 @@ static int anx7688_mux_set(const struct usb_mux *me, mux_state_t mux_state)
}
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
-static int anx7688_tcpm_get_vbus_level(int port)
+static bool anx7688_tcpm_check_vbus_level(int port, enum vbus_level level)
{
int reg = 0;
@@ -191,7 +191,7 @@ const struct tcpm_drv anx7688_tcpm_drv = {
.release = &anx7688_release,
.get_cc = &tcpci_tcpm_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &anx7688_tcpm_get_vbus_level,
+ .check_vbus_level = &anx7688_tcpm_check_vbus_level,
#endif
.select_rp_value = &tcpci_tcpm_select_rp_value,
.set_cc = &tcpci_tcpm_set_cc,
diff --git a/driver/tcpm/fusb302.c b/driver/tcpm/fusb302.c
index 61a5623fb9..67121cba28 100644
--- a/driver/tcpm/fusb302.c
+++ b/driver/tcpm/fusb302.c
@@ -904,7 +904,7 @@ static int fusb302_tcpm_transmit(int port, enum tcpm_transmit_type type,
}
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
-static int fusb302_tcpm_get_vbus_level(int port)
+static bool fusb302_tcpm_check_vbus_level(int port, enum vbus_level level)
{
int reg;
@@ -950,9 +950,10 @@ void fusb302_tcpc_alert(int port)
/* VBUS crossed threshold */
#ifdef CONFIG_USB_CHARGER
usb_charger_vbus_change(port,
- fusb302_tcpm_get_vbus_level(port));
+ fusb302_tcpm_check_vbus_level(port,
+ VBUS_PRESENT));
#else
- if (!fusb302_tcpm_get_vbus_level(port))
+ if (!fusb302_tcpm_check_vbus_level(port, VBUS_PRESENT))
pd_vbus_low(port);
#endif
task_wake(PD_PORT_TO_TASK_ID(port));
@@ -1147,7 +1148,7 @@ const struct tcpm_drv fusb302_tcpm_drv = {
.release = &fusb302_tcpm_release,
.get_cc = &fusb302_tcpm_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &fusb302_tcpm_get_vbus_level,
+ .check_vbus_level = &fusb302_tcpm_check_vbus_level,
#endif
.select_rp_value = &fusb302_tcpm_select_rp_value,
.set_cc = &fusb302_tcpm_set_cc,
diff --git a/driver/tcpm/mt6370.c b/driver/tcpm/mt6370.c
index 84ebd0a91e..af11bcb11d 100644
--- a/driver/tcpm/mt6370.c
+++ b/driver/tcpm/mt6370.c
@@ -190,7 +190,7 @@ const struct tcpm_drv mt6370_tcpm_drv = {
.release = &tcpci_tcpm_release,
.get_cc = &mt6370_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &tcpci_tcpm_get_vbus_level,
+ .check_vbus_level = &tcpci_tcpm_check_vbus_level,
#endif
.select_rp_value = &tcpci_tcpm_select_rp_value,
.set_cc = &mt6370_set_cc,
diff --git a/driver/tcpm/nct38xx.c b/driver/tcpm/nct38xx.c
index 4f9aa6efd7..bf803bf8bb 100644
--- a/driver/tcpm/nct38xx.c
+++ b/driver/tcpm/nct38xx.c
@@ -185,7 +185,7 @@ const struct tcpm_drv nct38xx_tcpm_drv = {
.release = &tcpci_tcpm_release,
.get_cc = &tcpci_tcpm_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &tcpci_tcpm_get_vbus_level,
+ .check_vbus_level = &tcpci_tcpm_check_vbus_level,
#endif
.select_rp_value = &tcpci_tcpm_select_rp_value,
.set_cc = &tcpci_tcpm_set_cc,
diff --git a/driver/tcpm/ps8xxx.c b/driver/tcpm/ps8xxx.c
index 37371b55ea..78996ba2ca 100644
--- a/driver/tcpm/ps8xxx.c
+++ b/driver/tcpm/ps8xxx.c
@@ -353,7 +353,7 @@ const struct tcpm_drv ps8xxx_tcpm_drv = {
.get_cc = &tcpci_tcpm_get_cc,
#endif
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &tcpci_tcpm_get_vbus_level,
+ .check_vbus_level = &tcpci_tcpm_check_vbus_level,
#endif
.select_rp_value = &tcpci_tcpm_select_rp_value,
.set_cc = &tcpci_tcpm_set_cc,
diff --git a/driver/tcpm/raa489000.c b/driver/tcpm/raa489000.c
index 21265c17d2..19e94ee7dc 100644
--- a/driver/tcpm/raa489000.c
+++ b/driver/tcpm/raa489000.c
@@ -177,7 +177,7 @@ const struct tcpm_drv raa489000_tcpm_drv = {
.release = &tcpci_tcpm_release,
.get_cc = &tcpci_tcpm_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &tcpci_tcpm_get_vbus_level,
+ .check_vbus_level = &tcpci_tcpm_check_vbus_level,
#endif
.select_rp_value = &tcpci_tcpm_select_rp_value,
.set_cc = &raa489000_tcpm_set_cc,
diff --git a/driver/tcpm/tcpci.c b/driver/tcpm/tcpci.c
index 97840516a7..742f9c0d37 100644
--- a/driver/tcpm/tcpci.c
+++ b/driver/tcpm/tcpci.c
@@ -634,7 +634,7 @@ void tcpci_tcpc_fast_role_swap_enable(int port, int enable)
#endif
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
-int tcpci_tcpm_get_vbus_level(int port)
+bool tcpci_tcpm_check_vbus_level(int port, enum vbus_level level)
{
return tcpc_vbus[port];
}
@@ -1051,18 +1051,19 @@ void tcpci_tcpc_alert(int port)
}
}
if (alert & TCPC_REG_ALERT_POWER_STATUS) {
- int reg = 0;
+ int pwr_status = 0;
+
/* Read Power Status register */
- tcpci_tcpm_get_power_status(port, &reg);
+ tcpci_tcpm_get_power_status(port, &pwr_status);
/* Update VBUS status */
- tcpc_vbus[port] = reg &
+ tcpc_vbus[port] = pwr_status &
TCPC_REG_POWER_STATUS_VBUS_PRES ? 1 : 0;
#if defined(CONFIG_USB_PD_VBUS_DETECT_TCPC) && defined(CONFIG_USB_CHARGER)
/* Update charge manager with new VBUS state */
usb_charger_vbus_change(port, tcpc_vbus[port]);
pd_event |= TASK_EVENT_WAKE;
#endif /* CONFIG_USB_PD_VBUS_DETECT_TCPC && CONFIG_USB_CHARGER */
- if (reg & TCPC_REG_POWER_STATUS_VBUS_DET)
+ if (pwr_status & TCPC_REG_POWER_STATUS_VBUS_DET)
board_vbus_present_change();
}
@@ -1451,7 +1452,7 @@ const struct tcpm_drv tcpci_tcpm_drv = {
.release = &tcpci_tcpm_release,
.get_cc = &tcpci_tcpm_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &tcpci_tcpm_get_vbus_level,
+ .check_vbus_level = &tcpci_tcpm_check_vbus_level,
#endif
.select_rp_value = &tcpci_tcpm_select_rp_value,
.set_cc = &tcpci_tcpm_set_cc,
diff --git a/driver/tcpm/tcpci.h b/driver/tcpm/tcpci.h
index c3ee70e982..6a05b1aaca 100644
--- a/driver/tcpm/tcpci.h
+++ b/driver/tcpm/tcpci.h
@@ -208,7 +208,7 @@ void tcpci_tcpc_alert(int port);
int tcpci_tcpm_init(int port);
int tcpci_tcpm_get_cc(int port, enum tcpc_cc_voltage_status *cc1,
enum tcpc_cc_voltage_status *cc2);
-int tcpci_tcpm_get_vbus_level(int port);
+bool tcpci_tcpm_check_vbus_level(int port, enum vbus_level level);
int tcpci_tcpm_select_rp_value(int port, int rp);
int tcpci_tcpm_set_cc(int port, int pull);
int tcpci_tcpm_set_polarity(int port, enum tcpc_cc_polarity polarity);
diff --git a/driver/tcpm/tcpm.h b/driver/tcpm/tcpm.h
index e360811155..c62235eec9 100644
--- a/driver/tcpm/tcpm.h
+++ b/driver/tcpm/tcpm.h
@@ -163,9 +163,9 @@ static inline int tcpm_get_cc(int port, enum tcpc_cc_voltage_status *cc1,
return tcpc_config[port].drv->get_cc(port, cc1, cc2);
}
-static inline int tcpm_get_vbus_level(int port)
+static inline bool tcpm_check_vbus_level(int port, enum vbus_level level)
{
- return tcpc_config[port].drv->get_vbus_level(port);
+ return tcpc_config[port].drv->check_vbus_level(port, level);
}
static inline int tcpm_select_rp_value(int port, int rp)
@@ -328,13 +328,14 @@ int tcpm_get_cc(int port, enum tcpc_cc_voltage_status *cc1,
enum tcpc_cc_voltage_status *cc2);
/**
- * Read VBUS
+ * Check VBUS level
*
* @param port Type-C port number
+ * @param level safe level voltage to check against
*
- * @return 0 => VBUS not detected, 1 => VBUS detected
+ * @return False => VBUS not at level, True => VBUS at level
*/
-int tcpm_get_vbus_level(int port);
+bool tcpm_check_vbus_level(int port, enum vbus_level level);
/**
* Set the value of the CC pull-up used when we are a source.
diff --git a/driver/tcpm/tusb422.c b/driver/tcpm/tusb422.c
index db8a9f7c0b..6c26646384 100644
--- a/driver/tcpm/tusb422.c
+++ b/driver/tcpm/tusb422.c
@@ -55,7 +55,7 @@ const struct tcpm_drv tusb422_tcpm_drv = {
.release = &tcpci_tcpm_release,
.get_cc = &tcpci_tcpm_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &tcpci_tcpm_get_vbus_level,
+ .check_vbus_level = &tcpci_tcpm_check_vbus_level,
#endif
.select_rp_value = &tcpci_tcpm_select_rp_value,
.set_cc = &tcpci_tcpm_set_cc,
diff --git a/fuzz/usb_pd_fuzz.c b/fuzz/usb_pd_fuzz.c
index 7b7b9bfc5a..22c856ccff 100644
--- a/fuzz/usb_pd_fuzz.c
+++ b/fuzz/usb_pd_fuzz.c
@@ -126,7 +126,7 @@ static const struct tcpm_drv mock_tcpm_drv = {
.release = &mock_tcpm_release,
.get_cc = &mock_tcpm_get_cc,
#ifdef CONFIG_USB_PD_VBUS_DETECT_TCPC
- .get_vbus_level = &mock_tcpm_get_vbus_level,
+ .check_vbus_level = &mock_tcpm_check_vbus_level,
#endif
.select_rp_value = &mock_tcpm_select_rp_value,
.set_cc = &mock_tcpm_set_cc,
diff --git a/include/usb_pd.h b/include/usb_pd.h
index 436b217a9a..229811b4f8 100644
--- a/include/usb_pd.h
+++ b/include/usb_pd.h
@@ -2594,7 +2594,15 @@ bool pd_get_partner_usb_comm_capable(int port);
bool pd_is_disconnected(int port);
/**
- * Return true if vbus is present on the specified port.
+ * Return true if vbus is at level on the specified port.
+ *
+ * @param port USB-C port number
+ * @param level vbus_level to check against
+ */
+bool pd_check_vbus_level(int port, enum vbus_level level);
+
+/**
+ * Return true if vbus is at Safe5V on the specified port.
*
* @param port USB-C port number
*/
diff --git a/include/usb_pd_tcpm.h b/include/usb_pd_tcpm.h
index a98d8e3000..5b160b46b5 100644
--- a/include/usb_pd_tcpm.h
+++ b/include/usb_pd_tcpm.h
@@ -8,6 +8,7 @@
#ifndef __CROS_EC_USB_PD_TCPM_H
#define __CROS_EC_USB_PD_TCPM_H
+#include <stdbool.h>
#include "ec_commands.h"
#include "i2c.h"
@@ -106,6 +107,12 @@ enum tcpc_transmit_complete {
TCPC_TX_COMPLETE_FAILED = 2,
};
+/* USB-C PD Vbus levels */
+enum vbus_level {
+ VBUS_SAFE0V,
+ VBUS_PRESENT,
+};
+
/**
* Returns whether the sink has detected a Rp resistor on the other side.
*/
@@ -202,13 +209,14 @@ struct tcpm_drv {
enum tcpc_cc_voltage_status *cc2);
/**
- * Read VBUS
+ * Check VBUS level
*
* @param port Type-C port number
+ * @param level safe level voltage to check against
*
- * @return 0 => VBUS not detected, 1 => VBUS detected
+ * @return False => VBUS not at level, True => VBUS at level
*/
- int (*get_vbus_level)(int port);
+ bool (*check_vbus_level)(int port, enum vbus_level level);
/**
* Set the value of the CC pull-up used when we are a source.