diff options
author | Scott <scollyer@chromium.org> | 2017-02-23 14:21:39 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-03-02 11:29:06 -0800 |
commit | a990e4e832010c6967eb0243de8ba7ce9c3a7825 (patch) | |
tree | 5aa714e85216cf8e684c001320b120d1b9a9bc0d | |
parent | ef6f6c5edfe8817d31ee32e5acb1e687d60f23fd (diff) | |
download | chrome-ec-a990e4e832010c6967eb0243de8ba7ce9c3a7825.tar.gz |
pd: Add tcpc_select_rp_value to stub tcpm driver
The function tcpm_select_rp_value() is used to set a given Rp
value. This function was not supported for boards that use the config
option CONFIG_USB_PD_TCPC. This CL adds a weak board_ function which
can be overloaded for boards that have the requirement to set Rp to
different values.
BUG=chrome-os-partner:61878
BRANCH=servo
TEST=run 'make buildall'. On plankton added a console command to trigger
a call to tcpm_select_rp_value(0, 0), verified that it returned
2 (EC_ERROR_NOT_IMPLEMENTED). Then added board_select_rp_value() to
plankton's board.c and verified that it returned 0.
Change-Id: I1cd6f0ed51717736d30575c58025bd9a1c5d6fc4
Signed-off-by: Scott <scollyer@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/446685
Commit-Ready: Scott Collyer <scollyer@chromium.org>
Tested-by: Scott Collyer <scollyer@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
-rw-r--r-- | common/usb_pd_tcpc.c | 10 | ||||
-rw-r--r-- | driver/tcpm/stub.c | 3 | ||||
-rw-r--r-- | test/usb_pd.c | 5 |
3 files changed, 17 insertions, 1 deletions
diff --git a/common/usb_pd_tcpc.c b/common/usb_pd_tcpc.c index db1722f2e6..491b471e22 100644 --- a/common/usb_pd_tcpc.c +++ b/common/usb_pd_tcpc.c @@ -970,6 +970,16 @@ int tcpc_get_cc(int port, int *cc1, int *cc2) return EC_SUCCESS; } +int board_select_rp_value(int port, int rp) __attribute__((weak)); + +int tcpc_select_rp_value(int port, int rp) +{ + if (board_select_rp_value) + return board_select_rp_value(port, rp); + else + return EC_ERROR_UNIMPLEMENTED; +} + int tcpc_set_polarity(int port, int polarity) { pd[port].polarity = polarity; diff --git a/driver/tcpm/stub.c b/driver/tcpm/stub.c index ae3f00f420..bb61c83024 100644 --- a/driver/tcpm/stub.c +++ b/driver/tcpm/stub.c @@ -15,6 +15,7 @@ extern int tcpc_alert_status(int port, int *alert); extern int tcpc_alert_status_clear(int port, uint16_t mask); extern int tcpc_alert_mask_set(int port, uint16_t mask); extern int tcpc_get_cc(int port, int *cc1, int *cc2); +extern int tcpc_select_rp_value(int port, int rp); extern int tcpc_set_cc(int port, int pull); extern int tcpc_set_polarity(int port, int polarity); extern int tcpc_set_power_status_mask(int port, uint8_t mask); @@ -68,7 +69,7 @@ int tcpm_get_cc(int port, int *cc1, int *cc2) int tcpm_select_rp_value(int port, int rp) { - return -EC_ERROR_UNIMPLEMENTED; + return tcpc_select_rp_value(port, rp); } int tcpm_set_cc(int port, int pull) diff --git a/test/usb_pd.c b/test/usb_pd.c index d87a4c3960..80c5d10885 100644 --- a/test/usb_pd.c +++ b/test/usb_pd.c @@ -72,6 +72,11 @@ int pd_vdm(int port, int cnt, uint32_t *payload, uint32_t **rpayload) return 0; } +int board_select_rp_value(int port, int rp) +{ + return 0; +} + /* Tests */ void inc_tx_id(int port) |