summaryrefslogtreecommitdiff
path: root/board/samus_pd/usb_pd_config.h
diff options
context:
space:
mode:
authorTodd Broch <tbroch@chromium.org>2015-02-12 11:22:34 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-02-25 03:33:12 +0000
commite20d019fc4494d2340b227ed0c42c29ca39c85d3 (patch)
tree0116ec759d2c1365bfcdb2b26856b883a9c25981 /board/samus_pd/usb_pd_config.h
parentc3cd10937e321f04c4b2dfc4786ec146e785e5cb (diff)
downloadchrome-ec-e20d019fc4494d2340b227ed0c42c29ca39c85d3.tar.gz
pd: Massage initialization at task start.
Refactoring effort to unify the set of PD intialization tasks that need to occur. Those areas include: 1. host mode as it relates to power & pull-ups/downs 2. PD tx init 3. PD mux settings Signed-off-by: Todd Broch <tbroch@chromium.org> BRANCH=samus BUG=chrome-os-partner:36481 TEST=manual, 1. compiles and functions on samus_pd 2. If sysjump w/ dongle connected than alternate mode re-entered properly including muxing and HPD Change-Id: I47f32acaeccbd7745e1e01a8b085b1804c4c5000 Reviewed-on: https://chromium-review.googlesource.com/249273 Reviewed-by: Alec Berg <alecaberg@chromium.org> Tested-by: Alec Berg <alecaberg@chromium.org> Commit-Queue: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'board/samus_pd/usb_pd_config.h')
-rw-r--r--board/samus_pd/usb_pd_config.h21
1 files changed, 19 insertions, 2 deletions
diff --git a/board/samus_pd/usb_pd_config.h b/board/samus_pd/usb_pd_config.h
index 3fede784e2..9702714a56 100644
--- a/board/samus_pd/usb_pd_config.h
+++ b/board/samus_pd/usb_pd_config.h
@@ -228,18 +228,35 @@ 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);
+
if (port == 0) {
gpio_set_level(GPIO_USB_C0_CC1_VCONN1_EN_L, 1);
gpio_set_level(GPIO_USB_C0_CC2_VCONN1_EN_L, 1);
+ gpio_set_level(GPIO_USB_C0_DP_HPD, 0);
} else {
gpio_set_level(GPIO_USB_C1_CC1_VCONN1_EN_L, 1);
gpio_set_level(GPIO_USB_C1_CC2_VCONN1_EN_L, 1);
+ gpio_set_level(GPIO_USB_C1_DP_HPD, 0);
}
}