summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@google.com>2020-11-19 17:23:15 +0000
committerCommit Bot <commit-bot@chromium.org>2020-11-20 23:54:28 +0000
commit9b056a8aba7fd598f918b5356bf8d58645b78056 (patch)
treeec91276fec7481588a36f57e33c27447451826be
parent5f5740506571e5e775074c9d77fdffd0d4de5093 (diff)
downloadchrome-ec-9b056a8aba7fd598f918b5356bf8d58645b78056.tar.gz
genvif: Type_C_Is_Alt_Mode_Adapter only when valid
some refactoring for does_respond_to_discov_sop_xxx and is_usb_pd_supported was added to make the common code available for other uses as well BUG=b:172434299 BRANCH=none TEST=verify XML output Signed-off-by: Denis Brockus <dbrockus@google.com> Change-Id: I36c7df53e61734fcbdd176e3ea292a3f8914fdf9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2550309 Tested-by: Denis Brockus <dbrockus@chromium.org> Auto-Submit: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Abe Levkoy <alevkoy@chromium.org> Commit-Queue: Abe Levkoy <alevkoy@chromium.org>
-rw-r--r--test/genvif/vif/exp_test_over_vif.xml1
-rw-r--r--test/genvif/vif/exp_test_vif.xml1
-rw-r--r--util/genvif.c71
3 files changed, 59 insertions, 14 deletions
diff --git a/test/genvif/vif/exp_test_over_vif.xml b/test/genvif/vif/exp_test_over_vif.xml
index e0cb1fb502..cecfbce4d2 100644
--- a/test/genvif/vif/exp_test_over_vif.xml
+++ b/test/genvif/vif/exp_test_over_vif.xml
@@ -55,7 +55,6 @@
<Type_C_Can_Act_As_Host value="true">YES</Type_C_Can_Act_As_Host>
<Type_C_Is_Alt_Mode_Controller value="false">NO</Type_C_Is_Alt_Mode_Controller>
<Type_C_Can_Act_As_Device value="false">NO</Type_C_Can_Act_As_Device>
- <Type_C_Is_Alt_Mode_Adapter value="false">NO</Type_C_Is_Alt_Mode_Adapter>
<Type_C_Power_Source value="1">UFP-powered</Type_C_Power_Source>
<Type_C_Port_On_Hub value="false">NO</Type_C_Port_On_Hub>
<Type_C_Supports_Audio_Accessory value="false">NO</Type_C_Supports_Audio_Accessory>
diff --git a/test/genvif/vif/exp_test_vif.xml b/test/genvif/vif/exp_test_vif.xml
index c5164d4e21..e8c4cc25cc 100644
--- a/test/genvif/vif/exp_test_vif.xml
+++ b/test/genvif/vif/exp_test_vif.xml
@@ -54,7 +54,6 @@
<Type_C_Can_Act_As_Host value="true">YES</Type_C_Can_Act_As_Host>
<Type_C_Is_Alt_Mode_Controller value="false">NO</Type_C_Is_Alt_Mode_Controller>
<Type_C_Can_Act_As_Device value="false">NO</Type_C_Can_Act_As_Device>
- <Type_C_Is_Alt_Mode_Adapter value="false">NO</Type_C_Is_Alt_Mode_Adapter>
<Type_C_Power_Source value="1">UFP-powered</Type_C_Power_Source>
<Type_C_Port_On_Hub value="false">NO</Type_C_Port_On_Hub>
<Type_C_Supports_Audio_Accessory value="false">NO</Type_C_Supports_Audio_Accessory>
diff --git a/util/genvif.c b/util/genvif.c
index c74a9b91d8..7ea5654fb4 100644
--- a/util/genvif.c
+++ b/util/genvif.c
@@ -652,6 +652,48 @@ static bool is_usb4_supported(void)
return usb4_supported;
}
+static bool is_usb_pd_supported(void)
+{
+ bool pd_supported;
+
+ if (!get_vif_field_tag_bool(
+ &vif.Component[component_index]
+ .vif_field[USB_PD_Support],
+ &pd_supported))
+ pd_supported = IS_ENABLED(CONFIG_USB_PRL_SM) ||
+ IS_ENABLED(CONFIG_USB_POWER_DELIVERY);
+
+ return pd_supported;
+}
+
+static bool does_respond_to_discov_sop_ufp(void)
+{
+ bool responds;
+
+ if (!get_vif_field_tag_bool(
+ &vif.Component[component_index]
+ .vif_field[Responds_To_Discov_SOP_UFP],
+ &responds))
+ responds = is_usb4_supported() ||
+ IS_ENABLED(CONFIG_USB_PD_TBT_COMPAT_MODE);
+
+ return responds;
+}
+
+static bool does_respond_to_discov_sop_dfp(void)
+{
+ bool responds;
+
+ if (!get_vif_field_tag_bool(
+ &vif.Component[component_index]
+ .vif_field[Responds_To_Discov_SOP_DFP],
+ &responds))
+ responds = is_usb4_supported() ||
+ IS_ENABLED(CONFIG_USB_PD_TBT_COMPAT_MODE);
+
+ return responds;
+}
+
static void init_src_pdos(void)
{
if (IS_ENABLED(CONFIG_USB_PD_DYNAMIC_SRC_CAP)) {
@@ -2551,8 +2593,7 @@ static void init_vif_component_fields(struct vif_field_t *vif_fields,
set_vif_field_b(&vif_fields[USB_PD_Support],
vif_component_name[USB_PD_Support],
- (IS_ENABLED(CONFIG_USB_PRL_SM) ||
- IS_ENABLED(CONFIG_USB_POWER_DELIVERY)));
+ is_usb_pd_supported());
switch (type) {
case SNK:
@@ -2784,13 +2825,11 @@ static void init_vif_component_general_pd_fields(
set_vif_field_b(&vif_fields[Responds_To_Discov_SOP_UFP],
vif_component_name[Responds_To_Discov_SOP_UFP],
- (IS_ENABLED(CONFIG_USB_PD_USB4) ||
- IS_ENABLED(CONFIG_USB_PD_TBT_COMPAT_MODE)));
+ does_respond_to_discov_sop_ufp());
set_vif_field_b(&vif_fields[Responds_To_Discov_SOP_DFP],
vif_component_name[Responds_To_Discov_SOP_DFP],
- (IS_ENABLED(CONFIG_USB_PD_USB4) ||
- IS_ENABLED(CONFIG_USB_PD_TBT_COMPAT_MODE)));
+ does_respond_to_discov_sop_dfp());
set_vif_field_b(&vif_fields[Attempts_Discov_SOP],
vif_component_name[Attempts_Discov_SOP],
@@ -2963,13 +3002,21 @@ static void init_vif_component_usb_type_c_fields(
vif_component_name[Type_C_Is_Alt_Mode_Controller],
IS_ENABLED(CONFIG_USB_PD_ALT_MODE_DFP));
- set_vif_field_b(&vif_fields[Type_C_Can_Act_As_Device],
- vif_component_name[Type_C_Can_Act_As_Device],
- can_act_as_device());
+ if (can_act_as_device()) {
+ set_vif_field_b(&vif_fields[Type_C_Can_Act_As_Device],
+ vif_component_name[Type_C_Can_Act_As_Device],
+ true);
- set_vif_field_b(&vif_fields[Type_C_Is_Alt_Mode_Adapter],
- vif_component_name[Type_C_Is_Alt_Mode_Adapter],
- IS_ENABLED(CONFIG_USB_ALT_MODE_ADAPTER));
+ if (is_usb_pd_supported() &&
+ does_respond_to_discov_sop_ufp())
+ set_vif_field_b(&vif_fields[Type_C_Is_Alt_Mode_Adapter],
+ vif_component_name[Type_C_Is_Alt_Mode_Adapter],
+ IS_ENABLED(CONFIG_USB_ALT_MODE_ADAPTER));
+ } else {
+ set_vif_field_b(&vif_fields[Type_C_Can_Act_As_Device],
+ vif_component_name[Type_C_Can_Act_As_Device],
+ false);
+ }
{
int ps = POWER_UFP;