summaryrefslogtreecommitdiff
path: root/board/fruitpie/usb_pd_config.h
diff options
context:
space:
mode:
Diffstat (limited to 'board/fruitpie/usb_pd_config.h')
-rw-r--r--board/fruitpie/usb_pd_config.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/board/fruitpie/usb_pd_config.h b/board/fruitpie/usb_pd_config.h
index acf0f6f6ca..e2f184f9d9 100644
--- a/board/fruitpie/usb_pd_config.h
+++ b/board/fruitpie/usb_pd_config.h
@@ -136,12 +136,27 @@ static inline void pd_set_host_mode(int port, int enable)
* Initialize various GPIOs and interfaces to safe state at start of pd_task.
*
* These include:
+ * VBUS, charge path based on power role.
+ * Physical layer CC transmit.
* VCONNs disabled.
*
- * @param port USB-C port number
+ * @param port USB-C port number
+ * @param power_role Power role of device
*/
-static inline void pd_config_init(int port)
+static inline void pd_config_init(int port, uint8_t power_role)
{
+ /*
+ * Set CC pull resistors, and charge_en and vbus_en GPIOs to match
+ * the initial role.
+ */
+ pd_set_host_mode(port, power_role);
+
+ /* Initialize TX pins and put them in Hi-Z */
+ pd_tx_init();
+
+ /* Reset mux ... for NONE polarity doesn't matter */
+ board_set_usb_mux(port, TYPEC_MUX_NONE, 0);
+
gpio_set_level(GPIO_VCONN1_EN, 0);
gpio_set_level(GPIO_VCONN2_EN, 0);
}