summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorAbe Levkoy <alevkoy@chromium.org>2020-07-27 14:55:13 -0600
committerCommit Bot <commit-bot@chromium.org>2020-07-30 20:47:59 +0000
commit59afbc0bbbf7fbcaa7f85bae801ee2eca6377fcc (patch)
tree66f178decd7e348dbd202bcdd0f689cae4a06f75 /common
parentfc3a667457b5dccc212c0d287e9ae2122273de1d (diff)
downloadchrome-ec-59afbc0bbbf7fbcaa7f85bae801ee2eca6377fcc.tar.gz
TCPMv2 DRP PE: Support IS_ENABLED with STATIC_IF
Existing code supports IS_ENABLED by declaring unused identifiers as extern, allowing their usages to compile and then disappear during linking. checkpatch.pl produces a warning for this idiom. Work around this by using STATIC_IF instead of bare extern to produce external linkage. BUG=none TEST=make buildall BRANCH=none Signed-off-by: Abe Levkoy <alevkoy@chromium.org> Change-Id: Ia93a8ce988f534ff198c29f6f9eace6dc718b49b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2321337 Reviewed-by: Jett Rink <jettrink@chromium.org> Commit-Queue: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/usbc/usb_pe_drp_sm.c50
1 files changed, 32 insertions, 18 deletions
diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c
index 1781a1119e..6775396db0 100644
--- a/common/usbc/usb_pe_drp_sm.c
+++ b/common/usbc/usb_pe_drp_sm.c
@@ -393,23 +393,26 @@ static const char * const pe_state_names[] = {
};
#else
/*
- * Reference so IS_ENABLED section below that references the names
- * will compile and the optimizer will remove it.
+ * Here and below, ensure that invalid states don't link properly. This lets us
+ * use guard code with IS_ENABLED instead of ifdefs and still save flash space.
+ * Use STATIC_IF instead of bare extern to avoid a checkpatch.pl error.
*/
-extern const char **pe_state_names;
+STATIC_IF(USB_PD_DEBUG_LABELS) const char **pe_state_names;
#endif
-/*
- * Ensure that invalid states don't link properly. This lets us use guard code
- * with IS_ENABLED instead of ifdefs and still save flash space.
- */
#ifndef CONFIG_USBC_VCONN
-enum usb_pe_state PE_VCS_EVALUATE_SWAP_NOT_SUPPORTED;
-enum usb_pe_state PE_VCS_SEND_SWAP_NOT_SUPPORTED;
-enum usb_pe_state PE_VCS_WAIT_FOR_VCONN_SWAP_NOT_SUPPORTED;
-enum usb_pe_state PE_VCS_TURN_ON_VCONN_SWAP_NOT_SUPPORTED;
-enum usb_pe_state PE_VCS_TURN_OFF_VCONN_SWAP_NOT_SUPPORTED;
-enum usb_pe_state PE_VCS_SEND_PS_RDY_SWAP_NOT_SUPPORTED;
+STATIC_IF(CONFIG_USBC_VCONN)
+ enum usb_pe_state PE_VCS_EVALUATE_SWAP_NOT_SUPPORTED;
+STATIC_IF(CONFIG_USBC_VCONN)
+ enum usb_pe_state PE_VCS_SEND_SWAP_NOT_SUPPORTED;
+STATIC_IF(CONFIG_USBC_VCONN)
+ enum usb_pe_state PE_VCS_WAIT_FOR_VCONN_SWAP_NOT_SUPPORTED;
+STATIC_IF(CONFIG_USBC_VCONN)
+ enum usb_pe_state PE_VCS_TURN_ON_VCONN_SWAP_NOT_SUPPORTED;
+STATIC_IF(CONFIG_USBC_VCONN)
+ enum usb_pe_state PE_VCS_TURN_OFF_VCONN_SWAP_NOT_SUPPORTED;
+STATIC_IF(CONFIG_USBC_VCONN)
+ enum usb_pe_state PE_VCS_SEND_PS_RDY_SWAP_NOT_SUPPORTED;
#define PE_VCS_EVALUATE_SWAP PE_VCS_EVALUATE_SWAP_NOT_SUPPORTED
#define PE_VCS_SEND_SWAP PE_VCS_SEND_SWAP_NOT_SUPPORTED
#define PE_VCS_WAIT_FOR_VCONN_SWAP PE_VCS_WAIT_FOR_VCONN_SWAP_NOT_SUPPORTED
@@ -419,8 +422,10 @@ enum usb_pe_state PE_VCS_SEND_PS_RDY_SWAP_NOT_SUPPORTED;
#endif /* CONFIG_USBC_VCONN */
#ifndef CONFIG_USB_PD_REV30
-extern enum usb_pe_state PE_FRS_SNK_SRC_START_AMS_NOT_SUPPORTED;
-extern enum usb_pe_state PE_PRS_FRS_SHARE_NOT_SUPPORTED;
+STATIC_IF(CONFIG_USB_PD_REV30)
+ enum usb_pe_state PE_FRS_SNK_SRC_START_AMS_NOT_SUPPORTED;
+STATIC_IF(CONFIG_USB_PD_REV30)
+ enum usb_pe_state PE_PRS_FRS_SHARE_NOT_SUPPORTED;
STATIC_IF(CONFIG_USB_PD_REV30)
enum usb_pe_state PE_SRC_CHUNK_RECEIVED_NOT_SUPPORTED;
STATIC_IF(CONFIG_USB_PD_REV30)
@@ -433,7 +438,6 @@ void pe_set_frs_enable(int port, int enable);
#endif /* CONFIG_USB_PD_REV30 */
#ifndef CONFIG_USB_PD_EXTENDED_MESSAGES
-/* Use STATIC_IF instead of bare extern to avoid checkpatch.pl error. */
STATIC_IF(CONFIG_USB_PD_EXTENDED_MESSAGES)
enum usb_pe_state PE_GIVE_BATTERY_CAP_NOT_SUPPORTED;
STATIC_IF(CONFIG_USB_PD_EXTENDED_MESSAGES)
@@ -2066,7 +2070,12 @@ static void pe_src_ready_run(int port)
set_state_pe(port, PE_DRS_EVALUATE_SWAP);
return;
case PD_CTRL_VCONN_SWAP:
- set_state_pe(port, PE_VCS_EVALUATE_SWAP);
+ if (IS_ENABLED(CONFIG_USBC_VCONN))
+ set_state_pe(port,
+ PE_VCS_EVALUATE_SWAP);
+ else
+ set_state_pe(port,
+ PE_SEND_NOT_SUPPORTED);
return;
/*
* USB PD 3.0 6.8.1:
@@ -2810,7 +2819,12 @@ static void pe_snk_ready_run(int port)
PE_DRS_EVALUATE_SWAP);
return;
case PD_CTRL_VCONN_SWAP:
- set_state_pe(port, PE_VCS_EVALUATE_SWAP);
+ if (IS_ENABLED(CONFIG_USBC_VCONN))
+ set_state_pe(port,
+ PE_VCS_EVALUATE_SWAP);
+ else
+ set_state_pe(port,
+ PE_SEND_NOT_SUPPORTED);
return;
case PD_CTRL_NOT_SUPPORTED:
/* Do nothing */