summaryrefslogtreecommitdiff
path: root/util/genvif.h
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@google.com>2020-11-12 10:51:27 -0700
committerCommit Bot <commit-bot@chromium.org>2020-11-17 20:53:27 +0000
commit21f1d75e7bea96bf1c33986a0ab5406a80c7c1c2 (patch)
treef1694a63c2fe86483fab5d27b421ecb1fa131294 /util/genvif.h
parentc0a778cef35a9b06be6014121c18cb26d3691184 (diff)
downloadchrome-ec-21f1d75e7bea96bf1c33986a0ab5406a80c7c1c2.tar.gz
genvif: add override XML initialization
You can now feed in a VIF XML file with fields that you want to override and these will get set instead of using the CONFIG_ initialization for those fields. $ build/morphius/util/genvif -o build/morphius \ -b morphius_sku5_dvt2 \ --over board/morphius/sku5_dvt2.xml Where the override file is a valid VIF file (no matter how partial it is). Tags such as <? .... ?> and comments <!-- .... --> are ignored. In the above example the override file looked as followed: <?xml version="1.0" encoding="UTF-8"?> <VIF> <Model_Part_Number>Morphius SKU5</Model_Part_Number> <Product_Revision>DVT2</Product_Revision> </VIF> The Model_Part_Number and Product_Revision used this override value instead of "morphius" and "FIX-ME". The values can also be used to set other values. I added a couple of those but the uses of get_vif_field can be added to create more automated generation. Here are a couple of examples: static bool is_src(void) { int override_value; bool was_overridden; /* Determine if we are DRP, SRC or SNK */ was_overridden = get_vif_field_tag_number( &vif.Component[0] .vif_field[Type_C_State_Machine], &override_value); if (was_overridden) { switch (override_value) { case SRC: case DRP: return true; case SNK: return false; default: break; } } return src_pdo_cnt; } and /* Determine if we are DRP, SRC or SNK */ was_overridden = get_vif_field_tag_number( &vif->Component[0] .vif_field[Type_C_State_Machine], &override_value); if (was_overridden) { switch (override_value) { case SRC: case SNK: case DRP: type = (enum dtype)override_value; break; default: was_overridden = false; } } if (!was_overridden) { if (is_drp()) type = DRP; else if (is_src() && is_snk()) /* No DRP with SRC and SNK PDOs detected. So ignore. */ /* ie. Twinkie or Plankton */ return 0; else if (is_src()) type = SRC; else if (is_snk()) type = SNK; else return 1; } Bumped the version to 3.0.0.6. BUG=b:172489443 BRANCH=none TEST=use --over to override fields within the XML Signed-off-by: Denis Brockus <dbrockus@google.com> Change-Id: Ic1ecd3e0d2f643c3315bcc8abecdf7490fb69b8a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2535672 Tested-by: Denis Brockus <dbrockus@chromium.org> Auto-Submit: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Abe Levkoy <alevkoy@chromium.org> Commit-Queue: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'util/genvif.h')
-rw-r--r--util/genvif.h12
1 files changed, 8 insertions, 4 deletions
diff --git a/util/genvif.h b/util/genvif.h
index ef4f3d5ec1..634dbfc861 100644
--- a/util/genvif.h
+++ b/util/genvif.h
@@ -17,7 +17,7 @@
struct vif_field_t {
- char *name;
+ const char *name;
char *tag_value;
char *str_value;
};
@@ -378,9 +378,6 @@ struct vif_Product_t {
enum vif_indexes {
VIF_Specification, /* version */
- VIF_App_Vendor, /* nonEmptyString */
- VIF_App_Name, /* nonEmptyString */
- VIF_App_Version, /* version */
Vendor_Name, /* nonEmptyString */
Model_Part_Number, /* nonEmptyString */
Product_Revision, /* nonEmptyString */
@@ -389,8 +386,15 @@ 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];
struct vif_Product_t Product;
struct vif_Component_t Component[MAX_NUM_COMPONENTS];