summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaveh Jalali <caveh@chromium.org>2022-01-28 01:36:11 -0800
committerCommit Bot <commit-bot@chromium.org>2022-02-12 04:31:27 +0000
commitdbcb85c7e8c32c2957a5cd349de51d5977347834 (patch)
tree163cafa5b9f532b3d6c6f63e7311e8e663c47767
parent0ab6c10da0394f2887a26b1ac7c696baed801517 (diff)
downloadchrome-ec-dbcb85c7e8c32c2957a5cd349de51d5977347834.tar.gz
genvif: Upgrade to VIF definition version 3.18
This updates genvif to support VIF 3.18 and brings it in sync with VIF files generated by VIFeditor v3.2.3.0. The order in which elements are generated has been changed to match VIFeditor 3.2.3.0 to simplify comparing VIF files generated by the two utilities. BRANCH=none BUG=b:217284675 TEST=buildall passes Cq-Depend: chromium:3454864 Change-Id: I5d96be03c273886b45b38f4853928653c6cccf09 Signed-off-by: Caveh Jalali <caveh@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3428932 Reviewed-by: Denis Brockus <dbrockus@chromium.org>
-rw-r--r--util/genvif.c116
-rw-r--r--util/genvif.h147
2 files changed, 171 insertions, 92 deletions
diff --git a/util/genvif.c b/util/genvif.c
index 291074cfa6..4f24c79d26 100644
--- a/util/genvif.c
+++ b/util/genvif.c
@@ -27,7 +27,7 @@
#define VIF_APP_VENDOR_VALUE "Google"
#define VIF_APP_NAME_VALUE "EC GENVIF"
-#define VIF_APP_VERSION_VALUE "3.0.0.10"
+#define VIF_APP_VERSION_VALUE "3.2.3.0"
#define VENDOR_NAME_VALUE "Google"
#define DEFAULT_MISSING_TID 0xFFFF
@@ -148,6 +148,9 @@ const char *vif_component_name[] = {
NAME_INIT(Responds_To_Discov_SOP_UFP),
NAME_INIT(Responds_To_Discov_SOP_DFP),
NAME_INIT(Attempts_Discov_SOP),
+ NAME_INIT(Power_Interruption_Available),
+ NAME_INIT(Data_Reset_Supported),
+ NAME_INIT(Enter_USB_Supported),
NAME_INIT(Chunking_Implemented_SOP),
NAME_INIT(Unchunked_Extended_Messages_Supported),
NAME_INIT(Security_Msgs_Supported_SOP),
@@ -164,6 +167,7 @@ const char *vif_component_name[] = {
NAME_INIT(Type_C_Is_Debug_Target_SRC),
NAME_INIT(Type_C_Is_Debug_Target_SNK),
NAME_INIT(Captive_Cable),
+ NAME_INIT(Captive_Cable_Is_eMarked),
NAME_INIT(RP_Value),
NAME_INIT(Type_C_Port_On_Hub),
NAME_INIT(Type_C_Power_Source),
@@ -202,6 +206,7 @@ const char *vif_component_name[] = {
NAME_INIT(Device_Gen2x1_tLinkTurnaround),
NAME_INIT(BC_1_2_Charging_Port_Type),
NAME_INIT(PD_Power_As_Source),
+ NAME_INIT(EPR_Supported_As_Src),
NAME_INIT(USB_Suspend_May_Be_Cleared),
NAME_INIT(Sends_Pings),
NAME_INIT(Accepts_PR_Swap_As_Src),
@@ -216,6 +221,7 @@ const char *vif_component_name[] = {
NAME_INIT(PD_OC_Protection),
NAME_INIT(PD_OCP_Method),
NAME_INIT(PD_Power_As_Sink),
+ NAME_INIT(EPR_Supported_As_Snk),
NAME_INIT(No_USB_Suspend_May_Be_Set),
NAME_INIT(GiveBack_May_Be_Set),
NAME_INIT(Higher_Capability_Set),
@@ -255,6 +261,7 @@ const char *vif_component_name[] = {
NAME_INIT(Cable_FW_Vers),
NAME_INIT(Type_C_To_Type_A_B_C),
NAME_INIT(Type_C_To_Type_C_Capt_Vdm_V2),
+ NAME_INIT(EPR_Mode_Capable),
NAME_INIT(Cable_Latency),
NAME_INIT(Cable_Termination_Type),
NAME_INIT(VBUS_Through_Cable),
@@ -281,9 +288,7 @@ const char *vif_component_name[] = {
NAME_INIT(Cable_SOP_PP_Controller),
NAME_INIT(SBU_Supported),
NAME_INIT(SBU_Type),
- NAME_INIT(Active_Cable_Operating_Temp_Support),
NAME_INIT(Active_Cable_Max_Operating_Temp),
- NAME_INIT(Active_Cable_Shutdown_Temp_Support),
NAME_INIT(Active_Cable_Shutdown_Temp),
NAME_INIT(Active_Cable_U3_CLd_Power),
NAME_INIT(Active_Cable_U3_U0_Trans_Mode),
@@ -303,7 +308,9 @@ BUILD_ASSERT(ARRAY_SIZE(vif_component_name) == Component_Indexes);
const char *vif_component_snk_pdo_name[] = {
NAME_INIT(Snk_PDO_Supply_Type),
+ NAME_INIT(Snk_PDO_APDO_Type),
NAME_INIT(Snk_PDO_Voltage),
+ NAME_INIT(Snk_PDO_PDP_Rating),
NAME_INIT(Snk_PDO_Op_Power),
NAME_INIT(Snk_PDO_Min_Voltage),
NAME_INIT(Snk_PDO_Max_Voltage),
@@ -313,6 +320,7 @@ BUILD_ASSERT(ARRAY_SIZE(vif_component_snk_pdo_name) == Snk_PDO_Indexes);
const char *vif_component_src_pdo_name[] = {
NAME_INIT(Src_PDO_Supply_Type),
+ NAME_INIT(Src_PDO_APDO_Type),
NAME_INIT(Src_PDO_Peak_Current),
NAME_INIT(Src_PDO_Voltage),
NAME_INIT(Src_PDO_Max_Current),
@@ -359,10 +367,11 @@ const char *vif_cable_svid_name[] = {
BUILD_ASSERT(ARRAY_SIZE(vif_cable_svid_name) == CableSVID_Indexes);
const char *vif_product_name[] = {
- NAME_INIT(Product_VID),
+ NAME_INIT(USB4_DROM_Vendor_ID),
NAME_INIT(USB4_Dock),
NAME_INIT(USB4_Num_Internal_Host_Controllers),
NAME_INIT(USB4_Num_PCIe_DN_Bridges),
+ NAME_INIT(USB4_Device_HiFi_Bi_TMU_Mode_Required),
NAME_INIT(USB4_Audio_Supported),
NAME_INIT(USB4_HID_Supported),
NAME_INIT(USB4_Printer_Supported),
@@ -465,7 +474,7 @@ static bool get_vif_field_number(struct vif_field_t *vif_field, int *value)
return rv;
}
__maybe_unused
-static bool get_vif_number(struct vif_field_t *vif_field, int default_value)
+static int get_vif_number(struct vif_field_t *vif_field, int default_value)
{
int ret_value;
@@ -1139,7 +1148,10 @@ static int vif_output_xml(const char *name, struct vif_t *vif)
vif_out_str(vif_file, level,
"<?xml version=\"1.0\" encoding=\"utf-8\"?>");
vif_out_start(vif_file, level++,
- "VIF xmlns=\"http://usb.org/VendorInfoFile.xsd\"");
+ "VIF "
+ "xmlns:opt=\"http://usb.org/VendorInfoFileOptionalContent.xsd\" "
+ "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
+ "xmlns:vif=\"http://usb.org/VendorInfoFile.xsd\"");
vif_output_vif_xml(vif_file, vif, level);
vif_output_vif_product(vif_file, vif, level);
@@ -1234,18 +1246,6 @@ static void set_override_vif_field(struct vif_field_t *vif_field,
ptr = malloc(strlen(tag_value)+1);
strcpy(ptr, tag_value);
vif_field->tag_value = ptr;
-
- /*
- * If the tag_value was provided and the str_value was
- * not and this is a boolean value, then fill in the
- * str_value
- */
- if (!str_value || str_value[0] == '\0') {
- if (streq(tag_value, "true"))
- str_value = "YES";
- else if (streq(tag_value, "false"))
- str_value = "NO";
- }
}
if (str_value && str_value[0]) {
ptr = malloc(strlen(str_value)+1);
@@ -1569,7 +1569,7 @@ static void override_vif_product_fields(struct vif_Product_t *vif_product)
str_value);
else
fprintf(stderr,
- "VIFF/Product:"
+ "VIF/Product:"
" Unknown tag '%s'\n", name);
}
}
@@ -1948,7 +1948,7 @@ static void override_vif_app_fields(struct vif_t *vif)
break;
if (i == VIF_App_Indexes)
fprintf(stderr,
- "VIFF/VIF_App:"
+ "VIF/VIF_App:"
" Unknown tag '%s'\n", name);
}
}
@@ -2073,9 +2073,9 @@ __maybe_unused static void set_vif_field_b(struct vif_field_t *vif_field,
const bool val)
{
if (val)
- set_vif_field(vif_field, name, "true", "YES");
+ set_vif_field(vif_field, name, "true", NULL);
else
- set_vif_field(vif_field, name, "false", "NO");
+ set_vif_field(vif_field, name, "false", NULL);
}
__maybe_unused static void set_vif_field_stis(struct vif_field_t *vif_field,
const char *name,
@@ -2141,6 +2141,7 @@ __maybe_unused static void set_vif_field_itis(struct vif_field_t *vif_field,
* USB4_Dock booleanFieldType
* USB4_Num_Internal_Host_Controllers numericFieldType
* USB4_Num_PCIe_DN_Bridges numericFieldType
+ * USB4_Device_HiFi_Bi_TMU_Mode_Required booleanFieldType
*
* vif_Component USB4 Device Class Fallback Support
* USB4_Audio_Supported booleanFieldType
@@ -2539,7 +2540,7 @@ static void init_vif_fields(struct vif_field_t *vif_fields,
set_vif_field(&vif_fields[VIF_Specification],
vif_name[VIF_Specification],
NULL,
- "3.12");
+ "3.18");
set_vif_field(&vif_app_fields[Vendor],
vif_app_name[Vendor],
@@ -2615,19 +2616,6 @@ static void init_vif_fields(struct vif_field_t *vif_fields,
}
/*********************************************************************
- * Init VIF/Product Fields
- */
-static void init_vif_product_fields(struct vif_field_t *vif_fields)
-{
- char hex_str[10];
-
- sprintf(hex_str, "%04X", USB_VID_GOOGLE);
- set_vif_field_itss(&vif_fields[Product_VID],
- vif_product_name[Product_VID],
- USB_VID_GOOGLE, hex_str);
-}
-
-/*********************************************************************
* Init VIF/Component[] Fields
*/
static void init_vif_component_fields(struct vif_field_t *vif_fields,
@@ -2782,15 +2770,15 @@ static void init_vif_component_general_pd_fields(
NULL);
set_vif_field(&vif_fields[PD_Spec_Revision_Minor],
vif_component_name[PD_Spec_Revision_Minor],
- "0",
+ "1",
NULL);
set_vif_field(&vif_fields[PD_Spec_Version_Major],
vif_component_name[PD_Spec_Version_Major],
- "2",
+ "1",
NULL);
set_vif_field(&vif_fields[PD_Spec_Version_Minor],
vif_component_name[PD_Spec_Version_Minor],
- "0",
+ "3",
NULL);
set_vif_field(&vif_fields[PD_Specification_Revision],
@@ -2962,6 +2950,19 @@ static void init_vif_component_general_pd_fields(
((!IS_ENABLED(CONFIG_USB_PD_SIMPLE_DFP)) ||
(type != SRC)));
+ set_vif_field(&vif_fields[Power_Interruption_Available],
+ vif_component_name[Power_Interruption_Available],
+ "0",
+ "No Interruption Possible");
+
+ set_vif_field_b(&vif_fields[Data_Reset_Supported],
+ vif_component_name[Data_Reset_Supported],
+ IS_ENABLED(CONFIG_USB_PD_USB4));
+
+ set_vif_field_b(&vif_fields[Enter_USB_Supported],
+ vif_component_name[Enter_USB_Supported],
+ IS_ENABLED(CONFIG_USB_PD_USB4));
+
set_vif_field_b(&vif_fields[Chunking_Implemented_SOP],
vif_component_name[Chunking_Implemented_SOP],
(IS_ENABLED(CONFIG_USB_PD_REV30) &&
@@ -3026,7 +3027,7 @@ static void init_vif_component_general_pd_fields(
set_vif_field(&vif_fields[ID_Header_Connector_Type_SOP],
vif_component_name[ID_Header_Connector_Type_SOP],
- "2", "USB Type-C® Receptacle");
+ "2", "USB Type-C\u00ae Receptacle");
}
/*********************************************************************
@@ -3242,22 +3243,22 @@ static void init_vif_component_usb_data_ufp_fields(
case USB_GEN11:
set_vif_field_itss(&vif_fields[Device_Speed],
vif_component_name[Device_Speed],
- USB_GEN11, "USB 3.2 GEN 1x1");
+ USB_GEN11, "USB 3.2 Gen 1x1");
break;
case USB_GEN21:
set_vif_field_itss(&vif_fields[Device_Speed],
vif_component_name[Device_Speed],
- USB_GEN21, "USB 3.2 GEN 2x1");
+ USB_GEN21, "USB 3.2 Gen 2x1");
break;
case USB_GEN12:
set_vif_field_itss(&vif_fields[Device_Speed],
vif_component_name[Device_Speed],
- USB_GEN12, "USB 3.2 GEN 1x2");
+ USB_GEN12, "USB 3.2 Gen 1x2");
break;
case USB_GEN22:
set_vif_field_itss(&vif_fields[Device_Speed],
vif_component_name[Device_Speed],
- USB_GEN22, "USB 3.2 GEN 2x2");
+ USB_GEN22, "USB 3.2 Gen 2x2");
break;
}
}
@@ -3315,22 +3316,22 @@ static void init_vif_component_usb_data_dfp_fields(
case USB_GEN11:
set_vif_field_itss(&vif_fields[Host_Speed],
vif_component_name[Host_Speed],
- USB_GEN11, "USB 3.2 GEN 1x1");
+ USB_GEN11, "USB 3.2 Gen 1x1");
break;
case USB_GEN21:
set_vif_field_itss(&vif_fields[Host_Speed],
vif_component_name[Host_Speed],
- USB_GEN21, "USB 3.2 GEN 2x1");
+ USB_GEN21, "USB 3.2 Gen 2x1");
break;
case USB_GEN12:
set_vif_field_itss(&vif_fields[Host_Speed],
vif_component_name[Host_Speed],
- USB_GEN12, "USB 3.2 GEN 1x2");
+ USB_GEN12, "USB 3.2 Gen 1x2");
break;
case USB_GEN22:
set_vif_field_itss(&vif_fields[Host_Speed],
vif_component_name[Host_Speed],
- USB_GEN22, "USB 3.2 GEN 2x2");
+ USB_GEN22, "USB 3.2 Gen 2x2");
break;
}
@@ -3366,6 +3367,10 @@ static int init_vif_component_pd_source_fields(
int i;
char str[40];
+ set_vif_field_b(&vif_fields[EPR_Supported_As_Src],
+ vif_component_name[EPR_Supported_As_Src],
+ false);
+
/* Source PDOs */
for (i = 0; i < src_pdo_cnt; i++) {
int32_t pwr;
@@ -3476,6 +3481,10 @@ static int init_vif_component_pd_sink_fields(
if (!IS_ENABLED(CONFIG_USB_PD_DUAL_ROLE) || type == SRC)
return 0;
+ set_vif_field_b(&vif_fields[EPR_Supported_As_Snk],
+ vif_component_name[EPR_Supported_As_Snk],
+ false);
+
/* Sink PDOs */
for (i = 0; i < pd_snk_pdo_cnt; i++) {
int32_t pwr;
@@ -3596,17 +3605,17 @@ static void init_vif_component_sop_discovery_fields(
can_act_as_device());
if (does_respond_to_discov_sop_dfp() &&
- is_usb4_supported()) {
+ IS_ENABLED(CONFIG_USB_PD_REV30)) {
#if defined(CONFIG_USB_PD_PORT_LABEL)
set_vif_field_stis(&vif_fields[DFP_VDO_Port_Number],
vif_component_name[DFP_VDO_Port_Number],
NULL,
CONFIG_USB_PD_PORT_LABEL);
#else
- set_vif_field_stis(&vif_fields[DFP_VDO_Port_Number],
+ set_vif_field_itss(&vif_fields[DFP_VDO_Port_Number],
vif_component_name[DFP_VDO_Port_Number],
- NULL,
- component_index);
+ component_index,
+ NULL);
#endif
}
@@ -3700,9 +3709,6 @@ static int gen_vif(const char *board,
vif->vif_app_field,
board);
- init_vif_product_fields(
- vif->Product.vif_field);
-
for (component_index = 0;
component_index < max_component_index;
component_index++) {
diff --git a/util/genvif.h b/util/genvif.h
index 634dbfc861..01a0b4fdc7 100644
--- a/util/genvif.h
+++ b/util/genvif.h
@@ -22,6 +22,7 @@ struct vif_field_t {
char *str_value;
};
+/* 3.2.15.2 Cable SVID Modes */
enum vif_cableSVIDModeList_indexes {
SVID_Mode_Enter, /* booleanFieldType */
@@ -29,18 +30,21 @@ enum vif_cableSVIDModeList_indexes {
SVID_Mode_Recog_Value, /* numericFieldType */
CableSVID_Mode_Indexes
};
+
struct vif_cableSVIDModeList_t {
struct vif_field_t vif_field[CableSVID_Mode_Indexes];
};
+/* 3.2.15.1 Cable SVIDs */
enum vif_cableSVIDList_indexes {
SVID, /* numericFieldType */
- SVID_Modes_Fixed, /* booleanFieldType */
SVID_Num_Modes_Min, /* numericFieldType */
SVID_Num_Modes_Max, /* numericFieldType */
+ SVID_Modes_Fixed, /* booleanFieldType */
CableSVID_Indexes
};
+
struct vif_cableSVIDList_t {
struct vif_field_t vif_field[CableSVID_Indexes];
@@ -48,6 +52,7 @@ struct vif_cableSVIDList_t {
CableSVIDModeList[MAX_NUM_CABLE_SVID_MODES];
};
+/* 3.2.12.2 SOP SVID Modes */
enum vif_sopSVIDModeList_indexes {
SVID_Mode_Enter_SOP, /* booleanFieldType */
@@ -55,18 +60,21 @@ enum vif_sopSVIDModeList_indexes {
SVID_Mode_Recog_Value_SOP, /* numericFieldType */
SopSVID_Mode_Indexes
};
+
struct vif_sopSVIDModeList_t {
struct vif_field_t vif_field[SopSVID_Mode_Indexes];
};
+/* 3.2.12.1 SOP SVIDs */
enum vif_sopSVIDList_indexes {
SVID_SOP, /* numericFieldType */
- SVID_Modes_Fixed_SOP, /* booleanFieldType */
SVID_Num_Modes_Min_SOP, /* numericFieldType */
SVID_Num_Modes_Max_SOP, /* numericFieldType */
+ SVID_Modes_Fixed_SOP, /* booleanFieldType */
SopSVID_Indexes
};
+
struct vif_sopSVIDList_t {
struct vif_field_t vif_field[SopSVID_Indexes];
@@ -74,23 +82,29 @@ struct vif_sopSVIDList_t {
SOPSVIDModeList[MAX_NUM_SOP_SVID_MODES];
};
+/* 3.2.10.1 Sink PDOs */
enum vif_snkPdoList_indexes {
Snk_PDO_Supply_Type, /* numericFieldType */
+ Snk_PDO_APDO_Type, /* numericFieldType */
Snk_PDO_Voltage, /* numericFieldType */
+ Snk_PDO_PDP_Rating, /* numericFieldType */
Snk_PDO_Op_Power, /* numericFieldType */
Snk_PDO_Min_Voltage, /* numericFieldType */
Snk_PDO_Max_Voltage, /* numericFieldType */
Snk_PDO_Op_Current, /* numericFieldType */
Snk_PDO_Indexes
};
+
struct vif_snkPdoList_t {
struct vif_field_t vif_field[Snk_PDO_Indexes];
};
+/* 3.2.9.1 Source PDOs */
enum vif_srcPdoList_indexes {
Src_PDO_Supply_Type, /* numericFieldType */
+ Src_PDO_APDO_Type, /* numericFieldType */
Src_PDO_Peak_Current, /* numericFieldType */
Src_PDO_Voltage, /* numericFieldType */
Src_PDO_Max_Current, /* numericFieldType */
@@ -104,10 +118,12 @@ enum vif_srcPdoList_indexes {
Src_PD_OCP_UV_Threshold, /* numericFieldType */
Src_PDO_Indexes
};
+
struct vif_srcPdoList_t {
struct vif_field_t vif_field[Src_PDO_Indexes];
};
+/* 3.2.2.1.3 PCIe Endpoint Fields */
enum vif_PCIeEndpointListType_indexes {
USB4_PCIe_Endpoint_Vendor_ID, /* numericFieldType */
@@ -115,10 +131,12 @@ enum vif_PCIeEndpointListType_indexes {
USB4_PCIe_Endpoint_Class_Code, /* numericFieldType */
PCIe_Endpoint_Indexes
};
+
struct vif_PCIeEndpointListType_t {
struct vif_field_t vif_field[PCIe_Endpoint_Indexes];
};
+/* 3.2.2.1.2 USB4 Router Fields */
enum vif_Usb4RouterListType_indexes {
USB4_Router_ID, /* numericFieldType */
@@ -138,6 +156,7 @@ enum vif_Usb4RouterListType_indexes {
USB4_Num_PCIe_Endpoints, /* numericFieldType */
USB4_Router_Indexes
};
+
struct vif_Usb4RouterListType_t {
struct vif_field_t vif_field[USB4_Router_Indexes];
@@ -145,6 +164,7 @@ struct vif_Usb4RouterListType_t {
PCIeEndpointList[MAX_NUM_PCIE_ENDPOINTS];
};
+/* 3.2.3 Component Fields */
enum vif_Component_indexes {
Port_Label, /* nonEmptyString */
@@ -154,52 +174,69 @@ enum vif_Component_indexes {
USB_PD_Support, /* booleanFieldType */
PD_Port_Type, /* numericFieldType */
Type_C_State_Machine, /* numericFieldType */
- Captive_Cable, /* booleanFieldType */
Port_Battery_Powered, /* booleanFieldType */
BC_1_2_Support, /* numericFieldType */
+ Captive_Cable, /* booleanFieldType */
+ Captive_Cable_Is_eMarked, /* booleanFieldType */
+
+ /* 3.2.4 General PD Fields */
PD_Spec_Revision_Major, /* numericFieldType */
PD_Spec_Revision_Minor, /* numericFieldType */
PD_Spec_Version_Major, /* numericFieldType */
PD_Spec_Version_Minor, /* numericFieldType */
PD_Specification_Revision, /* numericFieldType */
+
+ /* 3.2.4.1 SOP* Capabilities */
+ SOP_Capable, /* booleanFieldType */
+ SOP_P_Capable, /* booleanFieldType */
+ SOP_PP_Capable, /* booleanFieldType */
+ SOP_P_Debug_Capable, /* booleanFieldType */
+ SOP_PP_Debug_Capable, /* booleanFieldType */
+
+ Manufacturer_Info_Supported_Port, /* booleanFieldType */
+ Manufacturer_Info_VID_Port, /* numericFieldType */
+ Manufacturer_Info_PID_Port, /* numericFieldType */
+ Chunking_Implemented_SOP, /* booleanFieldType */
+ Unchunked_Extended_Messages_Supported, /* booleanFieldType */
+ Security_Msgs_Supported_SOP, /* booleanFieldType */
+ Unconstrained_Power, /* booleanFieldType */
+ Num_Fixed_Batteries, /* numericFieldType */
+ Num_Swappable_Battery_Slots, /* numericFieldType */
+ ID_Header_Connector_Type_SOP, /* numericFieldType */
+
+ /* 3.2.4 General PD Fields */
USB_Comms_Capable, /* booleanFieldType */
DR_Swap_To_DFP_Supported, /* booleanFieldType */
DR_Swap_To_UFP_Supported, /* booleanFieldType */
- Unconstrained_Power, /* booleanFieldType */
VCONN_Swap_To_On_Supported, /* booleanFieldType */
VCONN_Swap_To_Off_Supported, /* booleanFieldType */
Responds_To_Discov_SOP_UFP, /* booleanFieldType */
Responds_To_Discov_SOP_DFP, /* booleanFieldType */
Attempts_Discov_SOP, /* booleanFieldType */
- Chunking_Implemented_SOP, /* booleanFieldType */
- Unchunked_Extended_Messages_Supported, /* booleanFieldType */
- Manufacturer_Info_Supported_Port, /* booleanFieldType */
- Manufacturer_Info_VID_Port, /* numericFieldType */
- Manufacturer_Info_PID_Port, /* numericFieldType */
- Security_Msgs_Supported_SOP, /* booleanFieldType */
- Num_Fixed_Batteries, /* numericFieldType */
- Num_Swappable_Battery_Slots, /* numericFieldType */
- ID_Header_Connector_Type_SOP, /* numericFieldType */
- SOP_Capable, /* booleanFieldType */
- SOP_P_Capable, /* booleanFieldType */
- SOP_PP_Capable, /* booleanFieldType */
- SOP_P_Debug_Capable, /* booleanFieldType */
- SOP_PP_Debug_Capable, /* booleanFieldType */
+ Power_Interruption_Available, /* numericFieldType */
+ Data_Reset_Supported, /* booleanFieldType */
+ Enter_USB_Supported, /* booleanFieldType */
+
+ /* 3.2.5 USB Type-C Fields */
+ Type_C_Can_Act_As_Host, /* booleanFieldType */
+ Type_C_Can_Act_As_Device, /* booleanFieldType */
+
+ /* 3.2.5 USB Type-C Fields */
Type_C_Implements_Try_SRC, /* booleanFieldType */
Type_C_Implements_Try_SNK, /* booleanFieldType */
- RP_Value, /* numericFieldType */
- Type_C_Supports_VCONN_Powered_Accessory,/* booleanFieldType */
+ Type_C_Supports_Audio_Accessory, /* booleanFieldType */
Type_C_Is_VCONN_Powered_Accessory, /* booleanFieldType */
Type_C_Is_Debug_Target_SRC, /* booleanFieldType */
Type_C_Is_Debug_Target_SNK, /* booleanFieldType */
- Type_C_Can_Act_As_Host, /* booleanFieldType */
- Type_C_Is_Alt_Mode_Controller, /* booleanFieldType */
- Type_C_Can_Act_As_Device, /* booleanFieldType */
- Type_C_Is_Alt_Mode_Adapter, /* booleanFieldType */
- Type_C_Power_Source, /* numericFieldType */
+ RP_Value, /* numericFieldType */
+ Type_C_Supports_VCONN_Powered_Accessory,/* booleanFieldType */
Type_C_Port_On_Hub, /* booleanFieldType */
- Type_C_Supports_Audio_Accessory, /* booleanFieldType */
+ Type_C_Power_Source, /* numericFieldType */
Type_C_Sources_VCONN, /* booleanFieldType */
+ Type_C_Is_Alt_Mode_Controller, /* booleanFieldType */
+ Type_C_Is_Alt_Mode_Adapter, /* booleanFieldType */
+
+ /* 3.2.6 USB4 Port Fields (missing from output) */
USB4_Lane_0_Adapter, /* numericFieldType */
USB4_Max_Speed, /* numericFieldType */
USB4_DFP_Supported, /* booleanFieldType */
@@ -213,23 +250,39 @@ enum vif_Component_indexes {
USB4_Num_Retimers, /* numericFieldType */
USB4_DP_Bit_Rate, /* numericFieldType */
USB4_Num_DP_Lanes, /* numericFieldType */
+
+ /* 3.2.7 USB Data - Upstream Facing Port Fields */
Device_Supports_USB_Data, /* booleanFieldType */
Device_Speed, /* numericFieldType */
Device_Contains_Captive_Retimer, /* booleanFieldType */
Device_Truncates_DP_For_tDHPResponse, /* booleanFieldType */
Device_Gen1x1_tLinkTurnaround, /* numericFieldType */
Device_Gen2x1_tLinkTurnaround, /* numericFieldType */
+
+ /* 3.2.19 Product Power Fields */
+ Product_Total_Source_Power_mW, /* numericFieldType */
+ Port_Source_Power_Type, /* numericFieldType */
+ Port_Source_Power_Gang, /* nonEmptyString */
+ Port_Source_Power_Gang_Max_Power, /* numericFieldType */
+
+ /* 3.2.8 USB Data - Downstream Facing Port Fields */
Host_Supports_USB_Data, /* booleanFieldType */
Host_Speed, /* numericFieldType */
- Is_DFP_On_Hub, /* booleanFieldType */
- Hub_Port_Number, /* numericFieldType */
Host_Contains_Captive_Retimer, /* booleanFieldType */
Host_Truncates_DP_For_tDHPResponse, /* booleanFieldType */
Host_Gen1x1_tLinkTurnaround, /* numericFieldType */
Host_Gen2x1_tLinkTurnaround, /* numericFieldType */
Host_Is_Embedded, /* booleanFieldType */
Host_Suspend_Supported, /* booleanFieldType */
+ Is_DFP_On_Hub, /* booleanFieldType */
+ Hub_Port_Number, /* numericFieldType */
+
+ /* 3.2.14 Battery Charging 1.2 Fields */
+ BC_1_2_Charging_Port_Type, /* numericFieldType */
+
+ /* 3.2.9 PD Source Fields */
PD_Power_As_Source, /* numericFieldType */
+ EPR_Supported_As_Src, /* booleanFieldType */
USB_Suspend_May_Be_Cleared, /* booleanFieldType */
Sends_Pings, /* booleanFieldType */
FR_Swap_Type_C_Current_Capability_As_Initial_Sink,/* numericFieldType */
@@ -237,17 +290,28 @@ enum vif_Component_indexes {
Num_Src_PDOs, /* numericFieldType */
PD_OC_Protection, /* booleanFieldType */
PD_OCP_Method, /* numericFieldType */
+
+ /* insert: SrcPdoList */
+
+ /* 3.2.10 PD Sink Fields */
PD_Power_As_Sink, /* numericFieldType */
+ EPR_Supported_As_Snk, /* booleanFieldType */
No_USB_Suspend_May_Be_Set, /* booleanFieldType */
GiveBack_May_Be_Set, /* booleanFieldType */
Higher_Capability_Set, /* booleanFieldType */
FR_Swap_Reqd_Type_C_Current_As_Initial_Source,/* numericFieldType */
Num_Snk_PDOs, /* numericFieldType */
+
+ /* insert: SnkPdoList */
+
+ /* 3.2.11 PD Dual Role Fields */
Accepts_PR_Swap_As_Src, /* booleanFieldType */
Accepts_PR_Swap_As_Snk, /* booleanFieldType */
Requests_PR_Swap_As_Src, /* booleanFieldType */
Requests_PR_Swap_As_Snk, /* booleanFieldType */
FR_Swap_Supported_As_Initial_Sink, /* booleanFieldType */
+
+ /* 3.2.12 SOP Discover ID Fields */
XID_SOP, /* numericFieldType */
Data_Capable_As_USB_Host_SOP, /* booleanFieldType */
Data_Capable_As_USB_Device_SOP, /* booleanFieldType */
@@ -261,13 +325,16 @@ enum vif_Component_indexes {
Num_SVIDs_Min_SOP, /* numericFieldType */
Num_SVIDs_Max_SOP, /* numericFieldType */
SVID_Fixed_SOP, /* booleanFieldType */
+
+ /* 3.2.13 Alternate Mode Adapter (AMA) Fields */
AMA_HW_Vers, /* numericFieldType */
AMA_FW_Vers, /* numericFieldType */
AMA_VCONN_Power, /* booleanFieldType */
AMA_VCONN_Reqd, /* booleanFieldType */
AMA_VBUS_Reqd, /* booleanFieldType */
AMA_Superspeed_Support, /* numericFieldType */
- BC_1_2_Charging_Port_Type, /* numericFieldType */
+
+ /* 3.2.15 Cable/eMarker Fields */
XID, /* numericFieldType */
Data_Capable_As_USB_Host, /* booleanFieldType */
Data_Capable_As_USB_Device, /* booleanFieldType */
@@ -280,6 +347,7 @@ enum vif_Component_indexes {
Cable_FW_Vers, /* numericFieldType */
Type_C_To_Type_A_B_C, /* numericFieldType */
Type_C_To_Type_C_Capt_Vdm_V2, /* numericFieldType */
+ EPR_Mode_Capable, /* booleanFieldType */
Cable_Latency, /* numericFieldType */
Cable_Termination_Type, /* numericFieldType */
Cable_VBUS_Current, /* numericFieldType */
@@ -296,12 +364,12 @@ enum vif_Component_indexes {
Cable_Num_SVIDs_Min, /* numericFieldType */
Cable_Num_SVIDs_Max, /* numericFieldType */
SVID_Fixed, /* booleanFieldType */
+
+ /* 3.2.16 Active Cable Fields */
Cable_SOP_PP_Controller, /* booleanFieldType */
SBU_Supported, /* booleanFieldType */
SBU_Type, /* numericFieldType */
- Active_Cable_Operating_Temp_Support, /* booleanFieldType */
Active_Cable_Max_Operating_Temp, /* numericFieldType */
- Active_Cable_Shutdown_Temp_Support, /* booleanFieldType */
Active_Cable_Shutdown_Temp, /* numericFieldType */
Active_Cable_U3_CLd_Power, /* numericFieldType */
Active_Cable_U3_U0_Trans_Mode, /* numericFieldType */
@@ -314,6 +382,8 @@ enum vif_Component_indexes {
Active_Cable_USB_Lanes, /* numericFieldType */
Active_Cable_Optically_Isolated, /* booleanFieldType */
Active_Cable_USB_Gen, /* numericFieldType */
+
+ /* 3.2.17 VCONN Powered Devices */
VPD_HW_Vers, /* numericFieldType */
VPD_FW_Vers, /* numericFieldType */
VPD_Max_VBUS_Voltage, /* numericFieldType */
@@ -321,14 +391,13 @@ enum vif_Component_indexes {
VPD_Charge_Through_Current, /* numericFieldType */
VPD_VBUS_Impedance, /* numericFieldType */
VPD_Ground_Impedance, /* numericFieldType */
+
+ /* 3.2.18 Repeater Fields */
Repeater_One_Type, /* numericFieldType */
Repeater_Two_Type, /* numericFieldType */
- Product_Total_Source_Power_mW, /* numericFieldType */
- Port_Source_Power_Type, /* numericFieldType */
- Port_Source_Power_Gang, /* nonEmptyString */
- Port_Source_Power_Gang_Max_Power, /* numericFieldType */
Component_Indexes
};
+
struct vif_Component_t {
struct vif_field_t vif_field[Component_Indexes];
@@ -351,12 +420,14 @@ struct vif_Component_t {
*/
};
+/* 3.2.2 Product Fields */
enum vif_Product_indexes {
- Product_VID, /* numericFieldType */
+ USB4_DROM_Vendor_ID, /* numericFieldType */
USB4_Dock, /* booleanFieldType */
USB4_Num_Internal_Host_Controllers, /* numericFieldType */
USB4_Num_PCIe_DN_Bridges, /* numericFieldType */
+ USB4_Device_HiFi_Bi_TMU_Mode_Required, /* booleanFieldType */
USB4_Audio_Supported, /* booleanFieldType */
USB4_HID_Supported, /* booleanFieldType */
USB4_Printer_Supported, /* booleanFieldType */
@@ -369,13 +440,13 @@ enum vif_Product_indexes {
USB4_Monitor_Device_Supported, /* booleanFieldType */
Product_Indexes
};
+
struct vif_Product_t {
struct vif_field_t vif_field[Product_Indexes];
struct vif_Usb4RouterListType_t USB4RouterList[MAX_NUM_USB4_ROUTERS];
};
-
enum vif_indexes {
VIF_Specification, /* version */
Vendor_Name, /* nonEmptyString */
@@ -386,12 +457,14 @@ enum vif_indexes {
Certification_Type, /* numericFieldType */
VIF_Indexes
};
+
enum vif_app_indexes {
Vendor, /* nonEmptyString */
Name, /* nonEmptyString */
Version, /* version */
VIF_App_Indexes
};
+
struct vif_t {
struct vif_field_t vif_field[VIF_Indexes];
struct vif_field_t vif_app_field[VIF_App_Indexes];