diff options
author | Denis Brockus <dbrockus@chromium.org> | 2019-08-05 10:48:24 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-08-05 21:51:57 +0000 |
commit | 6b6fd843dbc3e04697992a1717950294cd53e64b (patch) | |
tree | 9459b6b33ce5d2a93f090e2af665d67f742454c3 /baseboard | |
parent | ba753b782a65b2532a3d4682df76f0fbdbe7e2f5 (diff) | |
download | chrome-ec-6b6fd843dbc3e04697992a1717950294cd53e64b.tar.gz |
Trembyle: update usb_pd_policy
BUG=b:138599669
BRANCH=none
TEST=make buildall -j
Change-Id: I125a40e316f4d6431412851bd6bd3c8c57118365
Signed-off-by: Denis Brockus <dbrockus@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1737132
Commit-Queue: Edward Hill <ecgh@chromium.org>
Reviewed-by: Edward Hill <ecgh@chromium.org>
Diffstat (limited to 'baseboard')
-rw-r--r-- | baseboard/zork/baseboard.h | 1 | ||||
-rw-r--r-- | baseboard/zork/usb_pd_policy.c | 57 |
2 files changed, 52 insertions, 6 deletions
diff --git a/baseboard/zork/baseboard.h b/baseboard/zork/baseboard.h index 706c492468..635899f605 100644 --- a/baseboard/zork/baseboard.h +++ b/baseboard/zork/baseboard.h @@ -120,6 +120,7 @@ #define CONFIG_USB_PD_DUAL_ROLE #define CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE #define CONFIG_USB_PD_LOGGING +#define CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT TYPEC_RP_3A0 #define CONFIG_USB_PD_PORT_COUNT 2 #define CONFIG_USB_PD_TCPC_LOW_POWER #define CONFIG_USB_PD_TCPM_MUX diff --git a/baseboard/zork/usb_pd_policy.c b/baseboard/zork/usb_pd_policy.c index a2ac33700c..2bb3431400 100644 --- a/baseboard/zork/usb_pd_policy.c +++ b/baseboard/zork/usb_pd_policy.c @@ -27,6 +27,10 @@ const uint32_t pd_src_pdo[] = { PDO_FIXED(5000, 1500, PDO_FIXED_FLAGS), }; const int pd_src_pdo_cnt = ARRAY_SIZE(pd_src_pdo); +const uint32_t pd_src_pdo_max[] = { + PDO_FIXED(5000, 3000, PDO_FIXED_FLAGS), +}; +const int pd_src_pdo_max_cnt = ARRAY_SIZE(pd_src_pdo_max); const uint32_t pd_snk_pdo[] = { PDO_FIXED(5000, 500, PDO_FIXED_FLAGS), @@ -111,12 +115,50 @@ int pd_is_valid_input_voltage(int mv) void pd_power_supply_reset(int port) { - /* TODO */ + int prev_en; + + prev_en = ppc_is_sourcing_vbus(port); + + /* Disable VBUS. */ + ppc_vbus_source_enable(port, 0); + + /* Enable discharge if we were previously sourcing 5V */ + if (prev_en) + pd_set_vbus_discharge(port, 1); + +#ifdef CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT + /* Give back the current quota we are no longer using */ + charge_manager_source_port(port, 0); +#endif /* defined(CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT) */ + + /* Notify host of power info change. */ + pd_send_host_event(PD_EVENT_POWER_CHANGE); } int pd_set_power_supply_ready(int port) { - /* TODO */ + int rv; + + /* Disable charging. */ + rv = ppc_vbus_sink_enable(port, 0); + if (rv) + return rv; + + pd_set_vbus_discharge(port, 0); + + /* Provide Vbus. */ + rv = ppc_vbus_source_enable(port, 1); + if (rv) + return rv; + +#ifdef CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT + /* Ensure we advertise the proper available current quota */ + charge_manager_source_port(port, 1); +#endif /* defined(CONFIG_USB_PD_MAX_SINGLE_SOURCE_CURRENT) */ + + /* Notify host of power info change. */ + pd_send_host_event(PD_EVENT_POWER_CHANGE); + return EC_SUCCESS; } @@ -127,14 +169,17 @@ void pd_transition_voltage(int idx) int pd_snk_is_vbus_provided(int port) { - /* TODO */ - return 0; + return ppc_is_vbus_present(port); +} + +void typec_set_source_current_limit(int port, int rp) +{ + ppc_set_vbus_source_current_limit(port, rp); } int board_vbus_source_enabled(int port) { - /* TODO */ - return 0; + return ppc_is_sourcing_vbus(port); } /* ----------------- Vendor Defined Messages ------------------ */ |