summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVijay Hiremath <vijay.p.hiremath@intel.com>2020-02-11 12:48:46 -0800
committerCommit Bot <commit-bot@chromium.org>2020-02-12 20:05:34 +0000
commit0c2d07061c82d718288dbc287ca56b17da2206f9 (patch)
tree51529bc2c06549f5c82037809c530fc1aac23d9d
parentb7f0b4cd0cd42319d204ac653224f3661a463237 (diff)
downloadchrome-ec-0c2d07061c82d718288dbc287ca56b17da2206f9.tar.gz
TCPMv1/v2: Move pd_process_source_cap() to common file
BUG=b:148528713 BRANCH=none TEST=make buildall -j Change-Id: I6bd6b5875a322ca4ba6d77a4cfc96a72630e5f5c Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2051220 Reviewed-by: Keith Short <keithshort@chromium.org>
-rw-r--r--common/usb_pd_dual_role.c20
-rw-r--r--common/usb_pd_policy.c29
-rw-r--r--common/usbc/usb_pe_drp_sm.c24
-rw-r--r--include/usb_pd.h10
-rw-r--r--test/fake_usbc.c14
5 files changed, 61 insertions, 36 deletions
diff --git a/common/usb_pd_dual_role.c b/common/usb_pd_dual_role.c
index e4702fbeda..b2b6c25aae 100644
--- a/common/usb_pd_dual_role.c
+++ b/common/usb_pd_dual_role.c
@@ -5,6 +5,7 @@
* Dual Role (Source & Sink) USB-PD module.
*/
+#include "charge_manager.h"
#include "charge_state.h"
#include "usb_common.h"
#include "usb_pd.h"
@@ -281,6 +282,25 @@ void pd_build_request(uint32_t src_cap_cnt, const uint32_t * const src_caps,
*rdo |= RDO_NO_SUSPEND;
}
}
+
+void pd_process_source_cap(int port, int cnt, uint32_t *src_caps)
+{
+ pd_set_src_caps(port, cnt, src_caps);
+
+ if (IS_ENABLED(CONFIG_CHARGE_MANAGER)) {
+ uint32_t ma, mv, pdo;
+
+ /* Get max power info that we could request */
+ pd_find_pdo_index(pd_get_src_cap_cnt(port),
+ pd_get_src_caps(port),
+ PD_MAX_VOLTAGE_MV, &pdo);
+ pd_extract_pdo_power(pdo, &ma, &mv);
+
+ /* Set max. limit, but apply 500mA ceiling */
+ charge_manager_set_ceil(port, CEIL_REQUESTOR_PD, PD_MIN_MA);
+ pd_set_input_current_limit(port, ma, mv);
+ }
+}
#endif /* defined(PD_MAX_VOLTAGE_MV) && defined(PD_OPERATING_POWER_MW) */
int pd_charge_from_device(uint16_t vid, uint16_t pid)
diff --git a/common/usb_pd_policy.c b/common/usb_pd_policy.c
index adce64b65f..98ef076953 100644
--- a/common/usb_pd_policy.c
+++ b/common/usb_pd_policy.c
@@ -60,39 +60,22 @@ static uint8_t pd_src_cap_cnt[CONFIG_USB_PD_PORT_MAX_COUNT];
const uint32_t * const pd_get_src_caps(int port)
{
- ASSERT(port < CONFIG_USB_PD_PORT_MAX_COUNT);
-
return pd_src_caps[port];
}
-uint8_t pd_get_src_cap_cnt(int port)
-{
- ASSERT(port < CONFIG_USB_PD_PORT_MAX_COUNT);
-
- return pd_src_cap_cnt[port];
-}
-
-void pd_process_source_cap(int port, int cnt, uint32_t *src_caps)
+void pd_set_src_caps(int port, int cnt, uint32_t *src_caps)
{
-#ifdef CONFIG_CHARGE_MANAGER
- uint32_t ma, mv, pdo;
-#endif
int i;
pd_src_cap_cnt[port] = cnt;
+
for (i = 0; i < cnt; i++)
pd_src_caps[port][i] = *src_caps++;
+}
-#ifdef CONFIG_CHARGE_MANAGER
- /* Get max power info that we could request */
- pd_find_pdo_index(pd_get_src_cap_cnt(port), pd_get_src_caps(port),
- PD_MAX_VOLTAGE_MV, &pdo);
- pd_extract_pdo_power(pdo, &ma, &mv);
-
- /* Set max. limit, but apply 500mA ceiling */
- charge_manager_set_ceil(port, CEIL_REQUESTOR_PD, PD_MIN_MA);
- pd_set_input_current_limit(port, ma, mv);
-#endif
+uint8_t pd_get_src_cap_cnt(int port)
+{
+ return pd_src_cap_cnt[port];
}
#endif /* CONFIG_USB_PD_DUAL_ROLE */
diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c
index bfd459fd21..1581a26e41 100644
--- a/common/usbc/usb_pe_drp_sm.c
+++ b/common/usbc/usb_pe_drp_sm.c
@@ -4430,26 +4430,24 @@ static void pe_dr_snk_get_sink_cap_run(int port)
set_state_pe(port, PE_SNK_READY);
}
-void pd_process_source_cap(int port, int cnt, uint32_t *src_caps)
+const uint32_t * const pd_get_src_caps(int port)
+{
+ return pe[port].src_caps;
+}
+
+void pd_set_src_caps(int port, int cnt, uint32_t *src_caps)
{
-#ifdef CONFIG_CHARGE_MANAGER
- uint32_t ma, mv, pdo;
-#endif
int i;
pe[port].src_cap_cnt = cnt;
+
for (i = 0; i < cnt; i++)
pe[port].src_caps[i] = *src_caps++;
+}
-#ifdef CONFIG_CHARGE_MANAGER
- /* Get max power info that we could request */
- pd_find_pdo_index(pe[port].src_cap_cnt, pe[port].src_caps,
- PD_MAX_VOLTAGE_MV, &pdo);
- pd_extract_pdo_power(pdo, &ma, &mv);
- /* Set max. limit, but apply 500mA ceiling */
- charge_manager_set_ceil(port, CEIL_REQUESTOR_PD, PD_MIN_MA);
- pd_set_input_current_limit(port, ma, mv);
-#endif
+uint8_t pd_get_src_cap_cnt(int port)
+{
+ return pe[port].src_cap_cnt;
}
void pd_dfp_pe_init(int port)
diff --git a/include/usb_pd.h b/include/usb_pd.h
index 7e3ad705df..1d75abf638 100644
--- a/include/usb_pd.h
+++ b/include/usb_pd.h
@@ -2398,6 +2398,16 @@ const uint32_t * const pd_get_src_caps(int port);
uint8_t pd_get_src_cap_cnt(int port);
/**
+ * Set the source caps list & count
+ *
+ * @param port USB-C port number
+ * @param cnt Source caps count
+ * @param src_caps Pointer to source caps
+ *
+ */
+void pd_set_src_caps(int port, int cnt, uint32_t *src_caps);
+
+/**
* Return true if partner port is capable of communication over USB data
* lines.
*
diff --git a/test/fake_usbc.c b/test/fake_usbc.c
index 36e0d7ca48..d8ed1d42f9 100644
--- a/test/fake_usbc.c
+++ b/test/fake_usbc.c
@@ -162,6 +162,20 @@ enum idh_ptype get_usb_pd_mux_cable_type(int port)
{
return IDH_PTYPE_UNDEF;
}
+
+const uint32_t * const pd_get_src_caps(int port)
+{
+ return NULL;
+}
+
+void pd_set_src_caps(int port, int cnt, uint32_t *src_caps)
+{
+}
+
+uint8_t pd_get_src_cap_cnt(int port)
+{
+ return 0;
+}
#endif
#ifndef CONFIG_USB_TYPEC_DRP_ACC_TRYSRC