diff options
author | Denis Brockus <dbrockus@google.com> | 2020-11-19 17:23:15 +0000 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-11-20 23:54:28 +0000 |
commit | 9b056a8aba7fd598f918b5356bf8d58645b78056 (patch) | |
tree | ec91276fec7481588a36f57e33c27447451826be | |
parent | 5f5740506571e5e775074c9d77fdffd0d4de5093 (diff) | |
download | chrome-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.xml | 1 | ||||
-rw-r--r-- | test/genvif/vif/exp_test_vif.xml | 1 | ||||
-rw-r--r-- | util/genvif.c | 71 |
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; |