From c598e1ac06c4ceddf28399081ed669eaaa533ae9 Mon Sep 17 00:00:00 2001 From: Vic Yang Date: Mon, 25 Aug 2014 14:34:31 -0700 Subject: [PATCH] pd: Move dual role toggle hooks to common code We want these hooks for all dual role boards. Let's move them to common so that we don't have to duplicate them for every board. BUG=None TEST=On Ryu, plug in C-to-A cable. Check we are in source state. BRANCH=None Change-Id: I9c7a798fda2cdec94ee533d54172c6cc4fed029e Signed-off-by: Vic Yang Reviewed-on: https://chromium-review.googlesource.com/214070 Reviewed-by: Alec Berg --- board/samus_pd/usb_pd_policy.c | 23 ----------------------- common/usb_pd_protocol.c | 25 +++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/board/samus_pd/usb_pd_policy.c b/board/samus_pd/usb_pd_policy.c index 90b7fc6121..867a020dd6 100644 --- a/board/samus_pd/usb_pd_policy.c +++ b/board/samus_pd/usb_pd_policy.c @@ -6,7 +6,6 @@ #include "common.h" #include "console.h" #include "gpio.h" -#include "hooks.h" #include "host_command.h" #include "registers.h" #include "task.h" @@ -150,28 +149,6 @@ int pd_board_checks(void) return EC_SUCCESS; } -static void dual_role_on(void) -{ - pd_set_dual_role(PD_DRP_TOGGLE_ON); - CPRINTS("PCH -> S0, enable dual-role toggling"); -} -DECLARE_HOOK(HOOK_CHIPSET_RESUME, dual_role_on, HOOK_PRIO_DEFAULT); - -static void dual_role_off(void) -{ - pd_set_dual_role(PD_DRP_TOGGLE_OFF); - CPRINTS("PCH -> S3, disable dual-role toggling"); -} -DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, dual_role_off, HOOK_PRIO_DEFAULT); -DECLARE_HOOK(HOOK_CHIPSET_STARTUP, dual_role_off, HOOK_PRIO_DEFAULT); - -static void dual_role_force_sink(void) -{ - pd_set_dual_role(PD_DRP_FORCE_SINK); - CPRINTS("PCH -> S5, force dual-role port to sink"); -} -DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, dual_role_force_sink, HOOK_PRIO_DEFAULT); - /* ----------------- Vendor Defined Messages ------------------ */ int pd_custom_vdm(int port, int cnt, uint32_t *payload, uint32_t **rpayload) { diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c index 2825cf9eb2..9e0115743c 100644 --- a/common/usb_pd_protocol.c +++ b/common/usb_pd_protocol.c @@ -21,6 +21,7 @@ #ifdef CONFIG_COMMON_RUNTIME #define CPRINTF(format, args...) cprintf(CC_USBPD, format, ## args) +#define CPRINTS(format, args...) cprints(CC_USBPD, format, ## args) /* * Debug log level - higher number == more log @@ -1401,6 +1402,30 @@ void pd_rx_event(int port) task_set_event(PORT_TO_TASK_ID(port), PD_EVENT_RX, 0); } +#ifdef CONFIG_USB_PD_DUAL_ROLE +static void dual_role_on(void) +{ + pd_set_dual_role(PD_DRP_TOGGLE_ON); + CPRINTS("chipset -> S0, enable dual-role toggling"); +} +DECLARE_HOOK(HOOK_CHIPSET_RESUME, dual_role_on, HOOK_PRIO_DEFAULT); + +static void dual_role_off(void) +{ + pd_set_dual_role(PD_DRP_TOGGLE_OFF); + CPRINTS("chipset -> S3, disable dual-role toggling"); +} +DECLARE_HOOK(HOOK_CHIPSET_SUSPEND, dual_role_off, HOOK_PRIO_DEFAULT); +DECLARE_HOOK(HOOK_CHIPSET_STARTUP, dual_role_off, HOOK_PRIO_DEFAULT); + +static void dual_role_force_sink(void) +{ + pd_set_dual_role(PD_DRP_FORCE_SINK); + CPRINTS("chipset -> S5, force dual-role port to sink"); +} +DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, dual_role_force_sink, HOOK_PRIO_DEFAULT); +#endif /* CONFIG_USB_PD_DUAL_ROLE */ + #ifdef CONFIG_COMMON_RUNTIME void pd_set_suspend(int port, int enable) {