Generated files from "arm-generic-codesearch" build 0, revision e4f0af3c9693cf82320ba153c0e277c6ceb4857d
diff --git a/chroot/build/arm-generic/etc/init/platform-features.json b/chroot/build/arm-generic/etc/init/platform-features.json
index 0056d48..aec5755 100644
--- a/chroot/build/arm-generic/etc/init/platform-features.json
+++ b/chroot/build/arm-generic/etc/init/platform-features.json
@@ -1,30 +1,64 @@
 [
   {
-        "name": "CrOSLateBootSchedTrace",
-        "commands": [
-                     {
-                        "name": "Mkdir",
-                        "path": "/sys/kernel/tracing/instances/schedtrace/"
-                     },
-                     {
-                        "name": "WriteFile",
-                        "path": "/sys/kernel/tracing/instances/schedtrace/events/sched/sched_switch/enable",
-                        "value": "1"
-                     },
-                     {
-                        "name": "WriteFile",
-                        "path": "/sys/kernel/tracing/instances/schedtrace/events/sched/sched_waking/enable",
-                        "value": "1"
-                     },
-                     {
-                        "name": "WriteFile",
-                        "path": "/sys/kernel/tracing/instances/schedtrace/events/sched/sched_migrate_task/enable",
-                        "value": "1"
-                     }
-		    ],
-        "support_check_commands": [{
-                        "name": "FileExists",
-                        "path": "/sys/kernel/tracing/instances/"
-		      }]
-   }
+    "name": "CrOSLateBootSchedTrace",
+    "commands": [
+      {
+        "name": "Mkdir",
+        "path": "/sys/kernel/tracing/instances/schedtrace/"
+      },
+      {
+        "name": "WriteFile",
+        "path": "/sys/kernel/tracing/instances/schedtrace/events/sched/sched_switch/enable",
+        "value": "1"
+      },
+      {
+        "name": "WriteFile",
+        "path": "/sys/kernel/tracing/instances/schedtrace/events/sched/sched_waking/enable",
+        "value": "1"
+      },
+      {
+        "name": "WriteFile",
+        "path": "/sys/kernel/tracing/instances/schedtrace/events/sched/sched_migrate_task/enable",
+        "value": "1"
+      }
+    ],
+    "support_check_commands": [
+      {
+        "name": "FileExists",
+        "path": "/sys/kernel/tracing/instances/"
+      }
+    ]
+  },
+  {
+    "name": "CrOSLateBootCpuidleMenu",
+    "commands": [
+      {
+        "name": "WriteFile",
+        "path": "/sys/devices/system/cpu/cpuidle/current_governor",
+        "value": "menu"
+      }
+    ],
+    "support_check_commands": [
+      {
+        "name": "FileExists",
+        "path": "/sys/devices/system/cpu/cpuidle/current_governor"
+      }
+    ]
+  },
+  {
+    "name": "CrOSLateBootCpuidleTEO",
+    "commands": [
+      {
+        "name": "WriteFile",
+        "path": "/sys/devices/system/cpu/cpuidle/current_governor",
+        "value": "teo"
+      }
+    ],
+    "support_check_commands": [
+      {
+        "name": "FileExists",
+        "path": "/sys/devices/system/cpu/cpuidle/current_governor"
+      }
+    ]
+  }
 ]
diff --git a/chroot/build/arm-generic/opt/google/chrome/metadata.json b/chroot/build/arm-generic/opt/google/chrome/metadata.json
index ae3432c..2ac2b69 100644
--- a/chroot/build/arm-generic/opt/google/chrome/metadata.json
+++ b/chroot/build/arm-generic/opt/google/chrome/metadata.json
@@ -1,6 +1,6 @@
 {
   "content": {
-    "version": "107.0.5299.0"
+    "version": "107.0.5300.0"
   },
   "metadata_version": 1
 }
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/accessibility_common_manifest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/accessibility_common_manifest.json
index 736ecd3..6d5a9d9 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/accessibility_common_manifest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/accessibility_common_manifest.json
@@ -2,7 +2,7 @@
   "key": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6SX/t6kDEi9UiG4fULwjbEW1uJmQoiJPtxvSZ/SDH14OjSzmfP6xfE97Hus3EY8uSIMxTHkGaZliGbFbIQXQn6/XwBpQRu2gPlrfz7TWR1Hw6SboBBMOpltM9A2nx+d3jLtz+YtKNYVcHyNil9hXfFeyFe6g5kLHapKb1UO0jo3q3kovo1a1z7ujzGwogfLmb58w1hkdFBnnqumRlT55dKLN8AQ6cSdB1sjDVoMgPYeWgkzXr9cR3A8UVJookSO0sDAmD+W8BtBijapt3UVkHiIL1NTPuXvGGUHL7TPFo5WcBXFMkTz74gJqqFdO5hQ2YWXAaCxQJwgJrQPrvPMSJAgMBAAECggEADDhEDww9wWbWzUz3BQEs2In1HrOgAFStN3zEkNFc9B78AJsvpXWczgPUqk9jrg1JzkUeghlK/mDWT8MNkkdQ4kmFMYCM9/jOI6+kU3js+arxlzU84VI5r4c4RhlSOtBEMOHjF0DORP3sopMXOxPAbYjXog3xhA0szYXdedwcIik7Xu3lt1Hl5FfVZbvVLdf4vw0jTfHcp8SmHy/BDVnSCrhC3pnPGi6o+lUaSK0ca3uvcJDZGLXJ/6LyFb6uLlS2XUoBMYsombioRKrerJJSOmMTLHvfu1cM6+iQ+J0wdBnJQpgmDoSVGjnksPU2SMpWgG2OzwuZYIUGI745s19wLQKBgQDvdHsMZ4ttBr9bjydzeZVATWTICHZgXdAYgfgrbGwppYDUjfKoAuJ6bHTvff4nj8aZrY+Y1SwuvqxgHHfiggUgqg+JyeaAdQG+CLdfl1M8An+6H0x/hx0nk0oOJQhu0y1R/SbtnDJ6JASszg/VrTwHIYbzUl6xKHbZ6X41apyLYwKBgQDHKJOeZdxuYj7AsAqFGreuPoAEh0S+2VHHi4rjNz5dC1z7o/8siixfkHg7ONM2hqCKo55XYj4UWtprEFZJ9ohbizHELNzpnTxjdS0cG/VfItml6CDJaUtrkShIx17yGjNi0u/7ywHQ3slJsUXu7CbEcESwEzdoSrsC048dyxBSIwKBgF0141wtxklXcg/LBtldf6q7NbrkCGh0vDd+CEOm/eesRBz5cHbUQKLVKyO60L9HqVBTDm24tW0wzdrP2h7y69oOOOQzEqX4Zgg6Tl9IgZ7/fgbOfjG6P7ATFqWw5rp1O9QJjii6P6/p62P1Bpbvy0kfVO/MpY2iqbkjufxDFtLvAoGBAMC5p4CVGedH82oL8WI1JKLdoIzBSelV7CmqA9E1WIg5wtVRMlIrtB0WdQL6ToppZVpEU6pES8bu1Ibe3GHezL2pyZMJxw3bNuEYN3sIIz7ZPr2qEHBYEMAbTFyBcoPejvOHJO0I2s0BitBhWEeJB0r5Sb8KGYg3KRnnGIvAQh75AoGBANEC/k1umGrnMO3rwHJF7R+aTHzeMnO6oi11pmSnT7eJcF+oi7OwHS3ickU6sGrIb5QmnwCY9ES1qY6mP7N++KQGsdQM2l13MpCn8cBZgrfpQg2slP1dz8LCDW/PB+6MF7qwEHN2afVA2muQaez+q0eXZjMXmGJ3VZIXz/cxBLD6",
   "manifest_version": 2,
   "name": "Accessibility Common",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "Accessibility Common extension to communicate with the Automation API",
   "background": {
     "page": "accessibility_common/background.html"
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/accessibility_common_manifest_guest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/accessibility_common_manifest_guest.json
index 7e4959a..cc73bfd 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/accessibility_common_manifest_guest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/accessibility_common_manifest_guest.json
@@ -2,7 +2,7 @@
   "key": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC6SX/t6kDEi9UiG4fULwjbEW1uJmQoiJPtxvSZ/SDH14OjSzmfP6xfE97Hus3EY8uSIMxTHkGaZliGbFbIQXQn6/XwBpQRu2gPlrfz7TWR1Hw6SboBBMOpltM9A2nx+d3jLtz+YtKNYVcHyNil9hXfFeyFe6g5kLHapKb1UO0jo3q3kovo1a1z7ujzGwogfLmb58w1hkdFBnnqumRlT55dKLN8AQ6cSdB1sjDVoMgPYeWgkzXr9cR3A8UVJookSO0sDAmD+W8BtBijapt3UVkHiIL1NTPuXvGGUHL7TPFo5WcBXFMkTz74gJqqFdO5hQ2YWXAaCxQJwgJrQPrvPMSJAgMBAAECggEADDhEDww9wWbWzUz3BQEs2In1HrOgAFStN3zEkNFc9B78AJsvpXWczgPUqk9jrg1JzkUeghlK/mDWT8MNkkdQ4kmFMYCM9/jOI6+kU3js+arxlzU84VI5r4c4RhlSOtBEMOHjF0DORP3sopMXOxPAbYjXog3xhA0szYXdedwcIik7Xu3lt1Hl5FfVZbvVLdf4vw0jTfHcp8SmHy/BDVnSCrhC3pnPGi6o+lUaSK0ca3uvcJDZGLXJ/6LyFb6uLlS2XUoBMYsombioRKrerJJSOmMTLHvfu1cM6+iQ+J0wdBnJQpgmDoSVGjnksPU2SMpWgG2OzwuZYIUGI745s19wLQKBgQDvdHsMZ4ttBr9bjydzeZVATWTICHZgXdAYgfgrbGwppYDUjfKoAuJ6bHTvff4nj8aZrY+Y1SwuvqxgHHfiggUgqg+JyeaAdQG+CLdfl1M8An+6H0x/hx0nk0oOJQhu0y1R/SbtnDJ6JASszg/VrTwHIYbzUl6xKHbZ6X41apyLYwKBgQDHKJOeZdxuYj7AsAqFGreuPoAEh0S+2VHHi4rjNz5dC1z7o/8siixfkHg7ONM2hqCKo55XYj4UWtprEFZJ9ohbizHELNzpnTxjdS0cG/VfItml6CDJaUtrkShIx17yGjNi0u/7ywHQ3slJsUXu7CbEcESwEzdoSrsC048dyxBSIwKBgF0141wtxklXcg/LBtldf6q7NbrkCGh0vDd+CEOm/eesRBz5cHbUQKLVKyO60L9HqVBTDm24tW0wzdrP2h7y69oOOOQzEqX4Zgg6Tl9IgZ7/fgbOfjG6P7ATFqWw5rp1O9QJjii6P6/p62P1Bpbvy0kfVO/MpY2iqbkjufxDFtLvAoGBAMC5p4CVGedH82oL8WI1JKLdoIzBSelV7CmqA9E1WIg5wtVRMlIrtB0WdQL6ToppZVpEU6pES8bu1Ibe3GHezL2pyZMJxw3bNuEYN3sIIz7ZPr2qEHBYEMAbTFyBcoPejvOHJO0I2s0BitBhWEeJB0r5Sb8KGYg3KRnnGIvAQh75AoGBANEC/k1umGrnMO3rwHJF7R+aTHzeMnO6oi11pmSnT7eJcF+oi7OwHS3ickU6sGrIb5QmnwCY9ES1qY6mP7N++KQGsdQM2l13MpCn8cBZgrfpQg2slP1dz8LCDW/PB+6MF7qwEHN2afVA2muQaez+q0eXZjMXmGJ3VZIXz/cxBLD6",
   "manifest_version": 2,
   "name": "Accessibility Common",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "Accessibility Common extension to communicate with the Automation API",
   "incognito": "split",
   "background": {
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/learn_mode/learn_mode.html b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/learn_mode/learn_mode.html
index 8607962..1983714 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/learn_mode/learn_mode.html
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/learn_mode/learn_mode.html
@@ -1,7 +1,9 @@
 <!DOCTYPE HTML>
-<!-- Copyright 2014 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2014 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <html>
 <head>
 <title class="i18n" msg="kbexplorer_title">ChromeVox Learn Mode</title>
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/log_page/log.html b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/log_page/log.html
index c00ac5a..bc914e2 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/log_page/log.html
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/log_page/log.html
@@ -1,6 +1,8 @@
-<!-- Copyright 2018 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2018 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <html>
 <head>
 <title class="i18n" msg="log_title">chromevox-log</title>
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/options/options.html b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/options/options.html
index 2c732f2..7afb892 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/options/options.html
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/options/options.html
@@ -1,6 +1,8 @@
-<!-- Copyright 2014 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2014 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <html>
 
 <head>
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/panel/panel.html b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/panel/panel.html
index 8e006a8..b73d2ed 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/panel/panel.html
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/panel/panel.html
@@ -1,6 +1,8 @@
-<!-- Copyright 2015 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2015 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <html>
 <head>
 <meta charset="utf-8">
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/tutorial/practice_areas/jump_commands.html b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/tutorial/practice_areas/jump_commands.html
index 20fd4c0..7ec4ae1 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/tutorial/practice_areas/jump_commands.html
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/tutorial/practice_areas/jump_commands.html
@@ -1,6 +1,8 @@
-<!-- Copyright 2020 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2020 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <h5 msgid="tutorial_jump_first_heading"></h5>
 <h5 msgid="tutorial_jump_second_heading"></h5>
 <h5 msgid="tutorial_jump_wrap_heading"></h5>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/tutorial/practice_areas/selects.html b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/tutorial/practice_areas/selects.html
index ce75e25..94d2bac 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/tutorial/practice_areas/selects.html
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox/tutorial/practice_areas/selects.html
@@ -1,6 +1,8 @@
-<!-- Copyright 2020 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2020 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <label id="selectLabel" msgid="tutorial_quick_orientation_lists_practice_label">
 </label>
 <select class="md-select" aria-labelledby="selectLabel">
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox_manifest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox_manifest.json
index 6dfcbba..50bd663 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox_manifest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox_manifest.json
@@ -2,7 +2,7 @@
   "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDltVl1k15pjRzuZfMc3B69inxwm2bZeZ2O8/zFO+NluHnBm3GJ3fzdOoFGJd+M16I8p7zxxQyHeDMfWYASyCeB8XnUEDKjqNLQfCnncsANzHsYoEbYj2nEUML2P13b9q+AAvpCBpAJ4cZp81e9n1y/vbSXHE4385cgkKueItzikQIDAQAB",
   "manifest_version": 2,
   "name": "__MSG_CHROMEVOX_NAME__",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "__MSG_CHROMEVOX_DESCRIPTION__",
   "background": {
     "page": "chromevox/background/background.html"
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox_manifest_guest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox_manifest_guest.json
index 12f24d0..4972ebc 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox_manifest_guest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/chromevox_manifest_guest.json
@@ -2,7 +2,7 @@
   "key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDltVl1k15pjRzuZfMc3B69inxwm2bZeZ2O8/zFO+NluHnBm3GJ3fzdOoFGJd+M16I8p7zxxQyHeDMfWYASyCeB8XnUEDKjqNLQfCnncsANzHsYoEbYj2nEUML2P13b9q+AAvpCBpAJ4cZp81e9n1y/vbSXHE4385cgkKueItzikQIDAQAB",
   "manifest_version": 2,
   "name": "__MSG_CHROMEVOX_NAME__",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "__MSG_CHROMEVOX_DESCRIPTION__",
   "incognito": "split",
   "background": {
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/chromevox_tutorial.js b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/chromevox_tutorial.js
index 81a4827..0ffa173 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/chromevox_tutorial.js
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/chromevox_tutorial.js
@@ -40,9 +40,11 @@
   is: 'chromevox-tutorial',
 
   _template: html`<!--_html_template_start_-->
-<!-- Copyright 2020 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2020 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <style>
 
 #tutorial {
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/lesson_container.js b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/lesson_container.js
index 41928b3..eb13319 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/lesson_container.js
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/lesson_container.js
@@ -15,9 +15,11 @@
   is: 'lesson-container',
 
   _template: html`<!--_html_template_start_-->
-<!-- Copyright 2021 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2021 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <style>
 
 #lessonContainer {
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/lesson_menu.js b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/lesson_menu.js
index 37ab576..0ca9da3 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/lesson_menu.js
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/lesson_menu.js
@@ -21,9 +21,11 @@
   is: 'lesson-menu',
 
   _template: html`<!--_html_template_start_-->
-<!-- Copyright 2021 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2021 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <style include="cr-shared-style">
 
 #lessonMenu {
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/main_menu.js b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/main_menu.js
index 700fff7..8b06cf8 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/main_menu.js
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/main_menu.js
@@ -21,9 +21,11 @@
   is: 'main-menu',
 
   _template: html`<!--_html_template_start_-->
-<!-- Copyright 2021 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2021 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <style include="cr-shared-style">
 
 #mainMenu,
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/navigation_buttons.js b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/navigation_buttons.js
index 8b04b1e..90f7467 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/navigation_buttons.js
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/navigation_buttons.js
@@ -20,9 +20,11 @@
   is: 'navigation-buttons',
 
   _template: html`<!--_html_template_start_-->
-<!-- Copyright 2021 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2021 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <style include="cr-shared-style">
 
 #nav {
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/tutorial_lesson.js b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/tutorial_lesson.js
index 208067a..e427a79 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/tutorial_lesson.js
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/common/tutorial/components/tutorial_lesson.js
@@ -22,9 +22,11 @@
   is: 'tutorial-lesson',
 
   _template: html`<!--_html_template_start_-->
-<!-- Copyright 2020 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2020 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <style include="md-select cr-shared-style">
 :host {
   --cr-dialog-width: 704px;
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/enhanced_network_tts_manifest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/enhanced_network_tts_manifest.json
index c707976..f79f88b 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/enhanced_network_tts_manifest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/enhanced_network_tts_manifest.json
@@ -2,7 +2,7 @@
   "key": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDncln/6lk4SWGmNLw4+40Z4I+pTk25rUZseUgibsHQnWJ88gu11T1hvbpCz7eNj1bCYqosUtTP405uT7TF/UxV+LrmmGuppbSN+gywdRAkSpjuMsPCU6xGwS998S0tuYgh9HoOEyE3g0VeeoSsfkM7P2yWouWGIMjsn5eWyvrm8nVT1ry7mZj44NLzRZIJotuFghJo8KhVkGuSqI2lRWbM7bSydzHyQhv1SLw+ETLqeZVXZU0HVoxgXV0aNgDu+qBG9ld645cThwHWROds9DX7JXUa1WzXageHy2M+O+P+Z2Gv8eAHOAdqopUUHTQEpKpkrZ5FLkYLLNNWjLgfBEanAgMBAAECggEASg2LgFeSLnFEPjK3WqAZ+IKiVLCKK/OmCcUQcHvxpXcF8SZc2tQcrK5Q71mYyEFpqA57lmz2TIHVMXRtScAO8Z8A5hE0uXYcfCTadIcwH/yCTAyQGBg/ke/z6x8ErpGjXgHkH6a9RQ7KXj1jP/GyPz2+17/NIopQ32z8yrGtb8DeQ/yyN+73xzyXFe+jR6QcdObmvPPDiquOYL/FftfscSMoBrtzbYaUpF376X43x/BLoa0FYSzEq/2R8HGUQ+WIBEUp1Pv2kv79acQI8p9J79Picbrum83vouMVScEMWsIssfvagJQ3LolJv93/8GvklodtLoN/GaNVZs10+LyRsQKBgQD2keLP2LCg0uDjDBa1y2xXtnHZKo/fY0JgAAvRIyKludO9KuF5wR4FXluyLrGCqKwO0TFKTNfrObnLp1kAo4DfN0JDfDzr/lGKcPwdv1ilAzqpwn+A9/HCOhBNlVgoICIH1HNnlEcxd4g/rwQDBrnOCpZgKpDR+c56SQ6uY51PKQKBgQDwTGXNvzwKGsmw2hlSZ9ny5/CexXV/Kk3WSoTtQvbAVENaCpaiGEjMEcv8y7mTim4lTu1lYgrSUUe/t/5h+z5sAdUWsOXKp460nK5XcopCkGQq+ps8skeNrYKIX21MQrEJYIX5CSt2wDMspBwJz0VTWu7ZI/I/AhDli+N+TwIxTwKBgQDd5oTc0QKEecPyEZsOmLg0Z/klm+xG+iluBByeZqRzyT0JbWHmFSpTYovbW7JdCDdwTkuxtl5LT3QqF709megM+sojudeJ+yKfGPeMPfwk5TcSN/xPsNReG6s4Z0MjOWfm7AfAG+3GUvDHf1Z48sCc8WJLwYL7tXlhDAauYu/boQKBgFGNfBeByXycbssImgNvn3Zi5TTdSu0njFcn30kuqtPHRTxvz4OfvkUT3SkkcwzxtEQRL1xzE70hPLqCVWEnhZ3eWVVkH/jROQtvCXRAOVAx9OzpNHo6/zHEK0LhMBTrpW3LRmyoggnBXRzPbXyezaZmfB1Rp8tehiGBgmnBorrdAoGBAKAQJSmavmNrUxAVBTLZJRnpf8EnESfHxai3lTYoGf8TFFSSzKTkyqCOEpzM0QJqUHuVTLqTRDmUzqfh60Z0P48Cq5p46/IY4ZvSZ9EIP4hZ0aR7OWUTct5AmVJ05FMvPW2Wv5YMxQeWVPPcvWA1IuFmkXDQfmzEFlcCoLzU2h80",
   "manifest_version": 2,
   "name": "__MSG_ENHANCED_NETWORK_TTS_NAME__",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "__MSG_ENHANCED_NETWORK_TTS_DESCRIPTION__",
   "background": {
     "page": "enhanced_network_tts/background.html"
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/enhanced_network_tts_manifest_guest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/enhanced_network_tts_manifest_guest.json
index f768fd7..14c8690 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/enhanced_network_tts_manifest_guest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/enhanced_network_tts_manifest_guest.json
@@ -2,7 +2,7 @@
   "key": "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDncln/6lk4SWGmNLw4+40Z4I+pTk25rUZseUgibsHQnWJ88gu11T1hvbpCz7eNj1bCYqosUtTP405uT7TF/UxV+LrmmGuppbSN+gywdRAkSpjuMsPCU6xGwS998S0tuYgh9HoOEyE3g0VeeoSsfkM7P2yWouWGIMjsn5eWyvrm8nVT1ry7mZj44NLzRZIJotuFghJo8KhVkGuSqI2lRWbM7bSydzHyQhv1SLw+ETLqeZVXZU0HVoxgXV0aNgDu+qBG9ld645cThwHWROds9DX7JXUa1WzXageHy2M+O+P+Z2Gv8eAHOAdqopUUHTQEpKpkrZ5FLkYLLNNWjLgfBEanAgMBAAECggEASg2LgFeSLnFEPjK3WqAZ+IKiVLCKK/OmCcUQcHvxpXcF8SZc2tQcrK5Q71mYyEFpqA57lmz2TIHVMXRtScAO8Z8A5hE0uXYcfCTadIcwH/yCTAyQGBg/ke/z6x8ErpGjXgHkH6a9RQ7KXj1jP/GyPz2+17/NIopQ32z8yrGtb8DeQ/yyN+73xzyXFe+jR6QcdObmvPPDiquOYL/FftfscSMoBrtzbYaUpF376X43x/BLoa0FYSzEq/2R8HGUQ+WIBEUp1Pv2kv79acQI8p9J79Picbrum83vouMVScEMWsIssfvagJQ3LolJv93/8GvklodtLoN/GaNVZs10+LyRsQKBgQD2keLP2LCg0uDjDBa1y2xXtnHZKo/fY0JgAAvRIyKludO9KuF5wR4FXluyLrGCqKwO0TFKTNfrObnLp1kAo4DfN0JDfDzr/lGKcPwdv1ilAzqpwn+A9/HCOhBNlVgoICIH1HNnlEcxd4g/rwQDBrnOCpZgKpDR+c56SQ6uY51PKQKBgQDwTGXNvzwKGsmw2hlSZ9ny5/CexXV/Kk3WSoTtQvbAVENaCpaiGEjMEcv8y7mTim4lTu1lYgrSUUe/t/5h+z5sAdUWsOXKp460nK5XcopCkGQq+ps8skeNrYKIX21MQrEJYIX5CSt2wDMspBwJz0VTWu7ZI/I/AhDli+N+TwIxTwKBgQDd5oTc0QKEecPyEZsOmLg0Z/klm+xG+iluBByeZqRzyT0JbWHmFSpTYovbW7JdCDdwTkuxtl5LT3QqF709megM+sojudeJ+yKfGPeMPfwk5TcSN/xPsNReG6s4Z0MjOWfm7AfAG+3GUvDHf1Z48sCc8WJLwYL7tXlhDAauYu/boQKBgFGNfBeByXycbssImgNvn3Zi5TTdSu0njFcn30kuqtPHRTxvz4OfvkUT3SkkcwzxtEQRL1xzE70hPLqCVWEnhZ3eWVVkH/jROQtvCXRAOVAx9OzpNHo6/zHEK0LhMBTrpW3LRmyoggnBXRzPbXyezaZmfB1Rp8tehiGBgmnBorrdAoGBAKAQJSmavmNrUxAVBTLZJRnpf8EnESfHxai3lTYoGf8TFFSSzKTkyqCOEpzM0QJqUHuVTLqTRDmUzqfh60Z0P48Cq5p46/IY4ZvSZ9EIP4hZ0aR7OWUTct5AmVJ05FMvPW2Wv5YMxQeWVPPcvWA1IuFmkXDQfmzEFlcCoLzU2h80",
   "manifest_version": 2,
   "name": "__MSG_ENHANCED_NETWORK_TTS_NAME__",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "__MSG_ENHANCED_NETWORK_TTS_DESCRIPTION__",
   "incognito": "split",
   "background": {
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak/options.html b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak/options.html
index 5e9f7c5..e1ec400 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak/options.html
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak/options.html
@@ -1,6 +1,8 @@
-<!-- Copyright 2017 The Chromium Authors
-     Use of this source code is governed by a BSD-style license that can be
-     found in the LICENSE file. -->
+<!--
+Copyright 2017 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
 <!doctype html>
 <html>
   <head>
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak_manifest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak_manifest.json
index 0da0c6c..66d9099 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak_manifest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak_manifest.json
@@ -2,7 +2,7 @@
   "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAukZ6JJWr0jHmFTkn0pcigpjI+cP0FqTo8FRIcCwy2fPeM+Ymf+7C9MK642i+Nhdr2qSsRF26AMIKbBdSDUnh04bfg5J/rKa/VO88LvXENYQMGhTo1y9mVg2OsbQJtEL9aTLU2G0SoKcr3g/+lggBKR5ydW1Qa0WGGAM9XrLm8iu/wn2uF4mfcMii6KfyEsAwWalpr/Td5WbtIoNNDpNeKO4ZSZJis1n9PZXqaOKpW7PqFDpEHw2PnPATxkcqj/wIx+Shgada0fhrzMlhXLhhj7ThSSWbuTz5n5NebuQ49/Z2ATgpBCSzYBVXEXMDe6LBBtGiZ/QR9UkA8Lz8bP6xIQIDAQAB",
   "manifest_version": 2,
   "name": "__MSG_SELECT_TO_SPEAK_NAME__",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "__MSG_SELECT_TO_SPEAK_DESCRIPTION__",
   "background": {
     "page": "select_to_speak/background.html"
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak_manifest_guest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak_manifest_guest.json
index 4f523ce..fb66fd7 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak_manifest_guest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/select_to_speak_manifest_guest.json
@@ -2,7 +2,7 @@
   "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAukZ6JJWr0jHmFTkn0pcigpjI+cP0FqTo8FRIcCwy2fPeM+Ymf+7C9MK642i+Nhdr2qSsRF26AMIKbBdSDUnh04bfg5J/rKa/VO88LvXENYQMGhTo1y9mVg2OsbQJtEL9aTLU2G0SoKcr3g/+lggBKR5ydW1Qa0WGGAM9XrLm8iu/wn2uF4mfcMii6KfyEsAwWalpr/Td5WbtIoNNDpNeKO4ZSZJis1n9PZXqaOKpW7PqFDpEHw2PnPATxkcqj/wIx+Shgada0fhrzMlhXLhhj7ThSSWbuTz5n5NebuQ49/Z2ATgpBCSzYBVXEXMDe6LBBtGiZ/QR9UkA8Lz8bP6xIQIDAQAB",
   "manifest_version": 2,
   "name": "__MSG_SELECT_TO_SPEAK_NAME__",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "__MSG_SELECT_TO_SPEAK_DESCRIPTION__",
   "incognito": "split",
   "background": {
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/switch_access_manifest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/switch_access_manifest.json
index 6e9cf58..9bbe4a8 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/switch_access_manifest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/switch_access_manifest.json
@@ -2,7 +2,7 @@
   "key": "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDVWTYdXNGhIG6FJKIhaohRRrYYGwg9cR2jea2NRBSEg+T7E3EvUyFy0ouez0N0omeSAL/xlvQtCjZJ72eCqDBgON/49SRtUdLS5TQ2U9cHYcIwI86llKMqqws6uMSwlWXldyNwKx5LVT1nR0+x3J744E2mymCSip2Y+NrGEA2yCUFL8D+O/uS+d5pVFb3NNjPTVbNOlhIs5ZUVX3FBij86ILivoSfRZMIZqK7MU8XDT1zolpFPiSYvDh1Qivwqar0pVYmNbCSjEgbGIuQh7zMaMdHC1HtvjbI20XFzWHyP/cW2YKszlfqawH+kdHSp4ANIjc7GCAjGJNxm33iMNwcFAgMBAAECggEAL47YakkzjZheKp3U6mAGDSAXHV6BQrkBY1yPXGstq7B/DZzy4RrF3QOkDf2jys8dCUXTg7YjrhqVqXuNdmmphvmGq8dxnFDeDxb6wZWE3GdlUzfYK77rdGp2cVuYtMhI05LwOmPSN/bDXk9eK4bDhTTy+lgomOH/aYcntXkEpIfVQ1kVs7RLvBs3tF3QfsL7t+aqphUlbyVRxCzogK3EDnLD0NODrydx5xB2UMKcxrQD8mVl8IhyBUeluWmcqVkIv7z9C9Y6s9HgcQdxsxhClymAsXtjkZVyP/xst9iwIxOyTijffcqbQOPtB9w1d7GWUrdpwCys0TveJslU7zo6jQKBgQD3VOJSiJuENck71q2Sg4yP0ytBNWVO7xLeTDc6OPEuhqtennWYFeprdplL8aejHqPFiNi7L2QVguP1JDLWPPu+RHHsZDtvG+stssE9Z+oVzBowDJZO1EvBH7nvqgxFz4utoDIrQmkbCcsBqOqwv1i7UdJ0DPIofZE/u0G8wONriwKBgQDc02xS5HZ8ysxEdhL9dC8FSvd12lHocEuBML5ufCkK4SUo8EFeg8k+2UVwd0xXwFNv3nKRPfr/yOQ0CRlKTo3IXXj4Uie+ww3j1jWIMPzC5Oo7IUHRd69KfLvG5N9byGv4wdsPKsXsGrUlvP4meD1U9fujxJdE9RC9evZss33prwKBgAQE7BydPbG7UgbX6UAtRRZ9PwGzRW8v8WWNZYRbsoeoBpbmClErYgDXD4ytY6UB9XVbUPJRxdWXp+6u5OiYWxrvb86AnnqiwIKgmgVOb/5kr7RCMBsd1hFQW6wqXkKwKbvrk4UiciTPVu4y+YVfxqhcnwflwfWofLjFaT8Q/2EbAoGANkdtr+5iRYhfr1BKmKwvRqDHtNtGGNlJZecCWAwC1p7C0I5FsyK3m9AyJlPcmxE2MSA/jv3qLWdG2JeH9ODcLuzy6C7hgB1X07H6lJBeANXd0Uz6ba96kdeZHGlzkY7xI0MbQl4kKkXiUvVijzgs8y5HfVi8SgHm7HxGCDASehcCgYEAnw1yu4eaWqsq7ECyjEBM7sQcMVGypiG3VupzLKA75iPkg/E+peUZyDRg7LPCiX/UcW22bliUw1ASRzY+thuVlGWC2CPah95Z4m+H4cJVSEEqKUbYRGfsDlDIJNxPihGvhoTniKZwvpUacbAhop7rbiAVGx+RJ+tFG8P56AbvBVE=",
   "manifest_version": 2,
   "name": "__MSG_SWITCH_ACCESS_NAME__",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "__MSG_SWITCH_ACCESS_DESCRIPTION__",
   "background": {
     "page": "switch_access/background.html"
diff --git a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/switch_access_manifest_guest.json b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/switch_access_manifest_guest.json
index f39b0bf..4d5b722 100644
--- a/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/switch_access_manifest_guest.json
+++ b/chroot/build/arm-generic/opt/google/chrome/resources/chromeos/accessibility/switch_access_manifest_guest.json
@@ -2,7 +2,7 @@
   "key": "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDVWTYdXNGhIG6FJKIhaohRRrYYGwg9cR2jea2NRBSEg+T7E3EvUyFy0ouez0N0omeSAL/xlvQtCjZJ72eCqDBgON/49SRtUdLS5TQ2U9cHYcIwI86llKMqqws6uMSwlWXldyNwKx5LVT1nR0+x3J744E2mymCSip2Y+NrGEA2yCUFL8D+O/uS+d5pVFb3NNjPTVbNOlhIs5ZUVX3FBij86ILivoSfRZMIZqK7MU8XDT1zolpFPiSYvDh1Qivwqar0pVYmNbCSjEgbGIuQh7zMaMdHC1HtvjbI20XFzWHyP/cW2YKszlfqawH+kdHSp4ANIjc7GCAjGJNxm33iMNwcFAgMBAAECggEAL47YakkzjZheKp3U6mAGDSAXHV6BQrkBY1yPXGstq7B/DZzy4RrF3QOkDf2jys8dCUXTg7YjrhqVqXuNdmmphvmGq8dxnFDeDxb6wZWE3GdlUzfYK77rdGp2cVuYtMhI05LwOmPSN/bDXk9eK4bDhTTy+lgomOH/aYcntXkEpIfVQ1kVs7RLvBs3tF3QfsL7t+aqphUlbyVRxCzogK3EDnLD0NODrydx5xB2UMKcxrQD8mVl8IhyBUeluWmcqVkIv7z9C9Y6s9HgcQdxsxhClymAsXtjkZVyP/xst9iwIxOyTijffcqbQOPtB9w1d7GWUrdpwCys0TveJslU7zo6jQKBgQD3VOJSiJuENck71q2Sg4yP0ytBNWVO7xLeTDc6OPEuhqtennWYFeprdplL8aejHqPFiNi7L2QVguP1JDLWPPu+RHHsZDtvG+stssE9Z+oVzBowDJZO1EvBH7nvqgxFz4utoDIrQmkbCcsBqOqwv1i7UdJ0DPIofZE/u0G8wONriwKBgQDc02xS5HZ8ysxEdhL9dC8FSvd12lHocEuBML5ufCkK4SUo8EFeg8k+2UVwd0xXwFNv3nKRPfr/yOQ0CRlKTo3IXXj4Uie+ww3j1jWIMPzC5Oo7IUHRd69KfLvG5N9byGv4wdsPKsXsGrUlvP4meD1U9fujxJdE9RC9evZss33prwKBgAQE7BydPbG7UgbX6UAtRRZ9PwGzRW8v8WWNZYRbsoeoBpbmClErYgDXD4ytY6UB9XVbUPJRxdWXp+6u5OiYWxrvb86AnnqiwIKgmgVOb/5kr7RCMBsd1hFQW6wqXkKwKbvrk4UiciTPVu4y+YVfxqhcnwflwfWofLjFaT8Q/2EbAoGANkdtr+5iRYhfr1BKmKwvRqDHtNtGGNlJZecCWAwC1p7C0I5FsyK3m9AyJlPcmxE2MSA/jv3qLWdG2JeH9ODcLuzy6C7hgB1X07H6lJBeANXd0Uz6ba96kdeZHGlzkY7xI0MbQl4kKkXiUvVijzgs8y5HfVi8SgHm7HxGCDASehcCgYEAnw1yu4eaWqsq7ECyjEBM7sQcMVGypiG3VupzLKA75iPkg/E+peUZyDRg7LPCiX/UcW22bliUw1ASRzY+thuVlGWC2CPah95Z4m+H4cJVSEEqKUbYRGfsDlDIJNxPihGvhoTniKZwvpUacbAhop7rbiAVGx+RJ+tFG8P56AbvBVE=",
   "manifest_version": 2,
   "name": "__MSG_SWITCH_ACCESS_NAME__",
-  "version": "107.0.5299.0",
+  "version": "107.0.5300.0",
   "description": "__MSG_SWITCH_ACCESS_DESCRIPTION__",
   "incognito": "split",
   "background": {
diff --git a/chroot/build/arm-generic/opt/google/lacros/metadata.json b/chroot/build/arm-generic/opt/google/lacros/metadata.json
index ae3432c..2ac2b69 100644
--- a/chroot/build/arm-generic/opt/google/lacros/metadata.json
+++ b/chroot/build/arm-generic/opt/google/lacros/metadata.json
@@ -1,6 +1,6 @@
 {
   "content": {
-    "version": "107.0.5299.0"
+    "version": "107.0.5300.0"
   },
   "metadata_version": 1
 }
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/common/mojo_type_utils.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/common/mojo_type_utils.cc
index 8155402..c20ea36 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/common/mojo_type_utils.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/common/mojo_type_utils.cc
@@ -197,6 +197,7 @@
       .FIELD(oem_name)
       .FIELD(boot_mode)
       .FIELD(os_version)
+      .FIELD(efi_platform_size)
       .GetResult();
 }
 
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_health_tool/telem/telem.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_health_tool/telem/telem.cc
index b77a7d9..0f5ca61 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_health_tool/telem/telem.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_health_tool/telem/telem.cc
@@ -384,6 +384,20 @@
   }
 }
 
+std::string EnumToString(mojom::OsInfo::EfiPlatformSize size) {
+  switch (size) {
+    case mojom::OsInfo::EfiPlatformSize::kUnmappedEnumField:
+      LOG(FATAL) << "Got UnmappedEnumField";
+      return "UnmappedEnumField";
+    case mojom::OsInfo::EfiPlatformSize::kUnknown:
+      return "unknown";
+    case mojom::OsInfo::EfiPlatformSize::k64:
+      return "64";
+    case mojom::OsInfo::EfiPlatformSize::k32:
+      return "32";
+  }
+}
+
 #define SET_DICT(key, info, output) SetJsonDictValue(#key, info->key, output);
 
 template <typename T>
@@ -1032,6 +1046,7 @@
   SET_DICT(marketing_name, os_info, out_os_info);
   SET_DICT(oem_name, os_info, out_os_info);
   SET_DICT(boot_mode, os_info, out_os_info);
+  SET_DICT(efi_platform_size, os_info, out_os_info);
 
   const auto& os_version = os_info->os_version;
   auto* out_os_version = out_os_info->SetKey(
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/executor.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/executor.cc
index 4d8c28a..bcb3199 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/executor.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/executor.cc
@@ -82,6 +82,8 @@
 // https://uefi.org/sites/default/files/resources/UEFI_Spec_2_9_2021_03_18.pdf
 constexpr char kUEFISecureBootVarPath[] =
     "/sys/firmware/efi/efivars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c";
+// Path to the UEFI platform size file.
+constexpr char kUEFIPlatformSizeFile[] = "/sys/firmware/efi/fw_platform_size";
 
 // All Mojo callbacks need to be ran by the Mojo task runner, so this provides a
 // convenient wrapper that can be bound and ran by that specific task runner.
@@ -91,6 +93,27 @@
   std::move(callback).Run(mojo_result.Clone());
 }
 
+// Reads file and reply the result to a callback. Will reply empty string if
+// cannot read the file.
+void ReadRawFileAndReplyCallback(
+    const base::FilePath& file,
+    base::OnceCallback<void(const std::string&)> callback) {
+  std::string content = "";
+  LOG_IF(ERROR, !base::ReadFileToString(file, &content))
+      << "Failed to read file: " << file;
+  std::move(callback).Run(content);
+}
+
+// Same as above but also trim the string.
+void ReadTrimFileAndReplyCallback(
+    const base::FilePath& file,
+    base::OnceCallback<void(const std::string&)> callback) {
+  std::string content = "";
+  LOG_IF(ERROR, !ReadAndTrimString(file, &content))
+      << "Failed to read or trim file: " << file;
+  std::move(callback).Run(content);
+}
+
 }  // namespace
 
 // Exported for testing.
@@ -326,14 +349,10 @@
 
 void Executor::GetProcessIOContents(const uint32_t pid,
                                     GetProcessIOContentsCallback callback) {
-  std::string result;
-
-  ReadAndTrimString(base::FilePath("/proc/")
-                        .Append(base::StringPrintf("%" PRId32, pid))
-                        .AppendASCII("io"),
-                    &result);
-
-  std::move(callback).Run(result);
+  ReadTrimFileAndReplyCallback(base::FilePath("/proc/")
+                                   .Append(base::StringPrintf("%" PRId32, pid))
+                                   .AppendASCII("io"),
+                               std::move(callback));
 }
 
 void Executor::ReadMsr(const uint32_t msr_reg,
@@ -369,16 +388,14 @@
 
 void Executor::GetUEFISecureBootContent(
     GetUEFISecureBootContentCallback callback) {
-  std::string content;
+  ReadRawFileAndReplyCallback(base::FilePath(kUEFISecureBootVarPath),
+                              std::move(callback));
+}
 
-  base::FilePath f = base::FilePath(kUEFISecureBootVarPath);
-  if (!base::ReadFileToString(f, &content)) {
-    LOG(ERROR) << "Failed to read file: " << f.value();
-    std::move(callback).Run("");
-    return;
-  }
-
-  std::move(callback).Run(content);
+void Executor::GetUEFIPlatformSizeContent(
+    GetUEFIPlatformSizeContentCallback callback) {
+  ReadTrimFileAndReplyCallback(base::FilePath{kUEFIPlatformSizeFile},
+                               std::move(callback));
 }
 
 void Executor::GetLidAngle(GetLidAngleCallback callback) {
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/executor.h b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/executor.h
index 7114797..2fc7d78 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/executor.h
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/executor.h
@@ -56,6 +56,8 @@
                ReadMsrCallback callback) override;
   void GetUEFISecureBootContent(
       GetUEFISecureBootContentCallback callback) override;
+  void GetUEFIPlatformSizeContent(
+      GetUEFIPlatformSizeContentCallback callback) override;
   void GetLidAngle(GetLidAngleCallback callback) override;
 
  private:
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/mock_executor.h b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/mock_executor.h
index cd57d92..39a6efb 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/mock_executor.h
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/executor/mock_executor.h
@@ -55,6 +55,10 @@
               GetUEFISecureBootContent,
               (GetUEFISecureBootContentCallback),
               (override));
+  MOCK_METHOD(void,
+              GetUEFIPlatformSizeContent,
+              (GetUEFIPlatformSizeContentCallback),
+              (override));
   MOCK_METHOD(void, GetLidAngle, (GetLidAngleCallback), (override));
 };
 
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetch_aggregator.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetch_aggregator.cc
index b390fc7..2cd5f2a 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetch_aggregator.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetch_aggregator.cc
@@ -53,7 +53,6 @@
       memory_fetcher_(context),
       network_fetcher_(context),
       stateful_partition_fetcher_(context),
-      system_fetcher_(context),
       timezone_fetcher_(context),
       tpm_fetcher_(context),
       network_interface_fetcher_(context),
@@ -125,8 +124,8 @@
         break;
       }
       case mojom::ProbeCategoryEnum::kSystem: {
-        system_fetcher_.FetchSystemInfo(
-            CreateFetchCallback(&barrier, &info->system_result));
+        FetchSystemInfo(context_,
+                        CreateFetchCallback(&barrier, &info->system_result));
         break;
       }
       case mojom::ProbeCategoryEnum::kNetwork: {
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetch_aggregator.h b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetch_aggregator.h
index b323a50..fde3774 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetch_aggregator.h
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetch_aggregator.h
@@ -62,7 +62,6 @@
   MemoryFetcher memory_fetcher_;
   NetworkFetcher network_fetcher_;
   StatefulPartitionFetcher stateful_partition_fetcher_;
-  SystemFetcher system_fetcher_;
   TimezoneFetcher timezone_fetcher_;
   TpmFetcher tpm_fetcher_;
   NetworkInterfaceFetcher network_interface_fetcher_;
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/fetch_system_info_fuzzer.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/fetch_system_info_fuzzer.cc
index 248b3cd..c56b763 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/fetch_system_info_fuzzer.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/fetch_system_info_fuzzer.cc
@@ -104,12 +104,11 @@
   mock_context.fake_system_config()->SetMarketingName("fake_marketing_name");
   mock_context.fake_system_config()->SetOemName("fake_oem_name");
   mock_context.fake_system_config()->SetCodeName("fake_code_name");
-  SystemFetcher system_fetcher{&mock_context};
 
   base::RunLoop run_loop;
   chromeos::cros_healthd::mojom::SystemResultPtr result;
-  system_fetcher.FetchSystemInfo(
-      base::BindOnce(&OnGetSystemInfoResponse, &result));
+  FetchSystemInfo(&mock_context,
+                  base::BindOnce(&OnGetSystemInfoResponse, &result));
   run_loop.RunUntilIdle();
 
   return 0;
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher.cc
index d23b8c9..3764603 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher.cc
@@ -4,6 +4,7 @@
 
 #include "diagnostics/cros_healthd/fetchers/system_fetcher.h"
 
+#include <memory>
 #include <string>
 #include <utility>
 
@@ -17,6 +18,7 @@
 #include <base/system/sys_info.h>
 
 #include "diagnostics/cros_healthd/fetchers/system_fetcher_constants.h"
+#include "diagnostics/cros_healthd/utils/callback_barrier.h"
 #include "diagnostics/cros_healthd/utils/error_utils.h"
 #include "diagnostics/cros_healthd/utils/file_utils.h"
 
@@ -24,19 +26,60 @@
 
 namespace {
 
+class State {
+ public:
+  explicit State(Context* context);
+  State(const State&) = delete;
+  State& operator=(const State&) = delete;
+  ~State();
+
+  static void Fetch(Context* context, FetchSystemInfoCallback callback);
+
+ private:
+  bool FetchCachedVpdInfo();
+
+  bool FetchDmiInfo();
+
+  bool GetLsbReleaseValue(const std::string& field, std::string& out_str);
+
+  bool FetchOsVersion(mojom::OsVersionPtr& os_version);
+
+  void FetchBootMode(mojom::BootMode& boot_mode);
+
+  bool FetchOsInfo();
+
+  void HandleSecureBootResponse(const std::string& content);
+
+  void HandleEfiPlatformSize(const std::string& context);
+
+  // Sets the error to be reported.
+  void SetError(mojom::ErrorType type, const std::string& message);
+
+  // Sends the result. If error is set it will be sent. Otherwise, sends the
+  // |info_| as the result.
+  void HandleResult(FetchSystemInfoCallback callback, bool success);
+
+  Context* const context_;
+  mojom::SystemInfoPtr info_;
+  mojom::ProbeErrorPtr error_;
+};
+
+State::State(Context* context)
+    : context_(context), info_(mojom::SystemInfo::New()) {}
+
+State::~State() = default;
+
 // Fetches information from DMI. Since there are several devices that do not
 // provide DMI information, these fields are optional in SystemInfo. As a
 // result, a missing DMI file does not indicate a ProbeError. A ProbeError is
 // reported when the "chassis_type" field cannot be successfully parsed into an
 // unsigned integer.
-bool FetchDmiInfo(const base::FilePath& root_dir,
-                  mojom::DmiInfoPtr* out_dmi_info,
-                  mojom::ProbeErrorPtr* out_error) {
-  const auto& dmi_path = root_dir.Append(kRelativePathDmiInfo);
-  // If dmi path doesn't exist, the device doesn't support dmi at all. It is
-  // considered as successful.
+bool State::FetchDmiInfo() {
+  const auto& dmi_path = context_->root_dir().Append(kRelativePathDmiInfo);
+  // If dmi path doesn't exist, the device doesn't support dmi at
+  // all. It is considered as successful.
   if (!base::DirectoryExists(dmi_path)) {
-    *out_dmi_info = nullptr;
+    info_->dmi_info = nullptr;
     return true;
   }
 
@@ -61,187 +104,202 @@
     if (base::StringToUint64(chassis_type_str, &chassis_type)) {
       dmi_info->chassis_type = mojom::NullableUint64::New(chassis_type);
     } else {
-      *out_error = CreateAndLogProbeError(
-          mojom::ErrorType::kParseError,
-          base::StringPrintf("Failed to convert chassis_type: %s",
-                             chassis_type_str.c_str()));
+      SetError(mojom::ErrorType::kParseError,
+               base::StringPrintf("Failed to convert chassis_type: %s",
+                                  chassis_type_str.c_str()));
       return false;
     }
   }
 
-  *out_dmi_info = std::move(dmi_info);
+  info_->dmi_info = std::move(dmi_info);
   return true;
 }
 
-bool FetchCachedVpdInfo(const base::FilePath& root_dir,
-                        bool has_sku_number,
-                        mojom::VpdInfoPtr* out_vpd_info,
-                        mojom::ProbeErrorPtr* out_error) {
+bool State::FetchCachedVpdInfo() {
   auto vpd_info = mojom::VpdInfo::New();
 
-  const auto ro_path = root_dir.Append(kRelativePathVpdRo);
+  const auto ro_path = context_->root_dir().Append(kRelativePathVpdRo);
   ReadAndTrimString(ro_path, kFileNameMfgDate, &vpd_info->mfg_date);
   ReadAndTrimString(ro_path, kFileNameModelName, &vpd_info->model_name);
   ReadAndTrimString(ro_path, kFileNameRegion, &vpd_info->region);
   ReadAndTrimString(ro_path, kFileNameSerialNumber, &vpd_info->serial_number);
-  if (has_sku_number &&
+  if (context_->system_config()->HasSkuNumber() &&
       !ReadAndTrimString(ro_path, kFileNameSkuNumber, &vpd_info->sku_number)) {
-    *out_error = CreateAndLogProbeError(
-        mojom::ErrorType::kFileReadError,
-        base::StringPrintf("Unable to read VPD file \"%s\" at path: %s",
-                           kFileNameSkuNumber, ro_path.value().c_str()));
+    SetError(mojom::ErrorType::kFileReadError,
+             base::StringPrintf("Unable to read VPD file \"%s\" at path: %s",
+                                kFileNameSkuNumber, ro_path.value().c_str()));
     return false;
   }
 
-  const auto rw_path = root_dir.Append(kRelativePathVpdRw);
+  const auto rw_path = context_->root_dir().Append(kRelativePathVpdRw);
   ReadAndTrimString(rw_path, kFileNameActivateDate, &vpd_info->activate_date);
 
   if (!base::DirectoryExists(ro_path) && !base::DirectoryExists(rw_path)) {
-    // If both the ro and rw path don't exist, sets the whole vpd_info to
-    // nullptr. This indicates that the vpd doesn't exist on this platform. It
-    // is considered as successful.
-    *out_vpd_info = nullptr;
+    // If both the ro and rw path don't exist, sets the whole
+    // vpd_info to nullptr. This indicates that the vpd doesn't
+    // exist on this platform. It is considered as successful.
+    info_->vpd_info = nullptr;
   } else {
-    *out_vpd_info = std::move(vpd_info);
+    info_->vpd_info = std::move(vpd_info);
   }
   return true;
 }
 
-bool GetLsbReleaseValue(const std::string& field,
-                        std::string* out_str,
-                        mojom::ProbeErrorPtr* out_error) {
-  if (base::SysInfo::GetLsbReleaseValue(field, out_str))
+bool State::GetLsbReleaseValue(const std::string& field, std::string& out_str) {
+  if (base::SysInfo::GetLsbReleaseValue(field, &out_str))
     return true;
 
-  *out_error = CreateAndLogProbeError(
-      mojom::ErrorType::kFileReadError,
-      base::StringPrintf("Unable to read %s from /etc/lsb-release",
-                         field.c_str()));
+  SetError(mojom::ErrorType::kFileReadError,
+           base::StringPrintf("Unable to read %s from /etc/lsb-release",
+                              field.c_str()));
   return false;
 }
 
-bool FetchOsVersion(mojom::OsVersionPtr* out_os_version,
-                    mojom::ProbeErrorPtr* out_error) {
-  auto os_version = mojom::OsVersion::New();
+bool State::FetchOsVersion(mojom::OsVersionPtr& os_version) {
+  os_version = mojom::OsVersion::New();
   if (!GetLsbReleaseValue("CHROMEOS_RELEASE_CHROME_MILESTONE",
-                          &os_version->release_milestone, out_error))
+                          os_version->release_milestone)) {
     return false;
+  }
   if (!GetLsbReleaseValue("CHROMEOS_RELEASE_BUILD_NUMBER",
-                          &os_version->build_number, out_error))
+                          os_version->build_number)) {
     return false;
+  }
   if (!GetLsbReleaseValue("CHROMEOS_RELEASE_PATCH_NUMBER",
-                          &os_version->patch_number, out_error))
+                          os_version->patch_number)) {
     return false;
+  }
   if (!GetLsbReleaseValue("CHROMEOS_RELEASE_TRACK",
-                          &os_version->release_channel, out_error))
+                          os_version->release_channel)) {
     return false;
-  *out_os_version = std::move(os_version);
+  }
   return true;
 }
 
-bool IsUEFISecureBoot(const std::string& s) {
-  if (s.size() != 5) {
-    LOG(ERROR) << "Expected 5 bytes from UEFISecureBoot variable, but got "
-               << s.size() << " bytes.";
-    return false;
-  }
-  // The first four bytes are the "attributes" of the variable.
-  // The last byte indicates the secure boot state.
-  switch (s.back()) {
-    case '\x00':
-      return false;
-    case '\x01':
-      return true;
-    default:
-      LOG(ERROR) << "Unexpected secure boot value: " << (uint32_t)(s.back());
-      return false;
-  }
-}
-
-void HandleSecureBootResponse(SystemFetcher::FetchSystemInfoCallback callback,
-                              mojom::SystemInfoPtr system_info,
-                              const std::string& content) {
-  DCHECK(system_info);
-
-  system_info->os_info->boot_mode = !IsUEFISecureBoot(content)
-                                        ? mojom::BootMode::kCrosEfi
-                                        : mojom::BootMode::kCrosEfiSecure;
-
-  std::move(callback).Run(
-      mojom::SystemResult::NewSystemInfo(std::move(system_info)));
-}
-
-}  // namespace
-
-void SystemFetcher::FetchBootMode(mojom::SystemInfoPtr system_info,
-                                  const base::FilePath& root_dir,
-                                  FetchSystemInfoCallback callback) {
-  mojom::BootMode* boot_mode = &system_info->os_info->boot_mode;
-  // default unknown if there's no match
-  *boot_mode = mojom::BootMode::kUnknown;
+void State::FetchBootMode(mojom::BootMode& boot_mode) {
+  // Default to unknown if there's no match.
+  boot_mode = mojom::BootMode::kUnknown;
 
   std::string cmdline;
-  const auto path = root_dir.Append(kFilePathProcCmdline);
-  if (!ReadAndTrimString(path, &cmdline)) {
-    std::move(callback).Run(
-        mojom::SystemResult::NewSystemInfo(std::move(system_info)));
+  const auto path = context_->root_dir().Append(kFilePathProcCmdline);
+  if (!ReadAndTrimString(path, &cmdline))
     return;
-  }
 
   auto tokens = base::SplitString(cmdline, " ", base::TRIM_WHITESPACE,
                                   base::SPLIT_WANT_NONEMPTY);
   for (const auto& token : tokens) {
     if (token == "cros_secure") {
-      *boot_mode = mojom::BootMode::kCrosSecure;
+      boot_mode = mojom::BootMode::kCrosSecure;
       break;
     }
     if (token == "cros_efi") {
-      context_->executor()->GetUEFISecureBootContent(
-          base::BindOnce(&HandleSecureBootResponse, std::move(callback),
-                         std::move(system_info)));
+      boot_mode = mojom::BootMode::kCrosEfi;
       return;
     }
     if (token == "cros_legacy") {
-      *boot_mode = mojom::BootMode::kCrosLegacy;
+      boot_mode = mojom::BootMode::kCrosLegacy;
       break;
     }
   }
-
-  std::move(callback).Run(
-      mojom::SystemResult::NewSystemInfo(std::move(system_info)));
 }
 
-bool SystemFetcher::FetchOsInfoWithoutBootMode(
-    mojom::OsInfoPtr* out_os_info, mojom::ProbeErrorPtr* out_error) {
+bool State::FetchOsInfo() {
   auto os_info = mojom::OsInfo::New();
   os_info->code_name = context_->system_config()->GetCodeName();
   os_info->marketing_name = context_->system_config()->GetMarketingName();
   os_info->oem_name = context_->system_config()->GetOemName();
-  if (!FetchOsVersion(&os_info->os_version, out_error))
+  if (!FetchOsVersion(os_info->os_version))
     return false;
-  *out_os_info = std::move(os_info);
+  FetchBootMode(os_info->boot_mode);
+  os_info->efi_platform_size = mojom::OsInfo::EfiPlatformSize::kUnknown;
+
+  info_->os_info = std::move(os_info);
   return true;
 }
 
-void SystemFetcher::FetchSystemInfo(FetchSystemInfoCallback callback) {
-  const auto& root_dir = context_->root_dir();
-  mojom::ProbeErrorPtr error;
-  auto system_info = mojom::SystemInfo::New();
+bool IsUEFISecureBoot(const std::string& content) {
+  if (content.size() != 5) {
+    LOG(ERROR) << "Expected 5 bytes from UEFISecureBoot "
+                  "variable, but got "
+               << content.size() << " bytes.";
+    return false;
+  }
+  // The first four bytes are the "attributes" of the variable.
+  // The last byte indicates the secure boot state.
+  switch (content.back()) {
+    case '\x00':
+      return false;
+    case '\x01':
+      return true;
+    default:
+      LOG(ERROR) << "Unexpected secure boot value: "
+                 << (uint32_t)(content.back());
+      return false;
+  }
+}
 
-  auto& vpd_info = system_info->vpd_info;
-  auto& dmi_info = system_info->dmi_info;
-  auto& os_info = system_info->os_info;
-  if (!FetchCachedVpdInfo(root_dir, context_->system_config()->HasSkuNumber(),
-                          &vpd_info, &error) ||
-      !FetchDmiInfo(root_dir, &dmi_info, &error) ||
-      !FetchOsInfoWithoutBootMode(&os_info, &error)) {
-    std::move(callback).Run(mojom::SystemResult::NewError(std::move(error)));
-    return;
+void State::HandleSecureBootResponse(const std::string& content) {
+  DCHECK_EQ(info_->os_info->boot_mode, mojom::BootMode::kCrosEfi);
+  if (IsUEFISecureBoot(content))
+    info_->os_info->boot_mode = mojom::BootMode::kCrosEfiSecure;
+}
+
+void State::HandleEfiPlatformSize(const std::string& content) {
+  if (content == "64") {
+    info_->os_info->efi_platform_size = mojom::OsInfo::EfiPlatformSize::k64;
+  } else if (content == "32") {
+    info_->os_info->efi_platform_size = mojom::OsInfo::EfiPlatformSize::k32;
+  } else {
+    info_->os_info->efi_platform_size =
+        mojom::OsInfo::EfiPlatformSize::kUnknown;
+    LOG(ERROR) << "Got unknown efi platform size: " << content;
+  }
+}
+
+void State::SetError(mojom::ErrorType type, const std::string& message) {
+  LOG(ERROR) << message;
+  // Ignore the error if there is already an error to be returned.
+  if (!error_)
+    error_ = mojom::ProbeError::New(type, message);
+}
+
+void State::HandleResult(FetchSystemInfoCallback callback, bool success) {
+  if (!success) {
+    SetError(mojom::ErrorType::kServiceUnavailable,
+             "Some async task cannot be finish.");
   }
 
-  // os_info.boot_mode requires ipc with executor, handle separately
-  FetchBootMode(std::move(system_info), context_->root_dir(),
-                std::move(callback));
+  std::move(callback).Run(
+      error_ ? mojom::SystemResult::NewError(std::move(error_))
+             : mojom::SystemResult::NewSystemInfo(std::move(info_)));
+}
+
+// static
+void State::Fetch(Context* context, FetchSystemInfoCallback callback) {
+  auto state = std::make_unique<State>(context);
+  State* state_ptr = state.get();
+  CallbackBarrier barrier{base::BindOnce(&State::HandleResult, std::move(state),
+                                         std::move(callback))};
+
+  if (!state_ptr->FetchCachedVpdInfo() || !state_ptr->FetchDmiInfo() ||
+      !state_ptr->FetchOsInfo())
+    return;
+
+  // `base::Unretained` is safe because `state` is hold by CallbackBarrier.
+  if (state_ptr->info_->os_info->boot_mode == mojom::BootMode::kCrosEfi) {
+    state_ptr->context_->executor()->GetUEFISecureBootContent(
+        barrier.Depend(base::BindOnce(&State::HandleSecureBootResponse,
+                                      base::Unretained(state_ptr))));
+    state_ptr->context_->executor()->GetUEFIPlatformSizeContent(
+        barrier.Depend(base::BindOnce(&State::HandleEfiPlatformSize,
+                                      base::Unretained(state_ptr))));
+  }
+}
+
+}  // namespace
+
+void FetchSystemInfo(Context* context, FetchSystemInfoCallback callback) {
+  State::Fetch(context, std::move(callback));
 }
 
 }  // namespace diagnostics
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher.h b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher.h
index 963b337..abcc6df 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher.h
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher.h
@@ -15,26 +15,14 @@
 
 namespace diagnostics {
 
-class SystemFetcher final : public BaseFetcher {
- public:
-  using FetchSystemInfoCallback =
-      base::OnceCallback<void(chromeos::cros_healthd::mojom::SystemResultPtr)>;
+namespace mojom = chromeos::cros_healthd::mojom;
 
-  using BaseFetcher::BaseFetcher;
-
-  // Returns either a structure with the system information or the error that
-  // occurred fetching the information.
-  void FetchSystemInfo(FetchSystemInfoCallback callback);
-
- private:
-  bool FetchOsInfoWithoutBootMode(
-      chromeos::cros_healthd::mojom::OsInfoPtr* out_os_info,
-      chromeos::cros_healthd::mojom::ProbeErrorPtr* out_error);
-
-  void FetchBootMode(chromeos::cros_healthd::mojom::SystemInfoPtr system_info,
-                     const base::FilePath& root_dir,
-                     FetchSystemInfoCallback callback);
-};
+// Fetches system info and pass the result to the callback. Returns either a
+// structure with the system information or the error that occurred fetching the
+// information.
+using FetchSystemInfoCallback =
+    base::OnceCallback<void(chromeos::cros_healthd::mojom::SystemResultPtr)>;
+void FetchSystemInfo(Context* context, FetchSystemInfoCallback callback);
 
 }  // namespace diagnostics
 
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher_test.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher_test.cc
index d18e91e..00224fe 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher_test.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/fetchers/system_fetcher_test.cc
@@ -13,6 +13,7 @@
 #include <base/files/file_util.h>
 #include <base/run_loop.h>
 #include <base/strings/stringprintf.h>
+#include <base/test/bind.h>
 #include <base/test/scoped_chromeos_version_info.h>
 #include <base/test/task_environment.h>
 #include <gtest/gtest.h>
@@ -41,11 +42,6 @@
   return std::nullopt;
 }
 
-void OnGetSystemInfoResponse(mojom::SystemResultPtr* response_update,
-                             mojom::SystemResultPtr response) {
-  *response_update = std::move(response);
-}
-
 class SystemUtilsTest : public BaseFileTest {
  protected:
   SystemUtilsTest() = default;
@@ -83,6 +79,7 @@
     os_info->marketing_name = "Latitude 1234 Chromebook Enterprise";
     os_info->oem_name = "FooOEM";
     os_info->boot_mode = mojom::BootMode::kCrosSecure;
+    os_info->efi_platform_size = mojom::OsInfo::EfiPlatformSize::kUnknown;
     auto& os_version = os_info->os_version;
     os_version = mojom::OsVersion::New();
     os_version->release_milestone = "87";
@@ -187,6 +184,16 @@
             })));
   }
 
+  void SetUEFIPlatformSizeResponse(const std::string& content) {
+    // Set the mock executor response.
+    EXPECT_CALL(*mock_executor(), GetUEFIPlatformSizeContent(_))
+        .WillOnce(WithArg<0>(Invoke(
+            [content](
+                mojom::Executor::GetUEFIPlatformSizeContentCallback callback) {
+              std::move(callback).Run(content);
+            })));
+  }
+
   // Sets the mock file with |value|. If the |value| is omitted, deletes the
   // file.
   template <typename T>
@@ -212,7 +219,7 @@
   }
 
   void ExpectFetchSystemInfo() {
-    auto system_result = FetchSystemInfo();
+    auto system_result = FetchSystemInfoSync();
     ASSERT_FALSE(system_result.is_null());
     ASSERT_FALSE(system_result->is_error());
     ASSERT_TRUE(system_result->is_system_info());
@@ -222,28 +229,33 @@
   }
 
   void ExpectFetchProbeError(const mojom::ErrorType& expected) {
-    auto system_result = FetchSystemInfo();
+    auto system_result = FetchSystemInfoSync();
     ASSERT_TRUE(system_result->is_error());
     EXPECT_EQ(system_result->get_error()->type, expected);
   }
 
  protected:
-  mojom::SystemInfoPtr expected_system_info_;
   MockExecutor* mock_executor() { return mock_context_.mock_executor(); }
-  mojom::SystemResultPtr FetchSystemInfo() {
+
+  mojom::SystemResultPtr FetchSystemInfoSync() {
     base::RunLoop run_loop;
     mojom::SystemResultPtr result;
-    system_fetcher_.FetchSystemInfo(
-        base::BindOnce(&OnGetSystemInfoResponse, &result));
-    run_loop.RunUntilIdle();
+    FetchSystemInfo(
+        &mock_context_,
+        base::BindLambdaForTesting([&](mojom::SystemResultPtr result_inner) {
+          result = std::move(result_inner);
+          run_loop.Quit();
+        }));
+    run_loop.Run();
     return result;
   }
 
+  mojom::SystemInfoPtr expected_system_info_;
+
  private:
   base::test::TaskEnvironment task_environment_{
       base::test::TaskEnvironment::ThreadingMode::MAIN_THREAD_ONLY};
   MockContext mock_context_;
-  SystemFetcher system_fetcher_{&mock_context_};
   base::FilePath relative_vpd_rw_dir_;
   base::FilePath relative_vpd_ro_dir_;
   base::FilePath relative_dmi_info_path_;
@@ -349,6 +361,7 @@
   expected_system_info_->os_info->boot_mode = mojom::BootMode::kCrosEfi;
   // Use string constructor to prevent string truncation from null bytes.
   SetUEFISecureBootResponse(std::string("\x00\x00\x00\x00\x00", 5));
+  SetUEFIPlatformSizeResponse("");
   SetSystemInfo(expected_system_info_);
   ExpectFetchSystemInfo();
 
@@ -363,19 +376,39 @@
   expected_system_info_->os_info->boot_mode = mojom::BootMode::kCrosEfiSecure;
   // Use string constructor to prevent string truncation from null bytes.
   SetUEFISecureBootResponse(std::string("\x00\x00\x00\x00\x01", 5));
+  SetUEFIPlatformSizeResponse("");
+  SetSystemInfo(expected_system_info_);
+  ExpectFetchSystemInfo();
+
+  // Test that the executor fails to read UEFISecureBoot file content and
+  // returns kCrosEfi as default value
+  expected_system_info_->os_info->boot_mode = mojom::BootMode::kCrosEfi;
+  SetUEFISecureBootResponse("");
+  SetUEFIPlatformSizeResponse("");
   SetSystemInfo(expected_system_info_);
   ExpectFetchSystemInfo();
 }
 
-// Test that the executor fails to read UEFISecureBoot file content and returns
-// kCrosEfi as default value
-TEST_F(SystemUtilsTest, TestUEFISecureBootFailure) {
+TEST_F(SystemUtilsTest, TestEfiPlatformSize) {
   expected_system_info_->os_info->boot_mode = mojom::BootMode::kCrosEfi;
-  EXPECT_CALL(*mock_executor(), GetUEFISecureBootContent(_))
-      .WillOnce(WithArg<0>(Invoke(
-          [](mojom::Executor::GetUEFISecureBootContentCallback callback) {
-            std::move(callback).Run("");
-          })));
+  expected_system_info_->os_info->efi_platform_size =
+      mojom::OsInfo::EfiPlatformSize::kUnknown;
+  SetUEFIPlatformSizeResponse("");
+  SetUEFISecureBootResponse(std::string("\x00\x00\x00\x00\x00", 5));
+  SetSystemInfo(expected_system_info_);
+  ExpectFetchSystemInfo();
+
+  expected_system_info_->os_info->efi_platform_size =
+      mojom::OsInfo::EfiPlatformSize::k64;
+  SetUEFIPlatformSizeResponse("64");
+  SetUEFISecureBootResponse(std::string("\x00\x00\x00\x00\x00", 5));
+  SetSystemInfo(expected_system_info_);
+  ExpectFetchSystemInfo();
+
+  expected_system_info_->os_info->efi_platform_size =
+      mojom::OsInfo::EfiPlatformSize::k32;
+  SetUEFIPlatformSizeResponse("32");
+  SetUEFISecureBootResponse(std::string("\x00\x00\x00\x00\x00", 5));
   SetSystemInfo(expected_system_info_);
   ExpectFetchSystemInfo();
 }
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/minijail/minijail_configuration.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/minijail/minijail_configuration.cc
index 9463f2c..92072fc 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/minijail/minijail_configuration.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/diagnostics-9999/work/diagnostics-9999/platform2/diagnostics/cros_healthd/minijail/minijail_configuration.cc
@@ -240,7 +240,7 @@
   }
 
   minijail_mount_with_data(j.get(), "tmpfs", "/sys", "tmpfs", 0, "");
-  BindMountIfPathExists(j.get(), base::FilePath("/sys/firmware/efi/efivars"));
+  BindMountIfPathExists(j.get(), base::FilePath("/sys/firmware/efi"));
 
   minijail_enter(j.get());
 }
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/missive-9999/work/missive-9999/platform2/missive/storage/storage_queue_test.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/missive-9999/work/missive-9999/platform2/missive/storage/storage_queue_test.cc
index 0cf9eae..22e362e 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/missive-9999/work/missive-9999/platform2/missive/storage/storage_queue_test.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/missive-9999/work/missive-9999/platform2/missive/storage/storage_queue_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2021 The ChromiumOS Authors
+// Copyright 2021 The ChromiumOS Authors.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -92,9 +92,12 @@
     ASSERT_TRUE(location_.CreateUniqueTempDir());
     dm_token_ = testing::get<1>(GetParam());
     options_.set_directory(base::FilePath(location_.GetPath()));
-    // Disallow uploads unless other expectation is set (any later EXPECT_CALL
-    // will take precedence over this one).
-    EXPECT_CALL(set_mock_uploader_expectations_, Call(_)).Times(0);
+    // Turn uploads to no-ops unless other expectation is set (any later
+    // EXPECT_CALL will take precedence over this one).
+    EXPECT_CALL(set_mock_uploader_expectations_, Call(_))
+        .WillRepeatedly(Invoke([this](UploaderInterface::UploadReason reason) {
+          return TestUploader::SetUpDummy(this);
+        }));
   }
 
   void TearDown() override {
@@ -141,8 +144,8 @@
   // the main test thread.
   class SequenceBoundUpload {
    public:
-    explicit SequenceBoundUpload(const MockUpload* mock_upload)
-        : mock_upload_(mock_upload) {
+    explicit SequenceBoundUpload(std::unique_ptr<const MockUpload> mock_upload)
+        : mock_upload_(std::move(mock_upload)) {
       DETACH_FROM_SEQUENCE(scoped_checker_);
       upload_progress_.assign("\nStart\n");
     }
@@ -229,7 +232,7 @@
     }
 
    private:
-    const MockUpload* const mock_upload_;
+    const std::unique_ptr<const MockUpload> mock_upload_;
 
     SEQUENCE_CHECKER(scoped_checker_);
 
@@ -362,8 +365,13 @@
         : uploader_id_(next_uploader_id.fetch_add(1)),
           last_upload_generation_id_(&self->last_upload_generation_id_),
           last_record_digest_map_(&self->last_record_digest_map_),
-          mock_upload_(&self->mock_upload_),
-          sequence_bound_upload_(self->main_task_runner_, &self->mock_upload_) {
+          // Allocate MockUpload as raw pointer and immediately wrap it in
+          // unique_ptr and pass to SequenceBoundUpload to own.
+          // MockUpload outlives TestUploader and is destructed together with
+          // SequenceBoundUpload (on a sequenced task runner).
+          mock_upload_(new ::testing::NiceMock<const MockUpload>()),
+          sequence_bound_upload_(self->main_task_runner_,
+                                 base::WrapUnique(mock_upload_)) {
       DETACH_FROM_SEQUENCE(test_uploader_checker_);
     }
 
@@ -441,6 +449,34 @@
           .WithArgs(uploader_id_, status);
     }
 
+    // Helper method for setting up dummy mock uploader expectations.
+    // To be used only for uploads that we want to just ignore and do not care
+    // about their outcome.
+    static std::unique_ptr<TestUploader> SetUpDummy(StorageQueueTest* self) {
+      auto uploader = std::make_unique<TestUploader>(self);
+      // Any Record, RecordFailure of Gap could be encountered, and
+      // returning false will cut the upload short.
+      EXPECT_CALL(*uploader->mock_upload_,
+                  UploadRecord(Eq(uploader->uploader_id_), _, _))
+          .InSequence(uploader->test_upload_sequence_)
+          .WillRepeatedly(Return(false));
+      EXPECT_CALL(*uploader->mock_upload_,
+                  UploadRecordFailure(Eq(uploader->uploader_id_), _, _))
+          .InSequence(uploader->test_upload_sequence_)
+          .WillRepeatedly(Return(false));
+      EXPECT_CALL(*uploader->mock_upload_,
+                  UploadGap(Eq(uploader->uploader_id_), _, _))
+          .InSequence(uploader->test_upload_sequence_)
+          .WillRepeatedly(Return(false));
+      // Complete will always happen last (whether records/gaps were
+      // encountered or not).
+      EXPECT_CALL(*uploader->mock_upload_,
+                  UploadComplete(Eq(uploader->uploader_id_), _))
+          .InSequence(uploader->test_upload_sequence_)
+          .Times(1);
+      return uploader;
+    }
+
    private:
     void VerifyRecord(SequenceInformation sequence_information,
                       WrappedRecord wrapped_record,
@@ -529,8 +565,7 @@
     LastRecordDigestMap* const last_record_digest_map_;
 
     const MockUpload* const mock_upload_;
-
-    base::SequenceBound<SequenceBoundUpload> sequence_bound_upload_;
+    const base::SequenceBound<SequenceBoundUpload> sequence_bound_upload_;
 
     Sequence test_encounter_sequence_;
     Sequence test_upload_sequence_;
@@ -706,8 +741,6 @@
   // digest. Serves all TestUploaders created by test fixture.
   TestUploader::LastRecordDigestMap last_record_digest_map_;
 
-  const ::testing::NiceMock<const MockUpload> mock_upload_;
-
   ::testing::MockFunction<StatusOr<std::unique_ptr<TestUploader>>(
       UploaderInterface::UploadReason /*reason*/)>
       set_mock_uploader_expectations_;
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/missive-9999/work/missive-9999/platform2/missive/storage/storage_test.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/missive-9999/work/missive-9999/platform2/missive/storage/storage_test.cc
index ed6d896..d3e8265 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/missive-9999/work/missive-9999/platform2/missive/storage/storage_test.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/missive-9999/work/missive-9999/platform2/missive/storage/storage_test.cc
@@ -1,4 +1,4 @@
-// Copyright 2021 The ChromiumOS Authors
+// Copyright 2021 The ChromiumOS Authors.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
@@ -219,9 +219,12 @@
     ASSERT_TRUE(location_.CreateUniqueTempDir());
     options_.set_directory(location_.GetPath());
 
-    // Disallow uploads unless other expectation is set (any later EXPECT_CALL
-    // will take precedence over this one).
-    EXPECT_CALL(set_mock_uploader_expectations_, Call(_)).Times(0);
+    // Turn uploads to no-ops unless other expectation is set (any later
+    // EXPECT_CALL will take precedence over this one).
+    EXPECT_CALL(set_mock_uploader_expectations_, Call(_))
+        .WillRepeatedly(Invoke([this](UploaderInterface::UploadReason reason) {
+          return TestUploader::SetUpDummy(this);
+        }));
     // Encryption is enabled by default.
     ASSERT_TRUE(EncryptionModuleInterface::is_enabled());
     if (is_encryption_enabled()) {
@@ -287,8 +290,8 @@
   // the main test thread.
   class SequenceBoundUpload {
    public:
-    explicit SequenceBoundUpload(const MockUpload* mock_upload)
-        : mock_upload_(mock_upload) {
+    explicit SequenceBoundUpload(std::unique_ptr<const MockUpload> mock_upload)
+        : mock_upload_(std::move(mock_upload)) {
       DETACH_FROM_SEQUENCE(scoped_checker_);
       upload_progress_.assign("\nStart\n");
     }
@@ -382,7 +385,7 @@
     }
 
    private:
-    const MockUpload* const mock_upload_;
+    const std::unique_ptr<const MockUpload> mock_upload_;
 
     SEQUENCE_CHECKER(scoped_checker_);
 
@@ -536,8 +539,13 @@
         : uploader_id_(next_uploader_id.fetch_add(1)),
           last_upload_generation_id_(&self->last_upload_generation_id_),
           last_record_digest_map_(&self->last_record_digest_map_),
-          mock_upload_(&self->mock_upload_),
-          sequence_bound_upload_(self->main_task_runner_, &self->mock_upload_),
+          // Allocate MockUpload as raw pointer and immediately wrap it in
+          // unique_ptr and pass to SequenceBoundUpload to own.
+          // MockUpload outlives TestUploader and is destructed together with
+          // SequenceBoundUpload (on a sequenced task runner).
+          mock_upload_(new ::testing::NiceMock<const MockUpload>()),
+          sequence_bound_upload_(self->main_task_runner_,
+                                 base::WrapUnique(mock_upload_)),
           decryptor_(self->decryptor_) {
       DETACH_FROM_SEQUENCE(test_uploader_checker_);
     }
@@ -635,6 +643,34 @@
           .WithArgs(uploader_id_, status);
     }
 
+    // Helper method for setting up dummy mock uploader expectations.
+    // To be used only for uploads that we want to just ignore and do not care
+    // about their outcome.
+    static std::unique_ptr<TestUploader> SetUpDummy(StorageTest* self) {
+      auto uploader = std::make_unique<TestUploader>(self);
+      // Any Record, RecordFailure of Gap could be encountered, and
+      // returning false will cut the upload short.
+      EXPECT_CALL(*uploader->mock_upload_,
+                  UploadRecord(Eq(uploader->uploader_id_), _, _, _))
+          .InSequence(uploader->test_upload_sequence_)
+          .WillRepeatedly(Return(false));
+      EXPECT_CALL(*uploader->mock_upload_,
+                  UploadRecordFailure(Eq(uploader->uploader_id_), _, _, _))
+          .InSequence(uploader->test_upload_sequence_)
+          .WillRepeatedly(Return(false));
+      EXPECT_CALL(*uploader->mock_upload_,
+                  UploadGap(Eq(uploader->uploader_id_), _, _, _))
+          .InSequence(uploader->test_upload_sequence_)
+          .WillRepeatedly(Return(false));
+      // Complete will always happen last (whether records/gaps were
+      // encountered or not).
+      EXPECT_CALL(*uploader->mock_upload_,
+                  UploadComplete(Eq(uploader->uploader_id_), _))
+          .InSequence(uploader->test_upload_sequence_)
+          .Times(1);
+      return uploader;
+    }
+
    private:
     void VerifyRecord(SequenceInformation sequence_information,
                       WrappedRecord wrapped_record,
@@ -727,8 +763,7 @@
     LastRecordDigestMap* const last_record_digest_map_;
 
     const MockUpload* const mock_upload_;
-
-    base::SequenceBound<SequenceBoundUpload> sequence_bound_upload_;
+    const base::SequenceBound<SequenceBoundUpload> sequence_bound_upload_;
 
     const scoped_refptr<test::Decryptor> decryptor_;
 
@@ -988,8 +1023,6 @@
   // digest. Serves all TestUploaders created by test fixture.
   TestUploader::LastRecordDigestMap last_record_digest_map_;
 
-  const ::testing::NiceMock<const MockUpload> mock_upload_;
-
   ::testing::MockFunction<StatusOr<std::unique_ptr<TestUploader>>(
       UploaderInterface::UploadReason /*reason*/)>
       set_mock_uploader_expectations_;
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/system_api-9999/work/build/out/Default/gen/include/runtime_probe/proto_bindings/runtime_probe.pb.cc b/chroot/build/arm-generic/tmp/portage/chromeos-base/system_api-9999/work/build/out/Default/gen/include/runtime_probe/proto_bindings/runtime_probe.pb.cc
index b2b869b..8ac4348 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/system_api-9999/work/build/out/Default/gen/include/runtime_probe/proto_bindings/runtime_probe.pb.cc
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/system_api-9999/work/build/out/Default/gen/include/runtime_probe/proto_bindings/runtime_probe.pb.cc
@@ -77,6 +77,7 @@
   , serial_number_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
   , path_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
   , technology_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
+  , chemistry_(&::PROTOBUF_NAMESPACE_ID::internal::fixed_address_empty_string)
   , index_(0)
   , charge_full_design_(0)
   , charge_full_(0)
@@ -466,6 +467,7 @@
   PROTOBUF_FIELD_OFFSET(::runtime_probe::Battery_Fields, path_),
   PROTOBUF_FIELD_OFFSET(::runtime_probe::Battery_Fields, manufacture_date_smart_),
   PROTOBUF_FIELD_OFFSET(::runtime_probe::Battery_Fields, technology_),
+  PROTOBUF_FIELD_OFFSET(::runtime_probe::Battery_Fields, chemistry_),
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::runtime_probe::Battery, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -697,25 +699,25 @@
   { 16, -1, -1, sizeof(::runtime_probe::AudioCodec_Fields)},
   { 23, -1, -1, sizeof(::runtime_probe::AudioCodec)},
   { 32, -1, -1, sizeof(::runtime_probe::Battery_Fields)},
-  { 53, -1, -1, sizeof(::runtime_probe::Battery)},
-  { 62, -1, -1, sizeof(::runtime_probe::Storage_Fields)},
-  { 85, -1, -1, sizeof(::runtime_probe::Storage)},
-  { 94, -1, -1, sizeof(::runtime_probe::VpdCached_Fields)},
-  { 101, -1, -1, sizeof(::runtime_probe::VpdCached)},
-  { 110, -1, -1, sizeof(::runtime_probe::Network_Fields)},
-  { 128, -1, -1, sizeof(::runtime_probe::Network)},
-  { 137, -1, -1, sizeof(::runtime_probe::Camera_Fields)},
-  { 149, -1, -1, sizeof(::runtime_probe::Camera)},
-  { 158, -1, -1, sizeof(::runtime_probe::InputDevice_Fields)},
-  { 173, -1, -1, sizeof(::runtime_probe::InputDevice)},
-  { 182, -1, -1, sizeof(::runtime_probe::Memory_Fields)},
-  { 191, -1, -1, sizeof(::runtime_probe::Memory)},
-  { 200, -1, -1, sizeof(::runtime_probe::Edid_Fields)},
-  { 211, -1, -1, sizeof(::runtime_probe::Edid)},
-  { 220, -1, -1, sizeof(::runtime_probe::ProbeResult)},
-  { 242, -1, -1, sizeof(::runtime_probe::ComponentFields)},
-  { 262, -1, -1, sizeof(::runtime_probe::GetKnownComponentsRequest)},
-  { 269, -1, -1, sizeof(::runtime_probe::GetKnownComponentsResult)},
+  { 54, -1, -1, sizeof(::runtime_probe::Battery)},
+  { 63, -1, -1, sizeof(::runtime_probe::Storage_Fields)},
+  { 86, -1, -1, sizeof(::runtime_probe::Storage)},
+  { 95, -1, -1, sizeof(::runtime_probe::VpdCached_Fields)},
+  { 102, -1, -1, sizeof(::runtime_probe::VpdCached)},
+  { 111, -1, -1, sizeof(::runtime_probe::Network_Fields)},
+  { 129, -1, -1, sizeof(::runtime_probe::Network)},
+  { 138, -1, -1, sizeof(::runtime_probe::Camera_Fields)},
+  { 150, -1, -1, sizeof(::runtime_probe::Camera)},
+  { 159, -1, -1, sizeof(::runtime_probe::InputDevice_Fields)},
+  { 174, -1, -1, sizeof(::runtime_probe::InputDevice)},
+  { 183, -1, -1, sizeof(::runtime_probe::Memory_Fields)},
+  { 192, -1, -1, sizeof(::runtime_probe::Memory)},
+  { 201, -1, -1, sizeof(::runtime_probe::Edid_Fields)},
+  { 212, -1, -1, sizeof(::runtime_probe::Edid)},
+  { 221, -1, -1, sizeof(::runtime_probe::ProbeResult)},
+  { 243, -1, -1, sizeof(::runtime_probe::ComponentFields)},
+  { 263, -1, -1, sizeof(::runtime_probe::GetKnownComponentsRequest)},
+  { 270, -1, -1, sizeof(::runtime_probe::GetKnownComponentsResult)},
 };
 
 static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
@@ -760,10 +762,10 @@
   "\001(\t\"\225\001\n\nAudioCodec\022\014\n\004name\030\001 \001(\t\0220\n\006valu"
   "es\030\002 \001(\0132 .runtime_probe.AudioCodec.Fiel"
   "ds\022/\n\013information\030\003 \001(\0132\032.runtime_probe."
-  "Information\032\026\n\006Fields\022\014\n\004name\030\001 \001(\t\"\326\003\n\007"
+  "Information\032\026\n\006Fields\022\014\n\004name\030\001 \001(\t\"\351\003\n\007"
   "Battery\022\014\n\004name\030\001 \001(\t\022-\n\006values\030\002 \001(\0132\035."
   "runtime_probe.Battery.Fields\022/\n\013informat"
-  "ion\030\003 \001(\0132\032.runtime_probe.Information\032\334\002"
+  "ion\030\003 \001(\0132\032.runtime_probe.Information\032\357\002"
   "\n\006Fields\022\r\n\005index\030\001 \001(\005\022\024\n\014manufacturer\030"
   "\002 \001(\t\022\022\n\nmodel_name\030\003 \001(\t\022\025\n\rserial_numb"
   "er\030\004 \001(\t\022\032\n\022charge_full_design\030\005 \001(\005\022\023\n\013"
@@ -772,172 +774,172 @@
   "\030\t \001(\005\022\031\n\021cycle_count_smart\030\n \001(\005\022\024\n\014sta"
   "tus_smart\030\013 \001(\005\022\031\n\021temperature_smart\030\014 \001"
   "(\005\022\014\n\004path\030\r \001(\t\022\036\n\026manufacture_date_sma"
-  "rt\030\016 \001(\005\022\022\n\ntechnology\030\017 \001(\t\"\267\003\n\007Storage"
-  "\022\014\n\004name\030\001 \001(\t\022-\n\006values\030\002 \001(\0132\035.runtime"
-  "_probe.Storage.Fields\022/\n\013information\030\003 \001"
-  "(\0132\032.runtime_probe.Information\032\275\002\n\006Field"
-  "s\022\014\n\004path\030\001 \001(\t\022\017\n\007sectors\030\002 \001(\003\022\014\n\004size"
-  "\030\003 \001(\003\022\014\n\004type\030\004 \001(\t\022\022\n\nmmc_manfid\030\005 \001(\r"
-  "\022\020\n\010mmc_name\030\006 \001(\t\022\021\n\tmmc_hwrev\030\017 \001(\r\022\017\n"
-  "\007mmc_prv\030\007 \001(\r\022\022\n\nmmc_serial\030\010 \001(\r\022\021\n\tmm"
-  "c_oemid\030\t \001(\r\022\022\n\npci_vendor\030\n \001(\r\022\022\n\npci"
-  "_device\030\013 \001(\r\022\021\n\tpci_class\030\014 \001(\r\022\022\n\nata_"
-  "vendor\030\r \001(\t\022\021\n\tata_model\030\016 \001(\t\022\022\n\nufs_v"
-  "endor\030\020 \001(\t\022\021\n\tufs_model\030\021 \001(\t\"\235\001\n\tVpdCa"
-  "ched\022\014\n\004name\030\001 \001(\t\022/\n\006values\030\002 \001(\0132\037.run"
-  "time_probe.VpdCached.Fields\022/\n\013informati"
-  "on\030\003 \001(\0132\032.runtime_probe.Information\032 \n\006"
-  "Fields\022\026\n\016vpd_sku_number\030\001 \001(\t\"\202\003\n\007Netwo"
-  "rk\022\014\n\004name\030\001 \001(\t\022-\n\006values\030\002 \001(\0132\035.runti"
-  "me_probe.Network.Fields\022/\n\013information\030\003"
-  " \001(\0132\032.runtime_probe.Information\032\210\002\n\006Fie"
-  "lds\022\014\n\004path\030\001 \001(\t\022\014\n\004type\030\002 \001(\t\022\020\n\010bus_t"
-  "ype\030\003 \001(\t\022\025\n\rpci_vendor_id\030\004 \001(\r\022\025\n\rpci_"
-  "device_id\030\005 \001(\r\022\024\n\014pci_revision\030\006 \001(\r\022\025\n"
-  "\rpci_subsystem\030\014 \001(\r\022\025\n\rusb_vendor_id\030\007 "
-  "\001(\r\022\026\n\016usb_product_id\030\010 \001(\r\022\026\n\016usb_bcd_d"
-  "evice\030\t \001(\r\022\026\n\016sdio_vendor_id\030\n \001(\r\022\026\n\016s"
-  "dio_device_id\030\013 \001(\r\"\233\002\n\006Camera\022\014\n\004name\030\001"
-  " \001(\t\022,\n\006values\030\002 \001(\0132\034.runtime_probe.Cam"
-  "era.Fields\022/\n\013information\030\003 \001(\0132\032.runtim"
-  "e_probe.Information\032\243\001\n\006Fields\022\014\n\004path\030\001"
-  " \001(\t\022\020\n\010bus_type\030\002 \001(\t\022\025\n\rusb_vendor_id\030"
-  "\003 \001(\r\022\026\n\016usb_product_id\030\004 \001(\r\022\026\n\016usb_bcd"
-  "_device\030\005 \001(\r\0222\n\rusb_removable\030\006 \001(\0162\033.r"
-  "untime_probe.UsbRemovable\"\250\003\n\013InputDevic"
-  "e\022\014\n\004name\030\001 \001(\t\0221\n\006values\030\002 \001(\0132!.runtim"
-  "e_probe.InputDevice.Fields\022/\n\013informatio"
-  "n\030\003 \001(\0132\032.runtime_probe.Information\032\274\001\n\006"
-  "Fields\022\014\n\004name\030\001 \001(\t\022\014\n\004path\030\002 \001(\t\022\r\n\005ev"
-  "ent\030\003 \001(\t\022\013\n\003bus\030\004 \001(\r\022\016\n\006vendor\030\005 \001(\r\022\017"
-  "\n\007product\030\006 \001(\r\022\017\n\007version\030\007 \001(\r\022\022\n\nfw_v"
-  "ersion\030\010 \001(\t\0224\n\013device_type\030\t \001(\0162\037.runt"
-  "ime_probe.InputDevice.Type\"h\n\004Type\022\024\n\020TY"
-  "PE_UNSPECIFIED\020\000\022\020\n\014TYPE_UNKNOWN\020\001\022\017\n\013TY"
-  "PE_STYLUS\020\002\022\021\n\rTYPE_TOUCHPAD\020\003\022\024\n\020TYPE_T"
-  "OUCHSCREEN\020\004\"\251\001\n\006Memory\022\014\n\004name\030\001 \001(\t\022,\n"
-  "\006values\030\002 \001(\0132\034.runtime_probe.Memory.Fie"
-  "lds\022/\n\013information\030\003 \001(\0132\032.runtime_probe"
-  ".Information\0322\n\006Fields\022\014\n\004part\030\001 \001(\t\022\014\n\004"
-  "size\030\002 \001(\r\022\014\n\004slot\030\003 \001(\r\"\221\024\n\004Edid\022\014\n\004nam"
-  "e\030\001 \001(\t\022*\n\006values\030\002 \001(\0132\032.runtime_probe."
-  "Edid.Fields\022/\n\013information\030\003 \001(\0132\032.runti"
-  "me_probe.Information\032Y\n\006Fields\022\014\n\004path\030\001"
-  " \001(\t\022\016\n\006vendor\030\002 \001(\t\022\022\n\nproduct_id\030\003 \001(\r"
-  "\022\016\n\006height\030\004 \001(\r\022\r\n\005width\030\005 \001(\r\"\302\022\n\006Vend"
-  "or\022\022\n\016VENDOR_UNKNOWN\020\000\022\016\n\nVENDOR_AAA\020\001\022\016"
-  "\n\nVENDOR_ACI\020=\022\016\n\nVENDOR_ACR\020F\022\016\n\nVENDOR"
-  "_ACT\020H\022\016\n\nVENDOR_ADA\020O\022\017\n\nVENDOR_AGO\020\253\001\022"
-  "\017\n\nVENDOR_AOP\020\374\002\022\017\n\nVENDOR_API\020\217\003\022\017\n\nVEN"
-  "DOR_APP\020\226\003\022\017\n\nVENDOR_ARD\020\276\003\022\017\n\nVENDOR_AR"
-  "T\020\316\003\022\017\n\nVENDOR_ASK\020\337\003\022\017\n\nVENDOR_ATO\020\375\003\022\017"
-  "\n\nVENDOR_AUO\020\227\004\022\017\n\nVENDOR_AUS\020\233\004\022\017\n\nVEND"
-  "OR_AVT\020\266\004\022\017\n\nVENDOR_BEL\020\230\006\022\017\n\nVENDOR_BMD"
-  "\020\340\007\022\017\n\nVENDOR_BNO\020\205\010\022\017\n\nVENDOR_BOE\020\225\010\022\017\n"
-  "\nVENDOR_BPS\020\275\010\022\017\n\nVENDOR_CAT\020\334\n\022\017\n\nVENDO"
-  "R_CHR\020\220\014\022\017\n\nVENDOR_CIN\020\246\014\022\017\n\nVENDOR_CMN\020"
-  "\216\r\022\017\n\nVENDOR_CMO\020\217\r\022\017\n\nVENDOR_CNC\020\235\r\022\017\n\n"
-  "VENDOR_CPL\020\332\r\022\017\n\nVENDOR_CPT\020\342\r\022\017\n\nVENDOR"
-  "_CRO\020\221\016\022\017\n\nVENDOR_CSO\020\253\016\022\017\n\nVENDOR_CTO\020\305"
-  "\016\022\017\n\nVENDOR_CTX\020\316\016\022\017\n\nVENDOR_CUK\020\333\016\022\017\n\nV"
-  "ENDOR_DEL\020\340\020\022\017\n\nVENDOR_DGC\020\213\021\022\017\n\nVENDOR_"
-  "DMO\020\263\022\022\017\n\nVENDOR_DON\020\346\022\022\017\n\nVENDOR_DPL\020\376\022"
-  "\022\017\n\nVENDOR_EGA\020\255\026\022\017\n\nVENDOR_ENC\020\345\027\022\017\n\nVE"
-  "NDOR_EPH\020\236\030\022\017\n\nVENDOR_EXN\020\364\031\022\017\n\nVENDOR_E"
-  "XP\020\366\031\022\017\n\nVENDOR_FNI\020\217\035\022\017\n\nVENDOR_FUS\020\317\036\022"
-  "\017\n\nVENDOR_GBT\020\206 \022\017\n\nVENDOR_GFN\020\350 \022\017\n\nVEN"
-  "DOR_GGL\020\200!\022\017\n\nVENDOR_GSM\020\271#\022\017\n\nVENDOR_HI"
-  "Q\020\335&\022\017\n\nVENDOR_HKC\020\203\'\022\017\n\nVENDOR_HOL\020\364\'\022\017"
-  "\n\nVENDOR_HPN\020\220(\022\017\n\nVENDOR_HSD\020\324(\022\017\n\nVEND"
-  "OR_HTC\020\355(\022\017\n\nVENDOR_HWP\020\310)\022\017\n\nVENDOR_HYT"
-  "\020\200*\022\017\n\nVENDOR_INO\020\201-\022\017\n\nVENDOR_INT\020\206-\022\017\n"
-  "\nVENDOR_INX\020\212-\022\017\n\nVENDOR_ITE\020\223.\022\017\n\nVENDO"
-  "R_IVM\020\317.\022\017\n\nVENDOR_IVO\020\321.\022\017\n\nVENDOR_JVC\020"
-  "\3513\022\017\n\nVENDOR_KDB\020\2705\022\017\n\nVENDOR_KDC\020\2715\022\017\n\n"
-  "VENDOR_KTC\020\3318\022\017\n\nVENDOR_LEN\020\202;\022\017\n\nVENDOR"
-  "_LGD\020\254;\022\017\n\nVENDOR_LNX\020\366<\022\017\n\nVENDOR_LPL\020\236"
-  "=\022\017\n\nVENDOR_LWR\020\332>\022\017\n\nVENDOR_MAX\020\310\?\022\017\n\nV"
-  "ENDOR_MEG\020\237@\022\017\n\nVENDOR_MEI\020\241@\022\017\n\nVENDOR_"
-  "MEL\020\244@\022\017\n\nVENDOR_MJI\020\243A\022\017\n\nVENDOR_MOM\020\251B"
-  "\022\017\n\nVENDOR_MST\020\230C\022\017\n\nVENDOR_MSX\020\234C\022\017\n\nVE"
-  "NDOR_MTC\020\241C\022\017\n\nVENDOR_MTX\020\266C\022\017\n\nVENDOR_N"
-  "CP\020\230E\022\017\n\nVENDOR_NCR\020\232E\022\017\n\nVENDOR_NEC\020\277E\022"
-  "\017\n\nVENDOR_NEX\020\324E\022\017\n\nVENDOR_NVD\020\372H\022\017\n\nVEN"
-  "DOR_ONK\020\325L\022\017\n\nVENDOR_ORN\020\300M\022\017\n\nVENDOR_OT"
-  "M\020\363M\022\017\n\nVENDOR_OVR\020\254N\022\017\n\nVENDOR_PAR\020\256O\022\017"
-  "\n\nVENDOR_PCC\020\323O\022\017\n\nVENDOR_PHL\020\336P\022\017\n\nVEND"
-  "OR_PIO\020\373P\022\017\n\nVENDOR_PLY\020\323Q\022\017\n\nVENDOR_PNR"
-  "\020\200R\022\017\n\nVENDOR_QDS\020\241U\022\017\n\nVENDOR_QNT\020\246W\022\017\n"
-  "\nVENDOR_RAT\020\370Y\022\017\n\nVENDOR_REN\020\332Z\022\017\n\nVENDO"
-  "R_RTK\020\335]\022\017\n\nVENDOR_SAM\020\225_\022\017\n\nVENDOR_SAN\020"
-  "\226_\022\017\n\nVENDOR_SDC\020\331_\022\017\n\nVENDOR_SEC\020\363_\022\017\n\n"
-  "VENDOR_SGT\020\270`\022\017\n\nVENDOR_SHP\020\316`\022\017\n\nVENDOR"
-  "_SII\020\341`\022\017\n\nVENDOR_SIS\020\353`\022\017\n\nVENDOR_SLA\020\247"
-  "a\022\017\n\nVENDOR_SMC\020\303a\022\017\n\nVENDOR_SNY\020\363a\022\017\n\nV"
-  "ENDOR_STA\020\367b\022\017\n\nVENDOR_STD\020\372b\022\017\n\nVENDOR_"
-  "STN\020\204c\022\017\n\nVENDOR_SVS\020\275c\022\017\n\nVENDOR_SYN\020\206d"
-  "\022\017\n\nVENDOR_TAI\020\265d\022\017\n\nVENDOR_TCL\020\354d\022\017\n\nVE"
-  "NDOR_TDC\020\375d\022\017\n\nVENDOR_TOP\020\250g\022\017\n\nVENDOR_T"
-  "OS\020\253g\022\017\n\nVENDOR_TSB\020\202h\022\017\n\nVENDOR_TST\020\224h\022"
-  "\017\n\nVENDOR_UNK\020\255l\022\017\n\nVENDOR_VES\020\357o\022\017\n\nVEN"
-  "DOR_VID\020\310p\022\017\n\nVENDOR_VIT\020\330p\022\017\n\nVENDOR_VI"
-  "Z\020\336p\022\017\n\nVENDOR_VSC\020\313r\022\017\n\nVENDOR_VTK\020\355r\022\017"
-  "\n\nVENDOR_WDE\020\353t\022\017\n\nVENDOR_WST\020\200x\022\017\n\nVEND"
-  "OR_WYS\020\233y\022\017\n\nVENDOR_XLX\020\362{\022\020\n\nVENDOR_YMH"
-  "\020\240\201\001\"\257\005\n\013ProbeResult\022\'\n\005error\030\001 \001(\0162\030.ru"
-  "ntime_probe.ErrorCode\022\035\n\025probe_config_ch"
-  "ecksum\030\006 \001(\t\022.\n\013audio_codec\030\002 \003(\0132\031.runt"
-  "ime_probe.AudioCodec\022\'\n\007battery\030\003 \003(\0132\026."
-  "runtime_probe.Battery\022\'\n\007storage\030\004 \003(\0132\026"
-  ".runtime_probe.Storage\022,\n\nvpd_cached\030\005 \003"
-  "(\0132\030.runtime_probe.VpdCached\022\'\n\007network\030"
-  "\007 \003(\0132\026.runtime_probe.Network\022%\n\006camera\030"
-  "\010 \003(\0132\025.runtime_probe.Camera\022*\n\006stylus\030\t"
-  " \003(\0132\032.runtime_probe.InputDevice\022,\n\010touc"
-  "hpad\030\n \003(\0132\032.runtime_probe.InputDevice\022/"
-  "\n\013touchscreen\030\013 \003(\0132\032.runtime_probe.Inpu"
-  "tDevice\022#\n\004dram\030\014 \003(\0132\025.runtime_probe.Me"
-  "mory\022*\n\rdisplay_panel\030\r \003(\0132\023.runtime_pr"
-  "obe.Edid\022(\n\010cellular\030\016 \003(\0132\026.runtime_pro"
-  "be.Network\022(\n\010ethernet\030\017 \003(\0132\026.runtime_p"
-  "robe.Network\022(\n\010wireless\030\020 \003(\0132\026.runtime"
-  "_probe.Network\"\313\005\n\017ComponentFields\0227\n\013au"
-  "dio_codec\030\001 \001(\0132 .runtime_probe.AudioCod"
-  "ec.FieldsH\000\0220\n\007battery\030\002 \001(\0132\035.runtime_p"
-  "robe.Battery.FieldsH\000\0220\n\007storage\030\003 \001(\0132\035"
-  ".runtime_probe.Storage.FieldsH\000\0225\n\nvpd_c"
-  "ached\030\004 \001(\0132\037.runtime_probe.VpdCached.Fi"
-  "eldsH\000\022.\n\006camera\030\005 \001(\0132\034.runtime_probe.C"
-  "amera.FieldsH\000\0223\n\006stylus\030\006 \001(\0132!.runtime"
-  "_probe.InputDevice.FieldsH\000\0225\n\010touchpad\030"
-  "\007 \001(\0132!.runtime_probe.InputDevice.Fields"
-  "H\000\0228\n\013touchscreen\030\010 \001(\0132!.runtime_probe."
-  "InputDevice.FieldsH\000\022,\n\004dram\030\t \001(\0132\034.run"
-  "time_probe.Memory.FieldsH\000\0223\n\rdisplay_pa"
-  "nel\030\n \001(\0132\032.runtime_probe.Edid.FieldsH\000\022"
-  "1\n\010cellular\030\013 \001(\0132\035.runtime_probe.Networ"
-  "k.FieldsH\000\0221\n\010ethernet\030\014 \001(\0132\035.runtime_p"
-  "robe.Network.FieldsH\000\0221\n\010wireless\030\r \001(\0132"
-  "\035.runtime_probe.Network.FieldsH\000B\022\n\020comp"
-  "onent_fields\"Z\n\031GetKnownComponentsReques"
-  "t\022=\n\010category\030\001 \001(\0162+.runtime_probe.Prob"
-  "eRequest.SupportCategory\"\\\n\030GetKnownComp"
-  "onentsResult\022\'\n\005error\030\001 \001(\0162\030.runtime_pr"
-  "obe.ErrorCode\022\027\n\017component_names\030\002 \003(\t*\203"
-  "\002\n\tErrorCode\022\037\n\033RUNTIME_PROBE_ERROR_NOT_"
-  "SET\020\000\022-\n)RUNTIME_PROBE_ERROR_PROBE_REQUE"
-  "ST_INVALID\020\001\022>\n:RUNTIME_PROBE_ERROR_PROB"
-  "E_CONFIG_INCOMPLETE_PROBE_FUNCTION\020\004\022,\n("
-  "RUNTIME_PROBE_ERROR_PROBE_RESULT_INVALID"
-  "\020\005\022,\n(RUNTIME_PROBE_ERROR_PROBE_CONFIG_I"
-  "NVALID\020\006\"\004\010\002\020\002\"\004\010\003\020\003*5\n\014UsbRemovable\022\013\n\007"
-  "UNKNOWN\020\000\022\r\n\tREMOVABLE\020\001\022\t\n\005FIXED\020\002B+Z)c"
-  "hromiumos/system_api/runtime_probe_proto"
-  "b\006proto3"
+  "rt\030\016 \001(\005\022\022\n\ntechnology\030\017 \001(\t\022\021\n\tchemistr"
+  "y\030\020 \001(\t\"\267\003\n\007Storage\022\014\n\004name\030\001 \001(\t\022-\n\006val"
+  "ues\030\002 \001(\0132\035.runtime_probe.Storage.Fields"
+  "\022/\n\013information\030\003 \001(\0132\032.runtime_probe.In"
+  "formation\032\275\002\n\006Fields\022\014\n\004path\030\001 \001(\t\022\017\n\007se"
+  "ctors\030\002 \001(\003\022\014\n\004size\030\003 \001(\003\022\014\n\004type\030\004 \001(\t\022"
+  "\022\n\nmmc_manfid\030\005 \001(\r\022\020\n\010mmc_name\030\006 \001(\t\022\021\n"
+  "\tmmc_hwrev\030\017 \001(\r\022\017\n\007mmc_prv\030\007 \001(\r\022\022\n\nmmc"
+  "_serial\030\010 \001(\r\022\021\n\tmmc_oemid\030\t \001(\r\022\022\n\npci_"
+  "vendor\030\n \001(\r\022\022\n\npci_device\030\013 \001(\r\022\021\n\tpci_"
+  "class\030\014 \001(\r\022\022\n\nata_vendor\030\r \001(\t\022\021\n\tata_m"
+  "odel\030\016 \001(\t\022\022\n\nufs_vendor\030\020 \001(\t\022\021\n\tufs_mo"
+  "del\030\021 \001(\t\"\235\001\n\tVpdCached\022\014\n\004name\030\001 \001(\t\022/\n"
+  "\006values\030\002 \001(\0132\037.runtime_probe.VpdCached."
+  "Fields\022/\n\013information\030\003 \001(\0132\032.runtime_pr"
+  "obe.Information\032 \n\006Fields\022\026\n\016vpd_sku_num"
+  "ber\030\001 \001(\t\"\202\003\n\007Network\022\014\n\004name\030\001 \001(\t\022-\n\006v"
+  "alues\030\002 \001(\0132\035.runtime_probe.Network.Fiel"
+  "ds\022/\n\013information\030\003 \001(\0132\032.runtime_probe."
+  "Information\032\210\002\n\006Fields\022\014\n\004path\030\001 \001(\t\022\014\n\004"
+  "type\030\002 \001(\t\022\020\n\010bus_type\030\003 \001(\t\022\025\n\rpci_vend"
+  "or_id\030\004 \001(\r\022\025\n\rpci_device_id\030\005 \001(\r\022\024\n\014pc"
+  "i_revision\030\006 \001(\r\022\025\n\rpci_subsystem\030\014 \001(\r\022"
+  "\025\n\rusb_vendor_id\030\007 \001(\r\022\026\n\016usb_product_id"
+  "\030\010 \001(\r\022\026\n\016usb_bcd_device\030\t \001(\r\022\026\n\016sdio_v"
+  "endor_id\030\n \001(\r\022\026\n\016sdio_device_id\030\013 \001(\r\"\233"
+  "\002\n\006Camera\022\014\n\004name\030\001 \001(\t\022,\n\006values\030\002 \001(\0132"
+  "\034.runtime_probe.Camera.Fields\022/\n\013informa"
+  "tion\030\003 \001(\0132\032.runtime_probe.Information\032\243"
+  "\001\n\006Fields\022\014\n\004path\030\001 \001(\t\022\020\n\010bus_type\030\002 \001("
+  "\t\022\025\n\rusb_vendor_id\030\003 \001(\r\022\026\n\016usb_product_"
+  "id\030\004 \001(\r\022\026\n\016usb_bcd_device\030\005 \001(\r\0222\n\rusb_"
+  "removable\030\006 \001(\0162\033.runtime_probe.UsbRemov"
+  "able\"\250\003\n\013InputDevice\022\014\n\004name\030\001 \001(\t\0221\n\006va"
+  "lues\030\002 \001(\0132!.runtime_probe.InputDevice.F"
+  "ields\022/\n\013information\030\003 \001(\0132\032.runtime_pro"
+  "be.Information\032\274\001\n\006Fields\022\014\n\004name\030\001 \001(\t\022"
+  "\014\n\004path\030\002 \001(\t\022\r\n\005event\030\003 \001(\t\022\013\n\003bus\030\004 \001("
+  "\r\022\016\n\006vendor\030\005 \001(\r\022\017\n\007product\030\006 \001(\r\022\017\n\007ve"
+  "rsion\030\007 \001(\r\022\022\n\nfw_version\030\010 \001(\t\0224\n\013devic"
+  "e_type\030\t \001(\0162\037.runtime_probe.InputDevice"
+  ".Type\"h\n\004Type\022\024\n\020TYPE_UNSPECIFIED\020\000\022\020\n\014T"
+  "YPE_UNKNOWN\020\001\022\017\n\013TYPE_STYLUS\020\002\022\021\n\rTYPE_T"
+  "OUCHPAD\020\003\022\024\n\020TYPE_TOUCHSCREEN\020\004\"\251\001\n\006Memo"
+  "ry\022\014\n\004name\030\001 \001(\t\022,\n\006values\030\002 \001(\0132\034.runti"
+  "me_probe.Memory.Fields\022/\n\013information\030\003 "
+  "\001(\0132\032.runtime_probe.Information\0322\n\006Field"
+  "s\022\014\n\004part\030\001 \001(\t\022\014\n\004size\030\002 \001(\r\022\014\n\004slot\030\003 "
+  "\001(\r\"\221\024\n\004Edid\022\014\n\004name\030\001 \001(\t\022*\n\006values\030\002 \001"
+  "(\0132\032.runtime_probe.Edid.Fields\022/\n\013inform"
+  "ation\030\003 \001(\0132\032.runtime_probe.Information\032"
+  "Y\n\006Fields\022\014\n\004path\030\001 \001(\t\022\016\n\006vendor\030\002 \001(\t\022"
+  "\022\n\nproduct_id\030\003 \001(\r\022\016\n\006height\030\004 \001(\r\022\r\n\005w"
+  "idth\030\005 \001(\r\"\302\022\n\006Vendor\022\022\n\016VENDOR_UNKNOWN\020"
+  "\000\022\016\n\nVENDOR_AAA\020\001\022\016\n\nVENDOR_ACI\020=\022\016\n\nVEN"
+  "DOR_ACR\020F\022\016\n\nVENDOR_ACT\020H\022\016\n\nVENDOR_ADA\020"
+  "O\022\017\n\nVENDOR_AGO\020\253\001\022\017\n\nVENDOR_AOP\020\374\002\022\017\n\nV"
+  "ENDOR_API\020\217\003\022\017\n\nVENDOR_APP\020\226\003\022\017\n\nVENDOR_"
+  "ARD\020\276\003\022\017\n\nVENDOR_ART\020\316\003\022\017\n\nVENDOR_ASK\020\337\003"
+  "\022\017\n\nVENDOR_ATO\020\375\003\022\017\n\nVENDOR_AUO\020\227\004\022\017\n\nVE"
+  "NDOR_AUS\020\233\004\022\017\n\nVENDOR_AVT\020\266\004\022\017\n\nVENDOR_B"
+  "EL\020\230\006\022\017\n\nVENDOR_BMD\020\340\007\022\017\n\nVENDOR_BNO\020\205\010\022"
+  "\017\n\nVENDOR_BOE\020\225\010\022\017\n\nVENDOR_BPS\020\275\010\022\017\n\nVEN"
+  "DOR_CAT\020\334\n\022\017\n\nVENDOR_CHR\020\220\014\022\017\n\nVENDOR_CI"
+  "N\020\246\014\022\017\n\nVENDOR_CMN\020\216\r\022\017\n\nVENDOR_CMO\020\217\r\022\017"
+  "\n\nVENDOR_CNC\020\235\r\022\017\n\nVENDOR_CPL\020\332\r\022\017\n\nVEND"
+  "OR_CPT\020\342\r\022\017\n\nVENDOR_CRO\020\221\016\022\017\n\nVENDOR_CSO"
+  "\020\253\016\022\017\n\nVENDOR_CTO\020\305\016\022\017\n\nVENDOR_CTX\020\316\016\022\017\n"
+  "\nVENDOR_CUK\020\333\016\022\017\n\nVENDOR_DEL\020\340\020\022\017\n\nVENDO"
+  "R_DGC\020\213\021\022\017\n\nVENDOR_DMO\020\263\022\022\017\n\nVENDOR_DON\020"
+  "\346\022\022\017\n\nVENDOR_DPL\020\376\022\022\017\n\nVENDOR_EGA\020\255\026\022\017\n\n"
+  "VENDOR_ENC\020\345\027\022\017\n\nVENDOR_EPH\020\236\030\022\017\n\nVENDOR"
+  "_EXN\020\364\031\022\017\n\nVENDOR_EXP\020\366\031\022\017\n\nVENDOR_FNI\020\217"
+  "\035\022\017\n\nVENDOR_FUS\020\317\036\022\017\n\nVENDOR_GBT\020\206 \022\017\n\nV"
+  "ENDOR_GFN\020\350 \022\017\n\nVENDOR_GGL\020\200!\022\017\n\nVENDOR_"
+  "GSM\020\271#\022\017\n\nVENDOR_HIQ\020\335&\022\017\n\nVENDOR_HKC\020\203\'"
+  "\022\017\n\nVENDOR_HOL\020\364\'\022\017\n\nVENDOR_HPN\020\220(\022\017\n\nVE"
+  "NDOR_HSD\020\324(\022\017\n\nVENDOR_HTC\020\355(\022\017\n\nVENDOR_H"
+  "WP\020\310)\022\017\n\nVENDOR_HYT\020\200*\022\017\n\nVENDOR_INO\020\201-\022"
+  "\017\n\nVENDOR_INT\020\206-\022\017\n\nVENDOR_INX\020\212-\022\017\n\nVEN"
+  "DOR_ITE\020\223.\022\017\n\nVENDOR_IVM\020\317.\022\017\n\nVENDOR_IV"
+  "O\020\321.\022\017\n\nVENDOR_JVC\020\3513\022\017\n\nVENDOR_KDB\020\2705\022\017"
+  "\n\nVENDOR_KDC\020\2715\022\017\n\nVENDOR_KTC\020\3318\022\017\n\nVEND"
+  "OR_LEN\020\202;\022\017\n\nVENDOR_LGD\020\254;\022\017\n\nVENDOR_LNX"
+  "\020\366<\022\017\n\nVENDOR_LPL\020\236=\022\017\n\nVENDOR_LWR\020\332>\022\017\n"
+  "\nVENDOR_MAX\020\310\?\022\017\n\nVENDOR_MEG\020\237@\022\017\n\nVENDO"
+  "R_MEI\020\241@\022\017\n\nVENDOR_MEL\020\244@\022\017\n\nVENDOR_MJI\020"
+  "\243A\022\017\n\nVENDOR_MOM\020\251B\022\017\n\nVENDOR_MST\020\230C\022\017\n\n"
+  "VENDOR_MSX\020\234C\022\017\n\nVENDOR_MTC\020\241C\022\017\n\nVENDOR"
+  "_MTX\020\266C\022\017\n\nVENDOR_NCP\020\230E\022\017\n\nVENDOR_NCR\020\232"
+  "E\022\017\n\nVENDOR_NEC\020\277E\022\017\n\nVENDOR_NEX\020\324E\022\017\n\nV"
+  "ENDOR_NVD\020\372H\022\017\n\nVENDOR_ONK\020\325L\022\017\n\nVENDOR_"
+  "ORN\020\300M\022\017\n\nVENDOR_OTM\020\363M\022\017\n\nVENDOR_OVR\020\254N"
+  "\022\017\n\nVENDOR_PAR\020\256O\022\017\n\nVENDOR_PCC\020\323O\022\017\n\nVE"
+  "NDOR_PHL\020\336P\022\017\n\nVENDOR_PIO\020\373P\022\017\n\nVENDOR_P"
+  "LY\020\323Q\022\017\n\nVENDOR_PNR\020\200R\022\017\n\nVENDOR_QDS\020\241U\022"
+  "\017\n\nVENDOR_QNT\020\246W\022\017\n\nVENDOR_RAT\020\370Y\022\017\n\nVEN"
+  "DOR_REN\020\332Z\022\017\n\nVENDOR_RTK\020\335]\022\017\n\nVENDOR_SA"
+  "M\020\225_\022\017\n\nVENDOR_SAN\020\226_\022\017\n\nVENDOR_SDC\020\331_\022\017"
+  "\n\nVENDOR_SEC\020\363_\022\017\n\nVENDOR_SGT\020\270`\022\017\n\nVEND"
+  "OR_SHP\020\316`\022\017\n\nVENDOR_SII\020\341`\022\017\n\nVENDOR_SIS"
+  "\020\353`\022\017\n\nVENDOR_SLA\020\247a\022\017\n\nVENDOR_SMC\020\303a\022\017\n"
+  "\nVENDOR_SNY\020\363a\022\017\n\nVENDOR_STA\020\367b\022\017\n\nVENDO"
+  "R_STD\020\372b\022\017\n\nVENDOR_STN\020\204c\022\017\n\nVENDOR_SVS\020"
+  "\275c\022\017\n\nVENDOR_SYN\020\206d\022\017\n\nVENDOR_TAI\020\265d\022\017\n\n"
+  "VENDOR_TCL\020\354d\022\017\n\nVENDOR_TDC\020\375d\022\017\n\nVENDOR"
+  "_TOP\020\250g\022\017\n\nVENDOR_TOS\020\253g\022\017\n\nVENDOR_TSB\020\202"
+  "h\022\017\n\nVENDOR_TST\020\224h\022\017\n\nVENDOR_UNK\020\255l\022\017\n\nV"
+  "ENDOR_VES\020\357o\022\017\n\nVENDOR_VID\020\310p\022\017\n\nVENDOR_"
+  "VIT\020\330p\022\017\n\nVENDOR_VIZ\020\336p\022\017\n\nVENDOR_VSC\020\313r"
+  "\022\017\n\nVENDOR_VTK\020\355r\022\017\n\nVENDOR_WDE\020\353t\022\017\n\nVE"
+  "NDOR_WST\020\200x\022\017\n\nVENDOR_WYS\020\233y\022\017\n\nVENDOR_X"
+  "LX\020\362{\022\020\n\nVENDOR_YMH\020\240\201\001\"\257\005\n\013ProbeResult\022"
+  "\'\n\005error\030\001 \001(\0162\030.runtime_probe.ErrorCode"
+  "\022\035\n\025probe_config_checksum\030\006 \001(\t\022.\n\013audio"
+  "_codec\030\002 \003(\0132\031.runtime_probe.AudioCodec\022"
+  "\'\n\007battery\030\003 \003(\0132\026.runtime_probe.Battery"
+  "\022\'\n\007storage\030\004 \003(\0132\026.runtime_probe.Storag"
+  "e\022,\n\nvpd_cached\030\005 \003(\0132\030.runtime_probe.Vp"
+  "dCached\022\'\n\007network\030\007 \003(\0132\026.runtime_probe"
+  ".Network\022%\n\006camera\030\010 \003(\0132\025.runtime_probe"
+  ".Camera\022*\n\006stylus\030\t \003(\0132\032.runtime_probe."
+  "InputDevice\022,\n\010touchpad\030\n \003(\0132\032.runtime_"
+  "probe.InputDevice\022/\n\013touchscreen\030\013 \003(\0132\032"
+  ".runtime_probe.InputDevice\022#\n\004dram\030\014 \003(\013"
+  "2\025.runtime_probe.Memory\022*\n\rdisplay_panel"
+  "\030\r \003(\0132\023.runtime_probe.Edid\022(\n\010cellular\030"
+  "\016 \003(\0132\026.runtime_probe.Network\022(\n\010etherne"
+  "t\030\017 \003(\0132\026.runtime_probe.Network\022(\n\010wirel"
+  "ess\030\020 \003(\0132\026.runtime_probe.Network\"\313\005\n\017Co"
+  "mponentFields\0227\n\013audio_codec\030\001 \001(\0132 .run"
+  "time_probe.AudioCodec.FieldsH\000\0220\n\007batter"
+  "y\030\002 \001(\0132\035.runtime_probe.Battery.FieldsH\000"
+  "\0220\n\007storage\030\003 \001(\0132\035.runtime_probe.Storag"
+  "e.FieldsH\000\0225\n\nvpd_cached\030\004 \001(\0132\037.runtime"
+  "_probe.VpdCached.FieldsH\000\022.\n\006camera\030\005 \001("
+  "\0132\034.runtime_probe.Camera.FieldsH\000\0223\n\006sty"
+  "lus\030\006 \001(\0132!.runtime_probe.InputDevice.Fi"
+  "eldsH\000\0225\n\010touchpad\030\007 \001(\0132!.runtime_probe"
+  ".InputDevice.FieldsH\000\0228\n\013touchscreen\030\010 \001"
+  "(\0132!.runtime_probe.InputDevice.FieldsH\000\022"
+  ",\n\004dram\030\t \001(\0132\034.runtime_probe.Memory.Fie"
+  "ldsH\000\0223\n\rdisplay_panel\030\n \001(\0132\032.runtime_p"
+  "robe.Edid.FieldsH\000\0221\n\010cellular\030\013 \001(\0132\035.r"
+  "untime_probe.Network.FieldsH\000\0221\n\010etherne"
+  "t\030\014 \001(\0132\035.runtime_probe.Network.FieldsH\000"
+  "\0221\n\010wireless\030\r \001(\0132\035.runtime_probe.Netwo"
+  "rk.FieldsH\000B\022\n\020component_fields\"Z\n\031GetKn"
+  "ownComponentsRequest\022=\n\010category\030\001 \001(\0162+"
+  ".runtime_probe.ProbeRequest.SupportCateg"
+  "ory\"\\\n\030GetKnownComponentsResult\022\'\n\005error"
+  "\030\001 \001(\0162\030.runtime_probe.ErrorCode\022\027\n\017comp"
+  "onent_names\030\002 \003(\t*\203\002\n\tErrorCode\022\037\n\033RUNTI"
+  "ME_PROBE_ERROR_NOT_SET\020\000\022-\n)RUNTIME_PROB"
+  "E_ERROR_PROBE_REQUEST_INVALID\020\001\022>\n:RUNTI"
+  "ME_PROBE_ERROR_PROBE_CONFIG_INCOMPLETE_P"
+  "ROBE_FUNCTION\020\004\022,\n(RUNTIME_PROBE_ERROR_P"
+  "ROBE_RESULT_INVALID\020\005\022,\n(RUNTIME_PROBE_E"
+  "RROR_PROBE_CONFIG_INVALID\020\006\"\004\010\002\020\002\"\004\010\003\020\003*"
+  "5\n\014UsbRemovable\022\013\n\007UNKNOWN\020\000\022\r\n\tREMOVABL"
+  "E\020\001\022\t\n\005FIXED\020\002B+Z)chromiumos/system_api/"
+  "runtime_probe_protob\006proto3"
   ;
 static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_runtime_5fprobe_2eproto_once;
 const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_runtime_5fprobe_2eproto = {
-  false, false, 7488, descriptor_table_protodef_runtime_5fprobe_2eproto, "runtime_probe.proto", 
+  false, false, 7507, descriptor_table_protodef_runtime_5fprobe_2eproto, "runtime_probe.proto", 
   &descriptor_table_runtime_5fprobe_2eproto_once, nullptr, 0, 24,
   schemas, file_default_instances, TableStruct_runtime_5fprobe_2eproto::offsets,
   file_level_metadata_runtime_5fprobe_2eproto, file_level_enum_descriptors_runtime_5fprobe_2eproto, file_level_service_descriptors_runtime_5fprobe_2eproto,
@@ -2364,6 +2366,14 @@
     technology_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_technology(), 
       GetArenaForAllocation());
   }
+  chemistry_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
+    chemistry_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
+  #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
+  if (!from._internal_chemistry().empty()) {
+    chemistry_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, from._internal_chemistry(), 
+      GetArenaForAllocation());
+  }
   ::memcpy(&index_, &from.index_,
     static_cast<size_t>(reinterpret_cast<char*>(&manufacture_date_smart_) -
     reinterpret_cast<char*>(&index_)) + sizeof(manufacture_date_smart_));
@@ -2391,6 +2401,10 @@
 #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
   technology_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
 #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
+chemistry_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
+  chemistry_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
+#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 ::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
     reinterpret_cast<char*>(&index_) - reinterpret_cast<char*>(this)),
     0, static_cast<size_t>(reinterpret_cast<char*>(&manufacture_date_smart_) -
@@ -2411,6 +2425,7 @@
   serial_number_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
   path_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
   technology_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
+  chemistry_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
 }
 
 void Battery_Fields::ArenaDtor(void* object) {
@@ -2434,6 +2449,7 @@
   serial_number_.ClearToEmpty();
   path_.ClearToEmpty();
   technology_.ClearToEmpty();
+  chemistry_.ClearToEmpty();
   ::memset(&index_, 0, static_cast<size_t>(
       reinterpret_cast<char*>(&manufacture_date_smart_) -
       reinterpret_cast<char*>(&index_)) + sizeof(manufacture_date_smart_));
@@ -2576,6 +2592,16 @@
         } else
           goto handle_unusual;
         continue;
+      // string chemistry = 16;
+      case 16:
+        if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 130)) {
+          auto str = _internal_mutable_chemistry();
+          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(str, ptr, ctx);
+          CHK_(::PROTOBUF_NAMESPACE_ID::internal::VerifyUTF8(str, "runtime_probe.Battery.Fields.chemistry"));
+          CHK_(ptr);
+        } else
+          goto handle_unusual;
+        continue;
       default:
         goto handle_unusual;
     }  // switch
@@ -2715,6 +2741,16 @@
         15, this->_internal_technology(), target);
   }
 
+  // string chemistry = 16;
+  if (!this->_internal_chemistry().empty()) {
+    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
+      this->_internal_chemistry().data(), static_cast<int>(this->_internal_chemistry().length()),
+      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
+      "runtime_probe.Battery.Fields.chemistry");
+    target = stream->WriteStringMaybeAliased(
+        16, this->_internal_chemistry(), target);
+  }
+
   if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
     target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
@@ -2766,6 +2802,13 @@
         this->_internal_technology());
   }
 
+  // string chemistry = 16;
+  if (!this->_internal_chemistry().empty()) {
+    total_size += 2 +
+      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
+        this->_internal_chemistry());
+  }
+
   // int32 index = 1;
   if (this->_internal_index() != 0) {
     total_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32SizePlusOne(this->_internal_index());
@@ -2853,6 +2896,9 @@
   if (!from._internal_technology().empty()) {
     _internal_set_technology(from._internal_technology());
   }
+  if (!from._internal_chemistry().empty()) {
+    _internal_set_chemistry(from._internal_chemistry());
+  }
   if (from._internal_index() != 0) {
     _internal_set_index(from._internal_index());
   }
@@ -2927,6 +2973,11 @@
       &technology_, lhs_arena,
       &other->technology_, rhs_arena
   );
+  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
+      &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
+      &chemistry_, lhs_arena,
+      &other->chemistry_, rhs_arena
+  );
   ::PROTOBUF_NAMESPACE_ID::internal::memswap<
       PROTOBUF_FIELD_OFFSET(Battery_Fields, manufacture_date_smart_)
       + sizeof(Battery_Fields::manufacture_date_smart_)
diff --git a/chroot/build/arm-generic/tmp/portage/chromeos-base/system_api-9999/work/build/out/Default/gen/include/runtime_probe/proto_bindings/runtime_probe.pb.h b/chroot/build/arm-generic/tmp/portage/chromeos-base/system_api-9999/work/build/out/Default/gen/include/runtime_probe/proto_bindings/runtime_probe.pb.h
index 570b483..88c3ced 100644
--- a/chroot/build/arm-generic/tmp/portage/chromeos-base/system_api-9999/work/build/out/Default/gen/include/runtime_probe/proto_bindings/runtime_probe.pb.h
+++ b/chroot/build/arm-generic/tmp/portage/chromeos-base/system_api-9999/work/build/out/Default/gen/include/runtime_probe/proto_bindings/runtime_probe.pb.h
@@ -1292,6 +1292,7 @@
     kSerialNumberFieldNumber = 4,
     kPathFieldNumber = 13,
     kTechnologyFieldNumber = 15,
+    kChemistryFieldNumber = 16,
     kIndexFieldNumber = 1,
     kChargeFullDesignFieldNumber = 5,
     kChargeFullFieldNumber = 6,
@@ -1373,6 +1374,20 @@
   std::string* _internal_mutable_technology();
   public:
 
+  // string chemistry = 16;
+  void clear_chemistry();
+  const std::string& chemistry() const;
+  template <typename ArgT0 = const std::string&, typename... ArgT>
+  void set_chemistry(ArgT0&& arg0, ArgT... args);
+  std::string* mutable_chemistry();
+  PROTOBUF_NODISCARD std::string* release_chemistry();
+  void set_allocated_chemistry(std::string* chemistry);
+  private:
+  const std::string& _internal_chemistry() const;
+  inline PROTOBUF_ALWAYS_INLINE void _internal_set_chemistry(const std::string& value);
+  std::string* _internal_mutable_chemistry();
+  public:
+
   // int32 index = 1;
   void clear_index();
   int32_t index() const;
@@ -1475,6 +1490,7 @@
   ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr serial_number_;
   ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr path_;
   ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr technology_;
+  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr chemistry_;
   int32_t index_;
   int32_t charge_full_design_;
   int32_t charge_full_;
@@ -7094,6 +7110,57 @@
   // @@protoc_insertion_point(field_set_allocated:runtime_probe.Battery.Fields.technology)
 }
 
+// string chemistry = 16;
+inline void Battery_Fields::clear_chemistry() {
+  chemistry_.ClearToEmpty();
+}
+inline const std::string& Battery_Fields::chemistry() const {
+  // @@protoc_insertion_point(field_get:runtime_probe.Battery.Fields.chemistry)
+  return _internal_chemistry();
+}
+template <typename ArgT0, typename... ArgT>
+inline PROTOBUF_ALWAYS_INLINE
+void Battery_Fields::set_chemistry(ArgT0&& arg0, ArgT... args) {
+ 
+ chemistry_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
+  // @@protoc_insertion_point(field_set:runtime_probe.Battery.Fields.chemistry)
+}
+inline std::string* Battery_Fields::mutable_chemistry() {
+  std::string* _s = _internal_mutable_chemistry();
+  // @@protoc_insertion_point(field_mutable:runtime_probe.Battery.Fields.chemistry)
+  return _s;
+}
+inline const std::string& Battery_Fields::_internal_chemistry() const {
+  return chemistry_.Get();
+}
+inline void Battery_Fields::_internal_set_chemistry(const std::string& value) {
+  
+  chemistry_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
+}
+inline std::string* Battery_Fields::_internal_mutable_chemistry() {
+  
+  return chemistry_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
+}
+inline std::string* Battery_Fields::release_chemistry() {
+  // @@protoc_insertion_point(field_release:runtime_probe.Battery.Fields.chemistry)
+  return chemistry_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
+}
+inline void Battery_Fields::set_allocated_chemistry(std::string* chemistry) {
+  if (chemistry != nullptr) {
+    
+  } else {
+    
+  }
+  chemistry_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), chemistry,
+      GetArenaForAllocation());
+#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
+  if (chemistry_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
+    chemistry_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
+  }
+#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
+  // @@protoc_insertion_point(field_set_allocated:runtime_probe.Battery.Fields.chemistry)
+}
+
 // -------------------------------------------------------------------
 
 // Battery
diff --git a/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/meson-log.txt b/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/meson-log.txt
index 0416b1f..e376765 100644
--- a/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/meson-log.txt
+++ b/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/meson-log.txt
@@ -1,4 +1,4 @@
-Build started at 2022-09-14T03:50:56.066226
+Build started at 2022-09-14T15:04:15.548432
 Main binary: /usr/bin/python3.6
 Build Options: -Ddefault_library=shared -Ddefault_programmer_name=internal -Dconfig_atahpt=false -Dconfig_atapromise=false -Dconfig_atavia=false -Dconfig_buspirate_spi=false -Dconfig_ch341a_spi=false -Dconfig_dediprog=false -Dconfig_developerbox_spi=false -Dconfig_digilent_spi=false -Dconfig_drkaiser=false -Dconfig_dummy=true -Dconfig_ft2232_spi=true -Dconfig_gfxnvidia=false -Dconfig_internal=true -Dconfig_it8212=true -Dconfig_jlink_spi=false -Dconfig_linux_mtd=true -Dconfig_linux_spi=true -Dconfig_mediatek_i2c_spi=true -Dconfig_mstarddc_spi=false -Dconfig_nic3com=false -Dconfig_nicintel_eeprom=false -Dconfig_nicintel_spi=false -Dconfig_nicintel=false -Dconfig_nicnatsemi=false -Dconfig_nicrealtek=false -Dconfig_ogp_spi=false -Dconfig_parade_lspcon=true -Dconfig_pickit2_spi=false -Dconfig_pony_spi=false -Dconfig_raiden_debug_spi=true -Dconfig_rayer_spi=false -Dconfig_realtek_mst_i2c_spi=true -Dconfig_satamv=false -Dconfig_satasii=false -Dconfig_serprog=true -Dconfig_stlinkv3_spi=true -Dconfig_usbblaster_spi=true -Dprint_wiki=true -Dprefix=/usr -Dlibdir=lib -Dlocalstatedir=/var/lib -Dsysconfdir=/etc -Dbuildtype=plain -Dwrap_mode=nodownload -Dbuild.pkg_config_path=/usr/share/pkgconfig -Dpkg_config_path=/usr/lib/pkgconfig:/usr/share/pkgconfig '--cross-file /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/meson.armv7a-cros-linux-gnueabihf.arm.ini' '--native-file /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/meson.x86_64-pc-linux-gnu.arm.ini'
 Python system: Linux
@@ -47,8 +47,8 @@
 Target machine cpu family: arm
 Target machine cpu: armv7a
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmphm984idr
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmphm984idr/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmphm984idr/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wshadow 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmposelw9nm
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmposelw9nm/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmposelw9nm/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wshadow 
 
 Code:
  extern int i;
@@ -60,8 +60,8 @@
  
 Compiler for C supports arguments -Wshadow: YES 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpezkuo0_k
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpezkuo0_k/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpezkuo0_k/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wmissing-prototypes 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp4bh43ccw
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp4bh43ccw/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp4bh43ccw/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wmissing-prototypes 
 
 Code:
  extern int i;
@@ -73,8 +73,8 @@
  
 Compiler for C supports arguments -Wmissing-prototypes: YES 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpik6iscs1
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpik6iscs1/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpik6iscs1/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wwrite-strings 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpi7age_62
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpi7age_62/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpi7age_62/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wwrite-strings 
 
 Code:
  extern int i;
@@ -86,8 +86,8 @@
  
 Compiler for C supports arguments -Wwrite-strings: YES 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmprt324eo1
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmprt324eo1/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmprt324eo1/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wunused-parameter -Wno-unused-parameter 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp5m_36q80
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp5m_36q80/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp5m_36q80/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wunused-parameter -Wno-unused-parameter 
 
 Code:
  extern int i;
@@ -99,8 +99,8 @@
  
 Compiler for C supports arguments -Wno-unused-parameter: YES 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpxtm1xydi
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpxtm1xydi/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpxtm1xydi/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Waddress-of-packed-member -Wno-address-of-packed-member 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpwhz7vl2j
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpwhz7vl2j/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpwhz7vl2j/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Waddress-of-packed-member -Wno-address-of-packed-member 
 
 Code:
  extern int i;
@@ -112,8 +112,8 @@
  
 Compiler for C supports arguments -Wno-address-of-packed-member: YES 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpp1i_h3ld
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpp1i_h3ld/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpp1i_h3ld/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wenum-conversion -Wno-enum-conversion 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpgniiru2l
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpgniiru2l/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpgniiru2l/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wenum-conversion -Wno-enum-conversion 
 
 Code:
  extern int i;
@@ -125,8 +125,8 @@
  
 Compiler for C supports arguments -Wno-enum-conversion: YES 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp0p2cw_wc
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp0p2cw_wc/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp0p2cw_wc/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wmissing-braces -Wno-missing-braces 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp4izjab0i
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp4izjab0i/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp4izjab0i/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -Wmissing-braces -Wno-missing-braces 
 
 Code:
  extern int i;
@@ -138,8 +138,8 @@
  
 Compiler for C supports arguments -Wno-missing-braces: YES 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpf_eh3cd9
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpf_eh3cd9/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpf_eh3cd9/output.exe -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -std=c99 -Wl,-O2 -Wl,--as-needed -Wl,--gc-sections -Wl,--icf=all 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmph4jnbf__
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmph4jnbf__/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmph4jnbf__/output.exe -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -std=c99 -Wl,-O2 -Wl,--as-needed -Wl,--gc-sections -Wl,--icf=all 
 
 Code:
  
@@ -166,8 +166,8 @@
  
 Checking for function "clock_gettime" : YES 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpiuge5n9x
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpiuge5n9x/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpiuge5n9x/output.exe -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -std=c99 -Wl,-O2 -Wl,--as-needed -Wl,--gc-sections -Wl,--icf=all 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp6syuguq8
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp6syuguq8/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp6syuguq8/output.exe -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -std=c99 -Wl,-O2 -Wl,--as-needed -Wl,--gc-sections -Wl,--icf=all 
 
 Code:
  
@@ -194,8 +194,8 @@
  
 Checking for function "strnlen" : YES 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp6lrx60eg
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp6lrx60eg/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp6lrx60eg/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -std=c99 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpfgp3h6gg
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpfgp3h6gg/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpfgp3h6gg/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument -std=c99 
 
 Code:
  
@@ -247,8 +247,8 @@
 Called `/build/arm-generic/build/bin/pkg-config --libs libusb-1.0` -> 0
 -L/build/arm-generic/usr/lib -lusb-1.0
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpwf3qm8g7
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpwf3qm8g7/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpwf3qm8g7/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpyxipewid
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpyxipewid/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpyxipewid/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
 
 Code:
  #include <stdio.h>
@@ -262,8 +262,8 @@
 Compiler stderr:
  
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp1jcexqf2
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp1jcexqf2/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp1jcexqf2/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpcf3qa1es
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpcf3qa1es/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpcf3qa1es/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
 
 Code:
  #include <stdio.h>
@@ -274,8 +274,8 @@
 Compiler stderr:
  
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp32xd68cn
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp32xd68cn/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp32xd68cn/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpaxmno17d
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpaxmno17d/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpaxmno17d/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
 
 Code:
  #include <stdio.h>
@@ -286,8 +286,8 @@
 Compiler stderr:
  
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmponyhkf35
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmponyhkf35/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmponyhkf35/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmplz6hbi05
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmplz6hbi05/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmplz6hbi05/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
 
 Code:
  #include <stdio.h>
@@ -298,8 +298,8 @@
 Compiler stderr:
  
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpyf6yfgnq
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpyf6yfgnq/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpyf6yfgnq/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp7s9w1o3e
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp7s9w1o3e/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp7s9w1o3e/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
 
 Code:
  #include <stdio.h>
@@ -310,8 +310,8 @@
 Compiler stderr:
  
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpxjinaq0n
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpxjinaq0n/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpxjinaq0n/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmphu5y_vk7
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmphu5y_vk7/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmphu5y_vk7/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
 
 Code:
  #include <stdio.h>
@@ -320,14 +320,14 @@
 Compiler stdout:
  
 Compiler stderr:
- /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpxjinaq0n/testfile.c:3:39: error: 'a' declared as an array with a negative size
+ /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmphu5y_vk7/testfile.c:3:39: error: 'a' declared as an array with a negative size
         int main(void) { static int a[1-2*!(sizeof(void *) > 7)]; a[0]=0; return 0; }
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~
 1 error generated.
 
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpt7qq9g_8
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpt7qq9g_8/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpt7qq9g_8/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpnrrx5z0m
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpnrrx5z0m/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpnrrx5z0m/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
 
 Code:
  #include <stdio.h>
@@ -338,8 +338,8 @@
 Compiler stderr:
  
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmps9b25o92
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmps9b25o92/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmps9b25o92/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp691efuqd
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp691efuqd/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp691efuqd/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument 
 
 Code:
  #include <stdio.h>
@@ -350,8 +350,8 @@
 Compiler stderr:
  
 Running compile:
-Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpdkoj0g2g
-Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpdkoj0g2g/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmpdkoj0g2g/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument --print-search-dirs 
+Working directory:  /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp7vm9xdib
+Command line:  armv7a-cros-linux-gnueabihf-clang /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp7vm9xdib/testfile.c -o /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-private/tmp7vm9xdib/output.obj -c -Os -pipe -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections -D_FILE_OFFSET_BITS=64 -O0 -Werror=implicit-function-declaration -Werror=unknown-warning-option -Werror=unused-command-line-argument -Werror=ignored-optimization-argument --print-search-dirs 
 
 Code:
  
diff --git a/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.json b/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.json
index e7bb543..829baad 100644
--- a/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.json
+++ b/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.json
@@ -1 +1 @@
-{"name": "cmocka test flashrom", "stdout": "Running [PosixPath('/mnt/host/source/src/platform2/common-mk/platform2_test.py'), '--sysroot', '/build/arm-generic', '--', '/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/tests/flashrom_unit_tests']\n[==========] Running 7 test(s).\n[ RUN      ] address_to_bits_test_success\n[       OK ] address_to_bits_test_success\n[ RUN      ] bitcount_test_success\n[       OK ] bitcount_test_success\n[ RUN      ] minmax_test_success\n[       OK ] minmax_test_success\n[ RUN      ] strcat_realloc_test_success\n[       OK ] strcat_realloc_test_success\n[ RUN      ] tolower_string_test_success\n[       OK ] tolower_string_test_success\n[ RUN      ] reverse_byte_test_success\n[       OK ] reverse_byte_test_success\n[ RUN      ] reverse_bytes_test_success\n[       OK ] reverse_bytes_test_success\n[==========] 7 test(s) run.\n[==========] Running 1 test(s).\n[ RUN      ] flashbuses_to_text_test_success\n[       OK ] flashbuses_to_text_test_success\n[==========] 1 test(s) run.\n[==========] Running 11 test(s).\n[ RUN      ] spi_write_enable_test_success\n[       OK ] spi_write_enable_test_success\n[ RUN      ] spi_write_disable_test_success\n[       OK ] spi_write_disable_test_success\n[ RUN      ] spi_read_chunked_test_success\n[       OK ] spi_read_chunked_test_success\n[ RUN      ] probe_spi_rdid_test_success\n[       OK ] probe_spi_rdid_test_success\n[ RUN      ] probe_spi_rdid4_test_success\n[       OK ] probe_spi_rdid4_test_success\n[ RUN      ] probe_spi_rems_test_success\n[       OK ] probe_spi_rems_test_success\n[ RUN      ] probe_spi_res1_test_success\n[       OK ] probe_spi_res1_test_success\n[ RUN      ] probe_spi_res2_test_success\n[       OK ] probe_spi_res2_test_success\n[ RUN      ] probe_spi_res3_test_success\n[       OK ] probe_spi_res3_test_success\n[ RUN      ] probe_spi_at25f_test_success\n[       OK ] probe_spi_at25f_test_success\n[ RUN      ] probe_spi_st95_test_success\n[       OK ] probe_spi_st95_test_success\n[==========] 11 test(s) run.\n[==========] Running 14 test(s).\n[ RUN      ] dummy_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=dummy ...\n... flashrom_programmer_init for programmer=dummy successful\nTesting flashrom_programmer_shutdown for programmer=dummy ...\n... flashrom_programmer_shutdown for programmer=dummy successful\n[       OK ] dummy_basic_lifecycle_test_success\n[ RUN      ] dummy_probe_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=dummy ...\n... flashrom_programmer_init for programmer=dummy successful\nTesting flashrom_flash_probe for programmer=dummy, chip=W25Q128.V ... \n... flashrom_flash_probe for programmer=dummy successful\nTesting flashrom_programmer_shutdown for programmer=dummy ...\n... flashrom_programmer_shutdown for programmer=dummy successful\n[       OK ] dummy_probe_lifecycle_test_success\n[ RUN      ] dummy_probe_variable_size_test_success\nTesting flashrom_programmer_init for programmer=dummy ...\n... flashrom_programmer_init for programmer=dummy successful\nTesting flashrom_flash_probe for programmer=dummy, chip=Opaque flash chip ... \n... flashrom_flash_probe for programmer=dummy successful\nTesting flashrom_programmer_shutdown for programmer=dummy ...\n... flashrom_programmer_shutdown for programmer=dummy successful\n[       OK ] dummy_probe_variable_size_test_success\n[ RUN      ] dummy_init_fails_unhandled_param_test_success\nTesting init error path for programmer=dummy with params: bus=spi,emulate=INVALID,unhandled=value ...\n... init failed with error code 1 as expected\nRunning programmer shutdown in case anything got registered...\n... completed\n[       OK ] dummy_init_fails_unhandled_param_test_success\n[ RUN      ] dummy_init_success_invalid_param_test_success\nTesting init error path for programmer=dummy with params: bus=spi,emulate=W25Q128FV,invalid=value ...\n... init failed with error code -238 as expected\nRunning programmer shutdown in case anything got registered...\n... completed\n[       OK ] dummy_init_success_invalid_param_test_success\n[ RUN      ] dummy_init_success_unhandled_param_test_success\nTesting init error path for programmer=dummy with params: bus=spi,emulate=W25Q128FV,voltage=3.5V ...\n... init failed with error code -238 as expected\nRunning programmer shutdown in case anything got registered...\n... completed\n[       OK ] dummy_init_success_unhandled_param_test_success\n[ RUN      ] nicrealtek_basic_lifecycle_test_success\n[  SKIPPED ] nicrealtek_basic_lifecycle_test_success\n[ RUN      ] raiden_debug_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=raiden_debug_spi ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap_libusb_init is called\n__wrap_libusb_get_device_list is called\n__wrap_libusb_get_bus_number is called\n__wrap_libusb_get_device_address is called\n__wrap_libusb_get_device_descriptor is called\n__wrap_libusb_get_config_descriptor is called\n__wrap_libusb_ref_device is called\n__wrap_libusb_free_device_list is called\n__wrap_libusb_open is called\n__wrap_libusb_get_configuration is called\n__wrap_libusb_set_auto_detach_kernel_driver is called\n__wrap_libusb_claim_interface is called\n__wrap_libusb_control_transfer is called\n... flashrom_programmer_init for programmer=raiden_debug_spi successful\nTesting flashrom_programmer_shutdown for programmer=raiden_debug_spi ...\n__wrap_libusb_control_transfer is called\n__wrap_libusb_unref_device is called\n__wrap_libusb_free_config_descriptor is called\n__wrap_libusb_exit is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=raiden_debug_spi successful\n[       OK ] raiden_debug_basic_lifecycle_test_success\n[ RUN      ] dediprog_basic_lifecycle_test_success\n[  SKIPPED ] dediprog_basic_lifecycle_test_success\n[ RUN      ] linux_mtd_probe_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=linux_mtd ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap_stat64 is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_stat64 is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_setvbuf is called\n... flashrom_programmer_init for programmer=linux_mtd successful\nTesting flashrom_flash_probe for programmer=linux_mtd, chip=Opaque flash chip ... \n... flashrom_flash_probe for programmer=linux_mtd successful\nTesting flashrom_programmer_shutdown for programmer=linux_mtd ...\n__wrap_fclose is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=linux_mtd successful\n[       OK ] linux_mtd_probe_lifecycle_test_success\n[ RUN      ] linux_spi_probe_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=linux_spi ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap___open64_2 is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_fopen64 is called\n__wrap___fgets_chk is called\n__wrap_fclose is called\n... flashrom_programmer_init for programmer=linux_spi successful\nTesting flashrom_flash_probe for programmer=linux_spi, chip=W25Q128.V ... \n__wrap_ioctl is called\n__wrap_ioctl is called\n... flashrom_flash_probe for programmer=linux_spi successful\nTesting flashrom_programmer_shutdown for programmer=linux_spi ...\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=linux_spi successful\n[       OK ] linux_spi_probe_lifecycle_test_success\n[ RUN      ] parade_lspcon_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=parade_lspcon ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap___open64_2 is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n... flashrom_programmer_init for programmer=parade_lspcon successful\nTesting flashrom_programmer_shutdown for programmer=parade_lspcon ...\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=parade_lspcon successful\n[       OK ] parade_lspcon_basic_lifecycle_test_success\n[ RUN      ] mediatek_i2c_spi_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=mediatek_i2c_spi ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap___open64_2 is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n... flashrom_programmer_init for programmer=mediatek_i2c_spi successful\nTesting flashrom_programmer_shutdown for programmer=mediatek_i2c_spi ...\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=mediatek_i2c_spi successful\n[       OK ] mediatek_i2c_spi_basic_lifecycle_test_success\n[ RUN      ] realtek_mst_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=realtek_mst_i2c_spi ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap___open64_2 is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n... flashrom_programmer_init for programmer=realtek_mst_i2c_spi successful\nTesting flashrom_programmer_shutdown for programmer=realtek_mst_i2c_spi ...\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=realtek_mst_i2c_spi successful\n[       OK ] realtek_mst_basic_lifecycle_test_success\n[==========] 14 test(s) run.\n[==========] Running 6 test(s).\n[ RUN      ] included_regions_dont_overlap_test_success\nCreating layout... done\nAdding and including first region... done, second (non-overlapping) region... done\nAsserting included regions do not overlap... done\nReleasing layout... done\n[       OK ] included_regions_dont_overlap_test_success\n[ RUN      ] included_regions_overlap_test_success\nCreating layout... done\nAdding and including first region... done, second (overlapping) region... done\nAsserting included regions overlap... done\nReleasing layout... done\n[       OK ] included_regions_overlap_test_success\n[ RUN      ] region_not_included_overlap_test_success\nCreating layout... done\nAdding and including first region... done, second (overlapping) region, not included... done\nAsserting included regions do not overlap... done\nReleasing layout... done\n[       OK ] region_not_included_overlap_test_success\n[ RUN      ] layout_pass_sanity_checks_test_success\nCreating layout with one included region... done\nAsserting region range... done\nLayout passes sanity checks... done\nReleasing layout... done\n[       OK ] layout_pass_sanity_checks_test_success\n[ RUN      ] layout_region_invalid_address_test_success\nCreating layout with one included region... done\nLayout does not pass sanity checks... done\nReleasing layout... done\n[       OK ] layout_region_invalid_address_test_success\n[ RUN      ] layout_region_invalid_range_test_success\nCreating layout with one included region... done\nLayout does not pass sanity checks... done\nReleasing layout... done\n[       OK ] layout_region_invalid_range_test_success\n[==========] 6 test(s) run.\n[==========] Running 8 test(s).\n[ RUN      ] erase_chip_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"\"... done\nErase chip operation started.\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nUnlock chip called\nRead chip called with start=0x0, len=0x800000\nErase chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] erase_chip_test_success\n[ RUN      ] erase_chip_with_dummyflasher_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"bus=spi,emulate=W25Q128FV\"... done\nErase chip operation started.\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nErase chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] erase_chip_with_dummyflasher_test_success\n[ RUN      ] read_chip_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"\"... done\nRead chip operation started.\nUnlock chip called\nRead chip called with start=0x0, len=0x800000\n__wrap_fopen64 is called\n__wrap_fwrite is called\n__wrap_fflush is called\n__wrap_fclose is called\nRead chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] read_chip_test_success\n[ RUN      ] read_chip_with_dummyflasher_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"bus=spi,emulate=W25Q128FV\"... done\nRead chip operation started.\n__wrap_fopen64 is called\n__wrap_fwrite is called\n__wrap_fflush is called\n__wrap_fclose is called\nRead chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] read_chip_with_dummyflasher_test_success\n[ RUN      ] write_chip_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"\"... done\nWrite chip operation started.\n__wrap_fileno is called\n__wrap_fdopen is called\n__wrap_fileno is called\n__wrap_fstat64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nUnlock chip called\nRead chip called with start=0x0, len=0x800000\nWrite chip called with start=0x0, len=0x200000\nWrite chip called with start=0x200000, len=0x200000\nWrite chip called with start=0x400000, len=0x200000\nWrite chip called with start=0x600000, len=0x200000\nWrite chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] write_chip_test_success\n[ RUN      ] write_chip_with_dummyflasher_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"bus=spi,emulate=W25Q128FV\"... done\nWrite chip operation started.\n__wrap_fileno is called\n__wrap_fdopen is called\n__wrap_fileno is called\n__wrap_fstat64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nWrite chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] write_chip_with_dummyflasher_test_success\n[ RUN      ] verify_chip_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"\"... done\nVerify chip operation started.\n__wrap_fileno is called\n__wrap_fdopen is called\n__wrap_fileno is called\n__wrap_fstat64 is called\n__wrap_fread is called\n__wrap_fclose is called\nUnlock chip called\nRead chip called with start=0x0, len=0x800000\nVerify chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] verify_chip_test_success\n[ RUN      ] verify_chip_with_dummyflasher_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"bus=spi,emulate=W25Q128FV\"... done\nWrite chip operation started.\n__wrap_fileno is called\n__wrap_fdopen is called\n__wrap_fileno is called\n__wrap_fstat64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nWrite chip operation done.\nVerify chip operation started.\nVerify chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] verify_chip_with_dummyflasher_test_success\n[==========] 8 test(s) run.\n[==========] Running 6 test(s).\n[ RUN      ] invalid_wp_range_dummyflasher_test_success\n[       OK ] invalid_wp_range_dummyflasher_test_success\n[ RUN      ] set_wp_range_dummyflasher_test_success\n[       OK ] set_wp_range_dummyflasher_test_success\n[ RUN      ] switch_wp_mode_dummyflasher_test_success\n[       OK ] switch_wp_mode_dummyflasher_test_success\n[ RUN      ] wp_init_from_status_dummyflasher_test_success\n[       OK ] wp_init_from_status_dummyflasher_test_success\n[ RUN      ] full_chip_erase_with_wp_dummyflasher_test_success\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\n[       OK ] full_chip_erase_with_wp_dummyflasher_test_success\n[ RUN      ] partial_chip_erase_with_wp_dummyflasher_test_success\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\n[       OK ] partial_chip_erase_with_wp_dummyflasher_test_success\n[==========] 6 test(s) run.\n", "result": "OK", "starttime": 1663152664.0786972, "duration": 10.880510330200195, "returncode": 0, "env": {"SANDBOX_MESSAGE_P@TH": "/proc/11586/fd/2", "SLOT": "0/0", "SHELL": "/bin/bash", "RUBY_TARGETS": "", "PORTAGE_INST_UID": "0", "KERNEL_ABI": "arm", "PORTAGE_PYTHONPATH": "/usr/lib64/python3.6/site-packages", "QEMU_SOFTMMU_TARGETS": "", "PORTAGE_FEATURES": "allow-missing-manifests assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg clean-logs config-protect-if-modified distlocks fixlafiles force-mirror ipc-sandbox multilib-strict network-sandbox noclean nodoc noinfo noman parallel-fetch parallel-install protect-owned sandbox sfperms splitdebug test unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr", "cros_setup_hooks_run": "booya", "ESYSROOT": "/build/arm-generic", "PYTHON_COMPAT_OVERRIDE": "python3_6", "LESS": "-R -M --shift 5", "SUDO_GID": "1000", "BOTO_CONFIG": "", "ROOTPATH": "/opt/bin:/usr/lib/llvm/bin", "USE_EXPAND_VALUES_KERNEL": "AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt", "PORTAGE_PYTHON": "/usr/bin/python3.6m", "PYTHON_SINGLE_TARGET": "", "BOARD_COMPILER_FLAGS": "-march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard", "PROFILE_ONLY_VARIABLES": "ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND", "SYMLINK_LIB": "no", "TSAN_OPTIONS": " log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan", "PKG_CONFIG_PATH": "/usr/lib/pkgconfig", "SANDBOX_ACTIVE": "armedandready", "LLVM_PROFILE_FILE": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/coverage_logs/flashrom-0.9.9_%9m.profraw", "LINUX_FIRMWARE": "", "USERLAND": "GNU", "CPU_FLAGS_X86": "", "PKG_TMPDIR": "/build/arm-generic/tmp/portage/._unmerge_", "PKGUSE": "", "USE_EXPAND_VALUES_USERLAND": "BSD GNU", "CHOST_arm": "arm-unknown-linux-gnu", "TTY_CONSOLE": "", "SANDBOX_ON": "1", "IUSE_EFFECTIVE": "alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 asan atahpt atapromise atavia buspirate_spi ch341a_spi coverage cros_host cros_workon_tree_121d6ec074232b3094218bca967b5335212c962d dediprog developerbox_spi digilent_spi drkaiser dummy elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_bionic elibc_glibc elibc_mingw elibc_mintlib elibc_musl elibc_uclibc ft2232_spi fuzzer gfxnvidia hppa hppa-hpux ia64 ia64-hpux ia64-linux internal it8212 jlink_spi kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux linux_mtd linux_spi m68k m68k-mint mediatek_i2c_spi mips msan mstarddc_spi nic3com nicintel nicintel_eeprom nicintel_spi nicnatsemi nicrealtek nios2 ogp_spi parade_lspcon pickit2_spi pony_spi ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest prefix-stack raiden_debug_spi rayer_spi realtek_mst_i2c_spi riscv s390 satamv satasii serprog sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris static stlinkv3_spi test tsan ubsan usbblaster_spi userland_BSD userland_GNU wiki x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt", "EPREFIX": "", "STRINGS": "llvm-strings", "EBUILD_PHASE_FUNC": "src_test", "RESUMECOMMAND_CIPD": "/mnt/host/source/chromite/bin/fetch_cipd \"${URI}\" \"${DISTDIR}/${FILE}\"", "CAMERAS": "", "CURL_SSL": "", "PORTAGE_IPC_DAEMON": "1", "PORTAGE_BUNZIP2_COMMAND": "lbzip2 -d", "PROPERTIES": "live live", "EBUILD_PHASE": "test", "IUSE_IMPLICIT": "prefix prefix-guest prefix-stack", "FRITZCAPI_CARDS": "", "CXXEXCEPTIONS_FLAGS": "-fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables", "SUDO_COMMAND": "/bin/bash -c FEATURES=\"noclean test\" parallel_emerge --board arm-generic chromeos-base/libchrome chromeos-base/system_api chromeos-base/libbrillo chromeos-base/libhwsec-foundation chromeos-base/tpm_manager-client chromeos-base/libtpmcrypto chromeos-base/libhwsec chromeos-base/metrics chromeos-base/attestation-client chromeos-base/tpm_manager chromeos-base/chaps media-libs/cros-camera-libfs chromeos-base/cros-camera-android-deps chromeos-base/chromeos-config-tools chromeos-base/bootstat chromeos-base/shill-client chromeos-base/power_manager-client chromeos-base/cryptohome-client chromeos-base/secure-erase-file chromeos-base/cbor chromeos-base/bootlockbox-client chromeos-base/biod_proxy chromeos-base/attestation chromeos-base/chromeos-common-script chromeos-base/cros-camera-libs chromeos-base/libmems chromeos-base/session_manager-client chromeos-base/shill chromeos-base/shill-net chromeos-base/runtime_probe dev-libs/libutf chromeos-base/libpasswordprovider chromeos-base/libcontainer chromeos-base/libchromeos-ui chromeos-base/cryptohome chromeos-base/chromeos-storage-info chromeos-base/oobe_config chromeos-base/imageloader media-libs/cros-camera-hal-usb chromeos-base/verity chromeos-base/libec chromeos-base/libiioservice_ipc chromeos-base/permission_broker-client chromeos-base/mojo_service_manager chromeos-base/mems_setup chromeos-base/patchpanel-client chromeos-base/patchpanel chromeos-base/debugd-client chromeos-base/missive chromeos-base/runtime_probe-client dev-libs/libtextclassifier chromeos-base/chromeos-login chromeos-base/chromeos-init chromeos-base/shill-dbus-client chromeos-base/ml-client chromeos-base/libipp chromeos-base/update_engine-client chromeos-base/imageloader-client chromeos-base/dlcservice-client chromeos-base/vm_protos chromeos-base/libcrossystem chromeos-base/hardware_verifier_proto chromeos-base/modemfwd-proto chromeos-base/wilco-dtc-grpc-protos chromeos-base/policy-go-proto chromeos-base/chaps-client chromeos-base/p2p chromeos-base/modem-utilities chromeos-base/u2fd-client dev-libs/modp_b64 chromeos-base/secanomalyd chromeos-base/cros-camera chromeos-base/chromeos-installer chromeos-base/dev-install chromeos-base/rgbkbd chromeos-base/cros-disks chromeos-base/iioservice_simpleclient chromeos-base/lorgnette chromeos-base/chromeos-imageburner chromeos-base/iioservice chromeos-base/system-proxy chromeos-base/fusebox chromeos-base/hpsd chromeos-base/lexmark-fax-pnh chromeos-base/libvda-gpu-tests chromeos-base/secure-wipe chromeos-base/croslog chromeos-base/tpm_softclear_utils chromeos-base/cros-camera-tool chromeos-base/spaced chromeos-base/diagnostics chromeos-base/hps-tool chromeos-base/featured chromeos-base/hardware_verifier chromeos-base/ml chromeos-base/debugd chromeos-base/run_oci chromeos-base/permission_broker chromeos-base/kerberos chromeos-base/perfetto_simple_producer chromeos-base/smbprovider chromeos-base/chromeos-trim chromeos-base/dns-proxy chromeos-base/mist chromeos-base/hwsec-test-utils chromeos-base/power_manager chromeos-base/print_tools chromeos-base/dlp chromeos-base/smbfs chromeos-base/dlcservice chromeos-base/crash-reporter chromeos-base/usb_bouncer chromeos-base/policy_utils media-libs/cros-camera-libjea_test media-libs/cros-camera-document-scanning-test media-libs/cros-camera-test media-libs/cros-camera-usb-tests media-libs/cros-camera-libcamera_connector_test", "PORTAGE_SIGPIPE_STATUS": "141", "OFFICE_IMPLEMENTATION": "", "CBUILD": "x86_64-pc-linux-gnu", "SUDO_USER": "chrome-bot", "DEFAULT_ABI": "arm", "BUILD_CXX": "x86_64-pc-linux-gnu-clang++", "LIBDIR_arm": "lib", "FPMCU_FIRMWARE": "", "ALSA_CARDS": "", "ABI_S390": "", "KERNEL": "linux", "FFLAGS": "-O2", "EDITOR": "/usr/bin/vi", "ED": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/image", "PORTAGE_ARCHLIST": "alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux s390 sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt", "EBUILD": "/mnt/host/source/src/third_party/chromiumos-overlay/sys-apps/flashrom/flashrom-0.9.9-r1467.ebuild", "INHERITED": " cros-constants cros-credentials eutils toolchain-funcs multilib flag-o-matic git-2 cros-workon multiprocessing ninja-utils python-utils-r1 meson cros-sanitizers", "OPENMPI_RM": "", "EBUILD_MASTER_PID": "11632", "PORTAGE_REPO_NAME": "chromiumos", "PWD": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9", "FETCHCOMMAND_AB": "/mnt/host/source/chromite/bin/abutil fetch \"${URI}\" \"${DISTDIR}/${FILE}\"", "PORTAGE_RESTRICT": "", "PORTAGE_DOCOMPRESS_SIZE_LIMIT": "128", "LOGNAME": "chrome-bot", "CXXEXCEPTIONS": "0", "EXEOPTIONS": "-m0755", "CTARGET_default": "armv7a-cros-linux-gnueabihf", "DEFINED_PHASES": " compile configure info install setup test unpack", "PORTAGE_BINPKG_TAR_OPTS": "--checkpoint=1000", "SANDBOX_VERBOSE": "1", "PORTAGE_WORKDIR_MODE": "0755", "PKGDIR": "/build/arm-generic/packages/", "FILESDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/files", "RESUMECOMMAND_GS": "bash -c 'BOTO_CONFIG= /mnt/host/source/chromite/bin/gs_fetch_binpkg \"${URI}\" \"${DISTDIR}/${FILE}\"'", "DIROPTIONS": "-m0755", "MAKEOPTS": "-j32", "PORTAGE_CONFIGROOT": "/build/arm-generic/", "PM_EBUILD_HOOK_DIR": "/build/arm-generic/etc/portage/env", "CXX": "armv7a-cros-linux-gnueabihf-clang++", "CXXFLAGS": " -Os -pipe  -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections", "PORTAGE_OVERRIDE_EPREFIX": "", "XAUTHORITY": "/home/chronos/.Xauthority", "BUILD_CC": "x86_64-pc-linux-gnu-clang", "ABI_PPC": "", "T": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp", "S": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9", "P": "flashrom-0.9.9", "U_BOOT_FDT_USE": "", "D": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/image", "A": "", "CATEGORY": "sys-apps", "EC_FIRMWARE_EXTRA": "", "LD_PRELOAD": "libsandbox.so", "PYTHON_TARGETS": "", "ENLIGHTENMENT_MODULES": "", "CALLIGRA_FEATURES": "", "GI_TYPELIB_PATH": "/usr/local/lib/girepository-1.0:/usr/lib/girepository-1.0", "LDFLAGS": "-Wl,-O2 -Wl,--as-needed  -Wl,--gc-sections -Wl,--icf=all", "EBEEP_IGNORE": "1", "HOME": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir", "LIBREOFFICE_EXTENSIONS": "", "NETBEANS": "apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml", "LANG": "en_US.UTF-8", "PORTAGE_COMPRESS": "pigz", "WORKDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work", "QEMU_USER_TARGETS": "", "DRACUT_MODULES": "", "INSOPTIONS": "-m0644", "SANDBOX_LIB": "libsandbox.so", "UWSGI_PLUGINS": "", "CROS_BASE_RUSTFLAGS": "-Ctarget-feature=+armv7-a,+neon", "COLUMNS": "80", "BROOT": "", "BOARD_USE": "", "PORTAGE_TMPDIR": "/build/arm-generic/tmp", "CXX_FOR_BUILD": "x86_64-pc-linux-gnu-clang++", "LINGUAS": "", "PORTAGE_COLORMAP": "GOOD=$'\u001b[32;01m'\nWARN=$'\u001b[33;01m'\nBAD=$'\u001b[31;01m'\nHILITE=$'\u001b[36m'\nBRACKET=$'\u001b[34;01m'\nNORMAL=$'\u001b[0m'", "SANDBOX_READ": "/:/build/arm-generic/tmp/portage", "LCD_DEVICES": "", "FEATURES": "allow-missing-manifests assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg clean-logs config-protect-if-modified distlocks fixlafiles force-mirror ipc-sandbox multilib-strict network-sandbox noclean nodoc noinfo noman parallel-fetch parallel-install protect-owned sandbox sfperms splitdebug test unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr", "NETBEANS_MODULES": "", "TMPDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp", "INSTALL_MASK": "   /usr/lib*/*.la   /etc/init.d /etc/conf.d   /etc/logrotate.d   /etc/sandbox.d   /usr/share/bash-completion   /usr/share/locale ", "PORTAGE_BIN_PATH": "/usr/lib/portage/python3.6", "_E_INSDESTTREE_": "", "SANDBOX_METHOD": "any", "LD": "armv7a-cros-linux-gnueabihf-ld.lld", "POSTSUBMIT_BINHOST": "gs://chromeos-prebuilt/board/arm-generic/postsubmit-R107-15112.0.0-39877-8803137353401282177/packages", "OPENMPI_OFED_FEATURES": "", "NM_FOR_BUILD": "llvm-nm", "ABI_ARM": "", "PORTAGE_INTERNAL_CALLER": "1", "PORTAGE_COMPRESSION_COMMAND": "zstd -3", "PVR": "0.9.9-r1467", "MARCH_TUNE": "", "PKG_LOGDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/logging", "READELF": "llvm-readelf", "CPU_FLAGS_ARM": "", "ASAN_OPTIONS": " log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan detect_stack_use_after_return=0", "KEYWORDS": "*", "PORTAGE_COMPRESS_EXCLUDE_SUFFIXES": "css gif htm[l]? jp[e]?g js pdf png", "STRIP_FOR_BUILD": "llvm-strip", "FULL_BINHOST": "gs://chromeos-prebuilt/board/arm-generic/full-R107-15113.0.0-rc1/packages/", "PORTAGE_BUILD_USER": "chrome-bot", "VCSID": "0.9.9-r1467-240388765153af4f68ee2edd69e77991591b686c", "OPENMPI_FABRICS": "", "CHROMEOS_KERNEL_SPLITCONFIG": "chromiumos-arm", "NGINX_MODULES_MAIL": "", "USE_EXPAND_UNPREFIXED": "ARCH", "PORT_LOGDIR": "/build/arm-generic/tmp/portage/logs/", "MOPREFIX": "flashrom", "EC_FIRMWARE": "", "_E_EXEDESTTREE_": "", "MOZ_GMP_PATH": "/build/arm-generic/usr/lib/nsbrowser/plugins/gmp-gmpopenh264/system-installed", "FFTOOLS": "", "OFED_DRIVERS": "", "LLVM_TARGETS": "", "LIRC_DEVICES": "", "FETCHCOMMAND_SSH": "bash -c \"x=\\${2#ssh://} ; host=\\${x%%/*} ; port=\\${host##*:} ; host=\\${host%:*} ; [[ \\${host} = \\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\${port:+-p\\${port}} \\${3}\\\" -avP \\\"\\${host}:/\\${x#*/}\\\" \\\"\\$1\\\"\" rsync \"${DISTDIR}/${FILE}\" \"${URI}\" \"${PORTAGE_SSH_OPTS}\"", "PORTAGE_PYM_PATH": "/usr/lib64/python3.6/site-packages", "OZONE_PLATFORM_DEFAULT": "", "FCFLAGS": "-O2", "CHROMEOS_KERNEL_FAMILY": "", "EPAUSE_IGNORE": "1", "LSAN_OPTIONS": " print_suppressions=0", "TERM": "unknown", "BOOTSTRAP_USE": "cxx unicode python_targets_python3_2 python_targets_python2_7", "OBJCOPY_FOR_BUILD": "llvm-objcopy", "EROOT": "/build/arm-generic", "LESSOPEN": "|lesspipe %s", "CC_FOR_BUILD": "x86_64-pc-linux-gnu-clang", "AT_SYS_M4DIR": "${SYSROOT}/usr/share/aclocal", "PORTAGE_XATTR_EXCLUDE": "btrfs.* security.evm security.ima \tsecurity.selinux system.nfs4_acl user.apache_handler \tuser.Beagle.* user.dublincore.* user.mime_encoding user.xdg.*", "PORTAGE_LOG_FILE": "/build/arm-generic/tmp/portage/logs/sys-apps:flashrom-0.9.9-r1467:20220914-105049.log", "NOCOLOR": "true", "PORTAGE_DEBUG": "0", "CROS_WORKON_SRCROOT": "/mnt/host/source", "RESUMECOMMAND_AB": "/mnt/host/source/chromite/bin/abutil fetch \"${URI}\" \"${DISTDIR}/${FILE}\"", "OZONE_PLATFORM": "", "RESTRICT": "", "GCE_METADATA_HOST": "127.0.0.1:39281", "SANDBOX_DEBUG": "0", "PORTAGE_DEPCACHEDIR": "/var/cache/edb/dep", "AR": "llvm-ar", "ARCH": "arm", "NGINX_MODULES_HTTP": "", "ROOT": "/build/arm-generic", "VIDEO_CARDS": "", "ROS_MESSAGES": "", "ABI_X86": "", "TEMP": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp", "USE_EXPAND_VALUES_ARCH": "alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd riscv s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt", "INPUT_DEVICES": "", "OBJDUMP_FOR_BUILD": "llvm-objdump", "FOO2ZJS_DEVICES": "", "PORTAGE_COMPRESS_FLAGS": "-3", "SHLVL": "1", "AR_FOR_BUILD": "llvm-ar", "DISTDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/distdir", "NM": "llvm-nm", "PORTAGE_REPOSITORIES": "[DEFAULT]\nauto-sync = yes\nmain-repo = portage-stable\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n\n[arm-generic]\nauto-sync = yes\nlocation = /mnt/host/source/src/overlays/overlay-arm-generic\nmasters = portage-stable chromiumos eclass-overlay\npriority = 2\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n\n[chromiumos]\nauto-sync = yes\nlocation = /mnt/host/source/src/third_party/chromiumos-overlay\nmasters = portage-stable eclass-overlay\npriority = 0\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n\n[eclass-overlay]\nauto-sync = yes\nlocation = /mnt/host/source/src/third_party/eclass-overlay\nmasters = \npriority = 1\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n\n[portage-stable]\nauto-sync = yes\nlocation = /mnt/host/source/src/third_party/portage-stable\nmasters = eclass-overlay\npriority = -1000\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n", "APACHE2_MPMS": "", "SANDBOX_WRITE": ":/build/arm-generic/tmp/portage:/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir/.bash_history:/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/", "CHOST_default": "armv7a-cros-linux-gnueabihf", "XFCE_PLUGINS": "", "GPSD_PROTOCOLS": "", "LC_MESSAGES": "C", "FETCHCOMMAND_CIPD": "/mnt/host/source/chromite/bin/fetch_cipd \"${URI}\" \"${DISTDIR}/${FILE}\"", "XTABLES_ADDONS": "", "LICENSE": "GPL-2", "PYTHONDONTWRITEBYTECODE": "1", "SYSROOT": "/build/arm-generic", "UBSAN_OPTIONS": " log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan:symbolize=1:print_stacktrace=1", "VOICEMAIL_STORAGE": "", "U_BOOT_CONFIG_USE": "", "PV": "0.9.9", "RESUMECOMMAND_SSH": "bash -c \"x=\\${2#ssh://} ; host=\\${x%%/*} ; port=\\${host##*:} ; host=\\${host%:*} ; [[ \\${host} = \\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\${port:+-p\\${port}} \\${3}\\\" -avP \\\"\\${host}:/\\${x#*/}\\\" \\\"\\$1\\\"\" rsync \"${DISTDIR}/${FILE}\" \"${URI}\" \"${PORTAGE_SSH_OPTS}\"", "SANDBOX_LOG": "/tmp/sandbox-11586.log", "PR": "r1467", "STRIP_MASK": "*.nexe /firmware/*.elf", "COLLECTD_PLUGINS": "", "PN": "flashrom", "XARGS": "xargs -r", "SANE_BACKENDS": "", "USE_EXPAND_IMPLICIT": "ARCH ELIBC KERNEL USERLAND", "PF": "flashrom-0.9.9-r1467", "USE_EXPAND_VALUES_ELIBC": "AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt", "LD_LIBRARY_PATH": "/usr/local/lib", "CROS_ARTIFACTS_TMP_DIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/cros-artifacts", "PORTAGE_BASHRC": "/build/arm-generic/etc/portage/bashrc", "CXXLD_FOR_BUILD": "x86_64-pc-linux-gnu-clang++", "ACCEPT_LICENSE": "GPL-2", "BUILD_PREFIX": "/build/arm-generic/tmp/portage", "MERGE_TYPE": "source", "ABI_MIPS": "", "_E_DOCDESTTREE_": "", "_E_DESTTREE_": "/usr", "BOARD_RUSTFLAGS": "-Ctarget-feature=+armv7-a,+neon", "COMMON_COMPILER_FLAGS": "", "PORTAGE_ACTUAL_DISTDIR": "/var/cache/chromeos-cache/distfiles", "OBJCOPY": "llvm-objcopy", "RANLIB_FOR_BUILD": "llvm-ranlib", "CCACHE_DISABLE": "1", "LIBDIR_default": "lib", "PKG_INSTALL_MASK": "   /usr/lib*/*.la   /etc/init.d /etc/conf.d   /etc/logrotate.d   /etc/sandbox.d   /usr/share/bash-completion   /usr/share/locale ", "SANDBOX_PREDICT": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir:/dev/crypto:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/usr/share/cache/fontconfig:/", "FCDSL_CARDS": "", "LIBOPTIONS": "-m0644", "GRUB_PLATFORMS": "", "OBJC_FOR_BUILD": "x86_64-pc-linux-gnu-clang", "SANDBOX_DENY": "", "EBUILD_DEATH_HOOKS": " cros_log_failed_packages cros-workon_on_die_rebase_check asan_death_hook", "STRIP": "llvm-strip", "LC_COLLATE": "C", "OBJC": "x86_64-pc-linux-gnu-clang", "MSAN_OPTIONS": " log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan", "CHOST": "armv7a-cros-linux-gnueabihf", "TMP": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp", "PORTAGE_INST_GID": "0", "OBJDUMP": "llvm-objdump", "PATH": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/build-toolchain-wrappers:/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/build-toolchain-wrappers/gnu_tools:/usr/lib/portage/python3.6/ebuild-helpers/xattr:/usr/lib/portage/python3.6/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/bin:/build/arm-generic/build/bin", "SANDBOX_DEBUG_LOG": "/tmp/sandbox-debug-11586.log", "PORTAGE_BUILDDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467", "PORTAGE_BZIP2_COMMAND": "lbzip2 -z", "PORTAGE_USERNAME": "chrome-bot", "NGINX_MODULES_STREAM": "", "USE": "arm dummy elibc_glibc ft2232_spi internal it8212 kernel_linux linux_mtd linux_spi mediatek_i2c_spi parade_lspcon raiden_debug_spi realtek_mst_i2c_spi serprog stlinkv3_spi test usbblaster_spi userland_GNU wiki", "PHP_TARGETS": "", "READELF_FOR_BUILD": "llvm-readelf", "CC": "armv7a-cros-linux-gnueabihf-clang", "TESTS": "", "CCLD_FOR_BUILD": "x86_64-pc-linux-gnu-clang", "BOARD_OVERLAY": "/mnt/host/source/src/overlays/overlay-arm-generic", "CFLAGS": " -Os -pipe  -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections", "USE_EXPAND": "ABI_ARM ABI_MIPS ABI_PPC ABI_S390 ABI_X86 ALSA_CARDS APACHE2_MODULES APACHE2_MPMS BOARD_USE CALLIGRA_FEATURES CAMERAS CHROMEOS_KERNEL_FAMILY COLLECTD_PLUGINS CPU_FLAGS_ARM CPU_FLAGS_X86 CROSSCOMPILE_OPTS CROS_WORKON_TREE CURL_SSL DRACUT_MODULES DVB_CARDS EC_FIRMWARE EC_FIRMWARE_EXTRA ELIBC ENLIGHTENMENT_MODULES FCDSL_CARDS FFTOOLS FOO2ZJS_DEVICES FPMCU_FIRMWARE FRITZCAPI_CARDS GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES KERNEL LCD_DEVICES LIBREOFFICE_EXTENSIONS LINGUAS LINUX_FIRMWARE LIRC_DEVICES LLVM_TARGETS MONKEYD_PLUGINS NETBEANS_MODULES NGINX_MODULES_HTTP NGINX_MODULES_MAIL NGINX_MODULES_STREAM OFED_DRIVERS OFFICE_IMPLEMENTATION OPENMPI_FABRICS OPENMPI_OFED_FEATURES OPENMPI_RM OZONE_PLATFORM OZONE_PLATFORM_DEFAULT PHP_TARGETS PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS ROS_MESSAGES RUBY_TARGETS SANE_BACKENDS TESTS TTY_CONSOLE USERLAND UWSGI_PLUGINS U_BOOT_CONFIG_USE U_BOOT_FDT_USE VIDEO_CARDS VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS", "SANDBOX_BASHRC": "/usr/share/sandbox/sandbox.bashrc", "CROSSCOMPILE_OPTS": "", "SUDO_UID": "1000", "MULTILIB_ABIS": "arm", "STRINGS_FOR_BUILD": "llvm-strings", "LIBDIR_x86": "lib", "PORTAGE_GID": "250", "FETCHCOMMAND_GS": "bash -c 'BOTO_CONFIG= /mnt/host/source/chromite/bin/gs_fetch_binpkg \"${URI}\" \"${DISTDIR}/${FILE}\"'", "MAIL": "/var/mail/root", "PORTAGE_BUILD_GROUP": "portage", "BASHRC_FILESDIR": "/mnt/host/source/src/third_party/chromiumos-overlay/sys-apps/flashrom/files", "APACHE2_MODULES": "", "ELIBC": "glibc", "EAPI": "7", "RANLIB": "llvm-ranlib", "ABI": "arm", "ECLASS_DEPTH": "0", "PORTAGE_BASHRC_FILES": "/mnt/host/source/src/third_party/chromiumos-overlay/profiles/base/profile.bashrc\n/mnt/host/source/src/third_party/chromiumos-overlay/profiles/targets/chromeos/profile.bashrc", "CROS_WORKON_TREE": "121d6ec074232b3094218bca967b5335212c962d", "OLDPWD": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir", "BUILD_LD": "x86_64-pc-linux-gnu-ld.lld", "MONKEYD_PLUGINS": "", "EMERGE_FROM": "ebuild", "LADSPA_PATH": "/usr/lib/ladspa", "PKG_CONFIG": "/build/arm-generic/build/bin/pkg-config", "DVB_CARDS": "", "_": "/usr/bin/meson", "MESON_EXE_WRAPPER": "/mnt/host/source/src/platform2/common-mk/meson_test.py", "MALLOC_PERTURB_": "55"}, "command": ["/mnt/host/source/src/platform2/common-mk/meson_test.py", "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/tests/flashrom_unit_tests"], "stderr": "[  PASSED  ] 7 test(s).\n[  PASSED  ] 1 test(s).\n[  PASSED  ] 11 test(s).\n[  PASSED  ] 12 test(s).\n[  SKIPPED ] 2 test(s), listed below:\n[  SKIPPED ] nicrealtek_basic_lifecycle_test_success\n[  SKIPPED ] dediprog_basic_lifecycle_test_success\n\n 2 SKIPPED TEST(S)\n[  PASSED  ] 6 test(s).\n[  PASSED  ] 8 test(s).\n[  PASSED  ] 6 test(s).\n"}
+{"name": "cmocka test flashrom", "stdout": "Running [PosixPath('/mnt/host/source/src/platform2/common-mk/platform2_test.py'), '--sysroot', '/build/arm-generic', '--', '/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/tests/flashrom_unit_tests']\n[==========] Running 7 test(s).\n[ RUN      ] address_to_bits_test_success\n[       OK ] address_to_bits_test_success\n[ RUN      ] bitcount_test_success\n[       OK ] bitcount_test_success\n[ RUN      ] minmax_test_success\n[       OK ] minmax_test_success\n[ RUN      ] strcat_realloc_test_success\n[       OK ] strcat_realloc_test_success\n[ RUN      ] tolower_string_test_success\n[       OK ] tolower_string_test_success\n[ RUN      ] reverse_byte_test_success\n[       OK ] reverse_byte_test_success\n[ RUN      ] reverse_bytes_test_success\n[       OK ] reverse_bytes_test_success\n[==========] 7 test(s) run.\n[==========] Running 1 test(s).\n[ RUN      ] flashbuses_to_text_test_success\n[       OK ] flashbuses_to_text_test_success\n[==========] 1 test(s) run.\n[==========] Running 11 test(s).\n[ RUN      ] spi_write_enable_test_success\n[       OK ] spi_write_enable_test_success\n[ RUN      ] spi_write_disable_test_success\n[       OK ] spi_write_disable_test_success\n[ RUN      ] spi_read_chunked_test_success\n[       OK ] spi_read_chunked_test_success\n[ RUN      ] probe_spi_rdid_test_success\n[       OK ] probe_spi_rdid_test_success\n[ RUN      ] probe_spi_rdid4_test_success\n[       OK ] probe_spi_rdid4_test_success\n[ RUN      ] probe_spi_rems_test_success\n[       OK ] probe_spi_rems_test_success\n[ RUN      ] probe_spi_res1_test_success\n[       OK ] probe_spi_res1_test_success\n[ RUN      ] probe_spi_res2_test_success\n[       OK ] probe_spi_res2_test_success\n[ RUN      ] probe_spi_res3_test_success\n[       OK ] probe_spi_res3_test_success\n[ RUN      ] probe_spi_at25f_test_success\n[       OK ] probe_spi_at25f_test_success\n[ RUN      ] probe_spi_st95_test_success\n[       OK ] probe_spi_st95_test_success\n[==========] 11 test(s) run.\n[==========] Running 14 test(s).\n[ RUN      ] dummy_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=dummy ...\n... flashrom_programmer_init for programmer=dummy successful\nTesting flashrom_programmer_shutdown for programmer=dummy ...\n... flashrom_programmer_shutdown for programmer=dummy successful\n[       OK ] dummy_basic_lifecycle_test_success\n[ RUN      ] dummy_probe_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=dummy ...\n... flashrom_programmer_init for programmer=dummy successful\nTesting flashrom_flash_probe for programmer=dummy, chip=W25Q128.V ... \n... flashrom_flash_probe for programmer=dummy successful\nTesting flashrom_programmer_shutdown for programmer=dummy ...\n... flashrom_programmer_shutdown for programmer=dummy successful\n[       OK ] dummy_probe_lifecycle_test_success\n[ RUN      ] dummy_probe_variable_size_test_success\nTesting flashrom_programmer_init for programmer=dummy ...\n... flashrom_programmer_init for programmer=dummy successful\nTesting flashrom_flash_probe for programmer=dummy, chip=Opaque flash chip ... \n... flashrom_flash_probe for programmer=dummy successful\nTesting flashrom_programmer_shutdown for programmer=dummy ...\n... flashrom_programmer_shutdown for programmer=dummy successful\n[       OK ] dummy_probe_variable_size_test_success\n[ RUN      ] dummy_init_fails_unhandled_param_test_success\nTesting init error path for programmer=dummy with params: bus=spi,emulate=INVALID,unhandled=value ...\n... init failed with error code 1 as expected\nRunning programmer shutdown in case anything got registered...\n... completed\n[       OK ] dummy_init_fails_unhandled_param_test_success\n[ RUN      ] dummy_init_success_invalid_param_test_success\nTesting init error path for programmer=dummy with params: bus=spi,emulate=W25Q128FV,invalid=value ...\n... init failed with error code -238 as expected\nRunning programmer shutdown in case anything got registered...\n... completed\n[       OK ] dummy_init_success_invalid_param_test_success\n[ RUN      ] dummy_init_success_unhandled_param_test_success\nTesting init error path for programmer=dummy with params: bus=spi,emulate=W25Q128FV,voltage=3.5V ...\n... init failed with error code -238 as expected\nRunning programmer shutdown in case anything got registered...\n... completed\n[       OK ] dummy_init_success_unhandled_param_test_success\n[ RUN      ] nicrealtek_basic_lifecycle_test_success\n[  SKIPPED ] nicrealtek_basic_lifecycle_test_success\n[ RUN      ] raiden_debug_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=raiden_debug_spi ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap_libusb_init is called\n__wrap_libusb_get_device_list is called\n__wrap_libusb_get_bus_number is called\n__wrap_libusb_get_device_address is called\n__wrap_libusb_get_device_descriptor is called\n__wrap_libusb_get_config_descriptor is called\n__wrap_libusb_ref_device is called\n__wrap_libusb_free_device_list is called\n__wrap_libusb_open is called\n__wrap_libusb_get_configuration is called\n__wrap_libusb_set_auto_detach_kernel_driver is called\n__wrap_libusb_claim_interface is called\n__wrap_libusb_control_transfer is called\n... flashrom_programmer_init for programmer=raiden_debug_spi successful\nTesting flashrom_programmer_shutdown for programmer=raiden_debug_spi ...\n__wrap_libusb_control_transfer is called\n__wrap_libusb_unref_device is called\n__wrap_libusb_free_config_descriptor is called\n__wrap_libusb_exit is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=raiden_debug_spi successful\n[       OK ] raiden_debug_basic_lifecycle_test_success\n[ RUN      ] dediprog_basic_lifecycle_test_success\n[  SKIPPED ] dediprog_basic_lifecycle_test_success\n[ RUN      ] linux_mtd_probe_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=linux_mtd ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap_stat64 is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_stat64 is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap_setvbuf is called\n... flashrom_programmer_init for programmer=linux_mtd successful\nTesting flashrom_flash_probe for programmer=linux_mtd, chip=Opaque flash chip ... \n... flashrom_flash_probe for programmer=linux_mtd successful\nTesting flashrom_programmer_shutdown for programmer=linux_mtd ...\n__wrap_fclose is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=linux_mtd successful\n[       OK ] linux_mtd_probe_lifecycle_test_success\n[ RUN      ] linux_spi_probe_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=linux_spi ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap___open64_2 is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_fopen64 is called\n__wrap___fgets_chk is called\n__wrap_fclose is called\n... flashrom_programmer_init for programmer=linux_spi successful\nTesting flashrom_flash_probe for programmer=linux_spi, chip=W25Q128.V ... \n__wrap_ioctl is called\n__wrap_ioctl is called\n... flashrom_flash_probe for programmer=linux_spi successful\nTesting flashrom_programmer_shutdown for programmer=linux_spi ...\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=linux_spi successful\n[       OK ] linux_spi_probe_lifecycle_test_success\n[ RUN      ] parade_lspcon_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=parade_lspcon ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap___open64_2 is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n... flashrom_programmer_init for programmer=parade_lspcon successful\nTesting flashrom_programmer_shutdown for programmer=parade_lspcon ...\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=parade_lspcon successful\n[       OK ] parade_lspcon_basic_lifecycle_test_success\n[ RUN      ] mediatek_i2c_spi_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=mediatek_i2c_spi ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap___open64_2 is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n... flashrom_programmer_init for programmer=mediatek_i2c_spi successful\nTesting flashrom_programmer_shutdown for programmer=mediatek_i2c_spi ...\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=mediatek_i2c_spi successful\n[       OK ] mediatek_i2c_spi_basic_lifecycle_test_success\n[ RUN      ] realtek_mst_basic_lifecycle_test_success\nTesting flashrom_programmer_init for programmer=realtek_mst_i2c_spi ...\n__wrap_open64 is called\n__wrap_flock is called\n__wrap___open64_2 is called\n__wrap_ioctl is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n... flashrom_programmer_init for programmer=realtek_mst_i2c_spi successful\nTesting flashrom_programmer_shutdown for programmer=realtek_mst_i2c_spi ...\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_read is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_ioctl is called\n__wrap_write is called\n__wrap_flock is called\n... flashrom_programmer_shutdown for programmer=realtek_mst_i2c_spi successful\n[       OK ] realtek_mst_basic_lifecycle_test_success\n[==========] 14 test(s) run.\n[==========] Running 6 test(s).\n[ RUN      ] included_regions_dont_overlap_test_success\nCreating layout... done\nAdding and including first region... done, second (non-overlapping) region... done\nAsserting included regions do not overlap... done\nReleasing layout... done\n[       OK ] included_regions_dont_overlap_test_success\n[ RUN      ] included_regions_overlap_test_success\nCreating layout... done\nAdding and including first region... done, second (overlapping) region... done\nAsserting included regions overlap... done\nReleasing layout... done\n[       OK ] included_regions_overlap_test_success\n[ RUN      ] region_not_included_overlap_test_success\nCreating layout... done\nAdding and including first region... done, second (overlapping) region, not included... done\nAsserting included regions do not overlap... done\nReleasing layout... done\n[       OK ] region_not_included_overlap_test_success\n[ RUN      ] layout_pass_sanity_checks_test_success\nCreating layout with one included region... done\nAsserting region range... done\nLayout passes sanity checks... done\nReleasing layout... done\n[       OK ] layout_pass_sanity_checks_test_success\n[ RUN      ] layout_region_invalid_address_test_success\nCreating layout with one included region... done\nLayout does not pass sanity checks... done\nReleasing layout... done\n[       OK ] layout_region_invalid_address_test_success\n[ RUN      ] layout_region_invalid_range_test_success\nCreating layout with one included region... done\nLayout does not pass sanity checks... done\nReleasing layout... done\n[       OK ] layout_region_invalid_range_test_success\n[==========] 6 test(s) run.\n[==========] Running 8 test(s).\n[ RUN      ] erase_chip_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"\"... done\nErase chip operation started.\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nUnlock chip called\nRead chip called with start=0x0, len=0x800000\nErase chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] erase_chip_test_success\n[ RUN      ] erase_chip_with_dummyflasher_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"bus=spi,emulate=W25Q128FV\"... done\nErase chip operation started.\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nErase chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] erase_chip_with_dummyflasher_test_success\n[ RUN      ] read_chip_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"\"... done\nRead chip operation started.\nUnlock chip called\nRead chip called with start=0x0, len=0x800000\n__wrap_fopen64 is called\n__wrap_fwrite is called\n__wrap_fflush is called\n__wrap_fclose is called\nRead chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] read_chip_test_success\n[ RUN      ] read_chip_with_dummyflasher_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"bus=spi,emulate=W25Q128FV\"... done\nRead chip operation started.\n__wrap_fopen64 is called\n__wrap_fwrite is called\n__wrap_fflush is called\n__wrap_fclose is called\nRead chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] read_chip_with_dummyflasher_test_success\n[ RUN      ] write_chip_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"\"... done\nWrite chip operation started.\n__wrap_fileno is called\n__wrap_fdopen is called\n__wrap_fileno is called\n__wrap_fstat64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nUnlock chip called\nRead chip called with start=0x0, len=0x800000\nWrite chip called with start=0x0, len=0x200000\nWrite chip called with start=0x200000, len=0x200000\nWrite chip called with start=0x400000, len=0x200000\nWrite chip called with start=0x600000, len=0x200000\nWrite chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] write_chip_test_success\n[ RUN      ] write_chip_with_dummyflasher_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"bus=spi,emulate=W25Q128FV\"... done\nWrite chip operation started.\n__wrap_fileno is called\n__wrap_fdopen is called\n__wrap_fileno is called\n__wrap_fstat64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nWrite chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] write_chip_with_dummyflasher_test_success\n[ RUN      ] verify_chip_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"\"... done\nVerify chip operation started.\n__wrap_fileno is called\n__wrap_fdopen is called\n__wrap_fileno is called\n__wrap_fstat64 is called\n__wrap_fread is called\n__wrap_fclose is called\nUnlock chip called\nRead chip called with start=0x0, len=0x800000\nVerify chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] verify_chip_test_success\n[ RUN      ] verify_chip_with_dummyflasher_test_success\nCreating layout with one included region... done\nDummyflasher initialising with param=\"bus=spi,emulate=W25Q128FV\"... done\nWrite chip operation started.\n__wrap_fileno is called\n__wrap_fdopen is called\n__wrap_fileno is called\n__wrap_fstat64 is called\n__wrap_fread is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\nWrite chip operation done.\nVerify chip operation started.\nVerify chip operation done.\nDummyflasher shutdown... done\nReleasing layout... done\n[       OK ] verify_chip_with_dummyflasher_test_success\n[==========] 8 test(s) run.\n[==========] Running 6 test(s).\n[ RUN      ] invalid_wp_range_dummyflasher_test_success\n[       OK ] invalid_wp_range_dummyflasher_test_success\n[ RUN      ] set_wp_range_dummyflasher_test_success\n[       OK ] set_wp_range_dummyflasher_test_success\n[ RUN      ] switch_wp_mode_dummyflasher_test_success\n[       OK ] switch_wp_mode_dummyflasher_test_success\n[ RUN      ] wp_init_from_status_dummyflasher_test_success\n[       OK ] wp_init_from_status_dummyflasher_test_success\n[ RUN      ] full_chip_erase_with_wp_dummyflasher_test_success\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\n[       OK ] full_chip_erase_with_wp_dummyflasher_test_success\n[ RUN      ] partial_chip_erase_with_wp_dummyflasher_test_success\n__wrap_fopen64 is called\n__wrap___vfprintf_chk is called\n__wrap_fclose is called\n[       OK ] partial_chip_erase_with_wp_dummyflasher_test_success\n[==========] 6 test(s) run.\n", "result": "OK", "starttime": 1663193062.9782424, "duration": 10.915831089019775, "returncode": 0, "env": {"SANDBOX_MESSAGE_P@TH": "/proc/11625/fd/2", "SLOT": "0/0", "SHELL": "/bin/bash", "RUBY_TARGETS": "", "PORTAGE_INST_UID": "0", "KERNEL_ABI": "arm", "PORTAGE_PYTHONPATH": "/usr/lib64/python3.6/site-packages", "QEMU_SOFTMMU_TARGETS": "", "PORTAGE_FEATURES": "allow-missing-manifests assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg clean-logs config-protect-if-modified distlocks fixlafiles force-mirror ipc-sandbox multilib-strict network-sandbox noclean nodoc noinfo noman parallel-fetch parallel-install protect-owned sandbox sfperms splitdebug test unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr", "cros_setup_hooks_run": "booya", "ESYSROOT": "/build/arm-generic", "PYTHON_COMPAT_OVERRIDE": "python3_6", "LESS": "-R -M --shift 5", "SUDO_GID": "1000", "BOTO_CONFIG": "", "ROOTPATH": "/opt/bin:/usr/lib/llvm/bin", "USE_EXPAND_VALUES_KERNEL": "AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt", "PORTAGE_PYTHON": "/usr/bin/python3.6m", "PYTHON_SINGLE_TARGET": "", "BOARD_COMPILER_FLAGS": "-march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard", "PROFILE_ONLY_VARIABLES": "ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND", "SYMLINK_LIB": "no", "TSAN_OPTIONS": " log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan", "PKG_CONFIG_PATH": "/usr/lib/pkgconfig", "SANDBOX_ACTIVE": "armedandready", "LLVM_PROFILE_FILE": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/coverage_logs/flashrom-0.9.9_%9m.profraw", "LINUX_FIRMWARE": "", "USERLAND": "GNU", "CPU_FLAGS_X86": "", "PKG_TMPDIR": "/build/arm-generic/tmp/portage/._unmerge_", "PKGUSE": "", "USE_EXPAND_VALUES_USERLAND": "BSD GNU", "CHOST_arm": "arm-unknown-linux-gnu", "TTY_CONSOLE": "", "SANDBOX_ON": "1", "IUSE_EFFECTIVE": "alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 asan atahpt atapromise atavia buspirate_spi ch341a_spi coverage cros_host cros_workon_tree_121d6ec074232b3094218bca967b5335212c962d dediprog developerbox_spi digilent_spi drkaiser dummy elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_bionic elibc_glibc elibc_mingw elibc_mintlib elibc_musl elibc_uclibc ft2232_spi fuzzer gfxnvidia hppa hppa-hpux ia64 ia64-hpux ia64-linux internal it8212 jlink_spi kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux linux_mtd linux_spi m68k m68k-mint mediatek_i2c_spi mips msan mstarddc_spi nic3com nicintel nicintel_eeprom nicintel_spi nicnatsemi nicrealtek nios2 ogp_spi parade_lspcon pickit2_spi pony_spi ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest prefix-stack raiden_debug_spi rayer_spi realtek_mst_i2c_spi riscv s390 satamv satasii serprog sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris static stlinkv3_spi test tsan ubsan usbblaster_spi userland_BSD userland_GNU wiki x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt", "EPREFIX": "", "STRINGS": "llvm-strings", "EBUILD_PHASE_FUNC": "src_test", "RESUMECOMMAND_CIPD": "/mnt/host/source/chromite/bin/fetch_cipd \"${URI}\" \"${DISTDIR}/${FILE}\"", "CAMERAS": "", "CURL_SSL": "", "PORTAGE_IPC_DAEMON": "1", "PORTAGE_BUNZIP2_COMMAND": "lbzip2 -d", "PROPERTIES": "live live", "EBUILD_PHASE": "test", "IUSE_IMPLICIT": "prefix prefix-guest prefix-stack", "FRITZCAPI_CARDS": "", "CXXEXCEPTIONS_FLAGS": "-fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables", "SUDO_COMMAND": "/bin/bash -c FEATURES=\"noclean test\" parallel_emerge --board arm-generic chromeos-base/libchrome chromeos-base/system_api chromeos-base/libbrillo chromeos-base/libhwsec-foundation chromeos-base/tpm_manager-client chromeos-base/libtpmcrypto chromeos-base/libhwsec chromeos-base/metrics chromeos-base/attestation-client chromeos-base/tpm_manager chromeos-base/chaps media-libs/cros-camera-libfs chromeos-base/cros-camera-android-deps chromeos-base/chromeos-config-tools chromeos-base/bootstat chromeos-base/shill-client chromeos-base/power_manager-client chromeos-base/cryptohome-client chromeos-base/secure-erase-file chromeos-base/cbor chromeos-base/bootlockbox-client chromeos-base/biod_proxy chromeos-base/attestation chromeos-base/chromeos-common-script chromeos-base/cros-camera-libs chromeos-base/libmems chromeos-base/session_manager-client chromeos-base/shill chromeos-base/shill-net chromeos-base/runtime_probe dev-libs/libutf chromeos-base/libpasswordprovider chromeos-base/libcontainer chromeos-base/libchromeos-ui chromeos-base/cryptohome chromeos-base/chromeos-storage-info chromeos-base/oobe_config chromeos-base/imageloader media-libs/cros-camera-hal-usb chromeos-base/verity chromeos-base/libec chromeos-base/libiioservice_ipc chromeos-base/permission_broker-client chromeos-base/mojo_service_manager chromeos-base/mems_setup chromeos-base/patchpanel-client chromeos-base/patchpanel chromeos-base/debugd-client chromeos-base/missive chromeos-base/runtime_probe-client dev-libs/libtextclassifier chromeos-base/chromeos-login chromeos-base/chromeos-init chromeos-base/shill-dbus-client chromeos-base/ml-client chromeos-base/libipp chromeos-base/update_engine-client chromeos-base/imageloader-client chromeos-base/dlcservice-client chromeos-base/vm_protos chromeos-base/libcrossystem chromeos-base/hardware_verifier_proto chromeos-base/modemfwd-proto chromeos-base/wilco-dtc-grpc-protos chromeos-base/policy-go-proto chromeos-base/chaps-client chromeos-base/p2p chromeos-base/modem-utilities chromeos-base/u2fd-client dev-libs/modp_b64 chromeos-base/secanomalyd chromeos-base/cros-camera chromeos-base/chromeos-installer chromeos-base/dev-install chromeos-base/rgbkbd chromeos-base/cros-disks chromeos-base/iioservice_simpleclient chromeos-base/lorgnette chromeos-base/chromeos-imageburner chromeos-base/iioservice chromeos-base/system-proxy chromeos-base/fusebox chromeos-base/hpsd chromeos-base/lexmark-fax-pnh chromeos-base/libvda-gpu-tests chromeos-base/secure-wipe chromeos-base/croslog chromeos-base/tpm_softclear_utils chromeos-base/cros-camera-tool chromeos-base/spaced chromeos-base/diagnostics chromeos-base/hps-tool chromeos-base/featured chromeos-base/hardware_verifier chromeos-base/ml chromeos-base/debugd chromeos-base/run_oci chromeos-base/permission_broker chromeos-base/kerberos chromeos-base/perfetto_simple_producer chromeos-base/smbprovider chromeos-base/chromeos-trim chromeos-base/dns-proxy chromeos-base/mist chromeos-base/hwsec-test-utils chromeos-base/power_manager chromeos-base/print_tools chromeos-base/dlp chromeos-base/smbfs chromeos-base/dlcservice chromeos-base/crash-reporter chromeos-base/usb_bouncer chromeos-base/policy_utils media-libs/cros-camera-libjea_test media-libs/cros-camera-document-scanning-test media-libs/cros-camera-test media-libs/cros-camera-usb-tests media-libs/cros-camera-libcamera_connector_test", "PORTAGE_SIGPIPE_STATUS": "141", "OFFICE_IMPLEMENTATION": "", "CBUILD": "x86_64-pc-linux-gnu", "SUDO_USER": "chrome-bot", "DEFAULT_ABI": "arm", "BUILD_CXX": "x86_64-pc-linux-gnu-clang++", "LIBDIR_arm": "lib", "FPMCU_FIRMWARE": "", "ALSA_CARDS": "", "ABI_S390": "", "KERNEL": "linux", "FFLAGS": "-O2", "EDITOR": "/usr/bin/vi", "ED": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/image", "PORTAGE_ARCHLIST": "alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux s390 sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt", "EBUILD": "/mnt/host/source/src/third_party/chromiumos-overlay/sys-apps/flashrom/flashrom-0.9.9-r1467.ebuild", "INHERITED": " cros-constants cros-credentials eutils toolchain-funcs multilib flag-o-matic git-2 cros-workon multiprocessing ninja-utils python-utils-r1 meson cros-sanitizers", "OPENMPI_RM": "", "EBUILD_MASTER_PID": "11672", "PORTAGE_REPO_NAME": "chromiumos", "PWD": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9", "FETCHCOMMAND_AB": "/mnt/host/source/chromite/bin/abutil fetch \"${URI}\" \"${DISTDIR}/${FILE}\"", "PORTAGE_RESTRICT": "", "PORTAGE_DOCOMPRESS_SIZE_LIMIT": "128", "LOGNAME": "chrome-bot", "CXXEXCEPTIONS": "0", "EXEOPTIONS": "-m0755", "CTARGET_default": "armv7a-cros-linux-gnueabihf", "DEFINED_PHASES": " compile configure info install setup test unpack", "PORTAGE_BINPKG_TAR_OPTS": "--checkpoint=1000", "SANDBOX_VERBOSE": "1", "PORTAGE_WORKDIR_MODE": "0755", "PKGDIR": "/build/arm-generic/packages/", "FILESDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/files", "RESUMECOMMAND_GS": "bash -c 'BOTO_CONFIG= /mnt/host/source/chromite/bin/gs_fetch_binpkg \"${URI}\" \"${DISTDIR}/${FILE}\"'", "DIROPTIONS": "-m0755", "MAKEOPTS": "-j32", "PORTAGE_CONFIGROOT": "/build/arm-generic/", "PM_EBUILD_HOOK_DIR": "/build/arm-generic/etc/portage/env", "CXX": "armv7a-cros-linux-gnueabihf-clang++", "CXXFLAGS": " -Os -pipe  -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections", "PORTAGE_OVERRIDE_EPREFIX": "", "XAUTHORITY": "/home/chronos/.Xauthority", "BUILD_CC": "x86_64-pc-linux-gnu-clang", "ABI_PPC": "", "T": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp", "S": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9", "P": "flashrom-0.9.9", "U_BOOT_FDT_USE": "", "D": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/image", "A": "", "CATEGORY": "sys-apps", "EC_FIRMWARE_EXTRA": "", "LD_PRELOAD": "libsandbox.so", "PYTHON_TARGETS": "", "ENLIGHTENMENT_MODULES": "", "CALLIGRA_FEATURES": "", "GI_TYPELIB_PATH": "/usr/local/lib/girepository-1.0:/usr/lib/girepository-1.0", "LDFLAGS": "-Wl,-O2 -Wl,--as-needed  -Wl,--gc-sections -Wl,--icf=all", "EBEEP_IGNORE": "1", "HOME": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir", "LIBREOFFICE_EXTENSIONS": "", "NETBEANS": "apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml", "LANG": "en_US.UTF-8", "PORTAGE_COMPRESS": "pigz", "WORKDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work", "QEMU_USER_TARGETS": "", "DRACUT_MODULES": "", "INSOPTIONS": "-m0644", "SANDBOX_LIB": "libsandbox.so", "UWSGI_PLUGINS": "", "CROS_BASE_RUSTFLAGS": "-Ctarget-feature=+armv7-a,+neon", "COLUMNS": "80", "BROOT": "", "BOARD_USE": "", "PORTAGE_TMPDIR": "/build/arm-generic/tmp", "CXX_FOR_BUILD": "x86_64-pc-linux-gnu-clang++", "LINGUAS": "", "PORTAGE_COLORMAP": "GOOD=$'\u001b[32;01m'\nWARN=$'\u001b[33;01m'\nBAD=$'\u001b[31;01m'\nHILITE=$'\u001b[36m'\nBRACKET=$'\u001b[34;01m'\nNORMAL=$'\u001b[0m'", "SANDBOX_READ": "/:/build/arm-generic/tmp/portage", "LCD_DEVICES": "", "FEATURES": "allow-missing-manifests assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg clean-logs config-protect-if-modified distlocks fixlafiles force-mirror ipc-sandbox multilib-strict network-sandbox noclean nodoc noinfo noman parallel-fetch parallel-install protect-owned sandbox sfperms splitdebug test unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr", "NETBEANS_MODULES": "", "TMPDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp", "INSTALL_MASK": "   /usr/lib*/*.la   /etc/init.d /etc/conf.d   /etc/logrotate.d   /etc/sandbox.d   /usr/share/bash-completion   /usr/share/locale ", "PORTAGE_BIN_PATH": "/usr/lib/portage/python3.6", "_E_INSDESTTREE_": "", "SANDBOX_METHOD": "any", "LD": "armv7a-cros-linux-gnueabihf-ld.lld", "POSTSUBMIT_BINHOST": "gs://chromeos-prebuilt/board/arm-generic/postsubmit-R107-15114.0.0-39911-8803074039107318465/packages", "OPENMPI_OFED_FEATURES": "", "NM_FOR_BUILD": "llvm-nm", "ABI_ARM": "", "PORTAGE_INTERNAL_CALLER": "1", "PORTAGE_COMPRESSION_COMMAND": "zstd -3", "PVR": "0.9.9-r1467", "MARCH_TUNE": "", "PKG_LOGDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/logging", "READELF": "llvm-readelf", "CPU_FLAGS_ARM": "", "ASAN_OPTIONS": " log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan detect_stack_use_after_return=0", "KEYWORDS": "*", "PORTAGE_COMPRESS_EXCLUDE_SUFFIXES": "css gif htm[l]? jp[e]?g js pdf png", "STRIP_FOR_BUILD": "llvm-strip", "FULL_BINHOST": "gs://chromeos-prebuilt/board/arm-generic/full-R107-15113.0.0-rc1/packages/", "PORTAGE_BUILD_USER": "chrome-bot", "VCSID": "0.9.9-r1467-240388765153af4f68ee2edd69e77991591b686c", "OPENMPI_FABRICS": "", "CHROMEOS_KERNEL_SPLITCONFIG": "chromiumos-arm", "NGINX_MODULES_MAIL": "", "USE_EXPAND_UNPREFIXED": "ARCH", "PORT_LOGDIR": "/build/arm-generic/tmp/portage/logs/", "MOPREFIX": "flashrom", "EC_FIRMWARE": "", "_E_EXEDESTTREE_": "", "MOZ_GMP_PATH": "/build/arm-generic/usr/lib/nsbrowser/plugins/gmp-gmpopenh264/system-installed", "FFTOOLS": "", "OFED_DRIVERS": "", "LLVM_TARGETS": "", "LIRC_DEVICES": "", "FETCHCOMMAND_SSH": "bash -c \"x=\\${2#ssh://} ; host=\\${x%%/*} ; port=\\${host##*:} ; host=\\${host%:*} ; [[ \\${host} = \\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\${port:+-p\\${port}} \\${3}\\\" -avP \\\"\\${host}:/\\${x#*/}\\\" \\\"\\$1\\\"\" rsync \"${DISTDIR}/${FILE}\" \"${URI}\" \"${PORTAGE_SSH_OPTS}\"", "PORTAGE_PYM_PATH": "/usr/lib64/python3.6/site-packages", "OZONE_PLATFORM_DEFAULT": "", "FCFLAGS": "-O2", "CHROMEOS_KERNEL_FAMILY": "", "EPAUSE_IGNORE": "1", "LSAN_OPTIONS": " print_suppressions=0", "TERM": "unknown", "BOOTSTRAP_USE": "cxx unicode python_targets_python3_2 python_targets_python2_7", "OBJCOPY_FOR_BUILD": "llvm-objcopy", "LESSOPEN": "|lesspipe %s", "EROOT": "/build/arm-generic", "CC_FOR_BUILD": "x86_64-pc-linux-gnu-clang", "AT_SYS_M4DIR": "${SYSROOT}/usr/share/aclocal", "PORTAGE_XATTR_EXCLUDE": "btrfs.* security.evm security.ima \tsecurity.selinux system.nfs4_acl user.apache_handler \tuser.Beagle.* user.dublincore.* user.mime_encoding user.xdg.*", "PORTAGE_LOG_FILE": "/build/arm-generic/tmp/portage/logs/sys-apps:flashrom-0.9.9-r1467:20220914-220408.log", "NOCOLOR": "true", "PORTAGE_DEBUG": "0", "CROS_WORKON_SRCROOT": "/mnt/host/source", "RESUMECOMMAND_AB": "/mnt/host/source/chromite/bin/abutil fetch \"${URI}\" \"${DISTDIR}/${FILE}\"", "OZONE_PLATFORM": "", "RESTRICT": "", "GCE_METADATA_HOST": "127.0.0.1:45269", "SANDBOX_DEBUG": "0", "PORTAGE_DEPCACHEDIR": "/var/cache/edb/dep", "AR": "llvm-ar", "ARCH": "arm", "NGINX_MODULES_HTTP": "", "ROOT": "/build/arm-generic", "VIDEO_CARDS": "", "ROS_MESSAGES": "", "ABI_X86": "", "TEMP": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp", "USE_EXPAND_VALUES_ARCH": "alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd riscv s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt", "INPUT_DEVICES": "", "OBJDUMP_FOR_BUILD": "llvm-objdump", "FOO2ZJS_DEVICES": "", "PORTAGE_COMPRESS_FLAGS": "-3", "SHLVL": "1", "AR_FOR_BUILD": "llvm-ar", "DISTDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/distdir", "NM": "llvm-nm", "PORTAGE_REPOSITORIES": "[DEFAULT]\nauto-sync = yes\nmain-repo = portage-stable\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n\n[arm-generic]\nauto-sync = yes\nlocation = /mnt/host/source/src/overlays/overlay-arm-generic\nmasters = portage-stable chromiumos eclass-overlay\npriority = 2\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n\n[chromiumos]\nauto-sync = yes\nlocation = /mnt/host/source/src/third_party/chromiumos-overlay\nmasters = portage-stable eclass-overlay\npriority = 0\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n\n[eclass-overlay]\nauto-sync = yes\nlocation = /mnt/host/source/src/third_party/eclass-overlay\nmasters = \npriority = 1\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n\n[portage-stable]\nauto-sync = yes\nlocation = /mnt/host/source/src/third_party/portage-stable\nmasters = eclass-overlay\npriority = -1000\nstrict-misc-digests = true\nsync-allow-hardlinks = true\nsync-rcu = false\n", "APACHE2_MPMS": "", "SANDBOX_WRITE": ":/build/arm-generic/tmp/portage:/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir/.bash_history:/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/", "CHOST_default": "armv7a-cros-linux-gnueabihf", "XFCE_PLUGINS": "", "GPSD_PROTOCOLS": "", "LC_MESSAGES": "C", "FETCHCOMMAND_CIPD": "/mnt/host/source/chromite/bin/fetch_cipd \"${URI}\" \"${DISTDIR}/${FILE}\"", "XTABLES_ADDONS": "", "LICENSE": "GPL-2", "PYTHONDONTWRITEBYTECODE": "1", "SYSROOT": "/build/arm-generic", "UBSAN_OPTIONS": " log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan:symbolize=1:print_stacktrace=1", "VOICEMAIL_STORAGE": "", "U_BOOT_CONFIG_USE": "", "PV": "0.9.9", "RESUMECOMMAND_SSH": "bash -c \"x=\\${2#ssh://} ; host=\\${x%%/*} ; port=\\${host##*:} ; host=\\${host%:*} ; [[ \\${host} = \\${port} ]] && port= ; exec rsync --rsh=\\\"ssh \\${port:+-p\\${port}} \\${3}\\\" -avP \\\"\\${host}:/\\${x#*/}\\\" \\\"\\$1\\\"\" rsync \"${DISTDIR}/${FILE}\" \"${URI}\" \"${PORTAGE_SSH_OPTS}\"", "SANDBOX_LOG": "/var/log/sandbox/sandbox-11625.log", "PR": "r1467", "STRIP_MASK": "*.nexe /firmware/*.elf", "COLLECTD_PLUGINS": "", "PN": "flashrom", "XARGS": "xargs -r", "SANE_BACKENDS": "", "USE_EXPAND_IMPLICIT": "ARCH ELIBC KERNEL USERLAND", "PF": "flashrom-0.9.9-r1467", "USE_EXPAND_VALUES_ELIBC": "AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt", "LD_LIBRARY_PATH": "/usr/local/lib", "CROS_ARTIFACTS_TMP_DIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/cros-artifacts", "PORTAGE_BASHRC": "/build/arm-generic/etc/portage/bashrc", "CXXLD_FOR_BUILD": "x86_64-pc-linux-gnu-clang++", "ACCEPT_LICENSE": "GPL-2", "BUILD_PREFIX": "/build/arm-generic/tmp/portage", "MERGE_TYPE": "source", "ABI_MIPS": "", "_E_DOCDESTTREE_": "", "_E_DESTTREE_": "/usr", "BOARD_RUSTFLAGS": "-Ctarget-feature=+armv7-a,+neon", "COMMON_COMPILER_FLAGS": "", "PORTAGE_ACTUAL_DISTDIR": "/var/cache/chromeos-cache/distfiles", "OBJCOPY": "llvm-objcopy", "RANLIB_FOR_BUILD": "llvm-ranlib", "CCACHE_DISABLE": "1", "LIBDIR_default": "lib", "PKG_INSTALL_MASK": "   /usr/lib*/*.la   /etc/init.d /etc/conf.d   /etc/logrotate.d   /etc/sandbox.d   /usr/share/bash-completion   /usr/share/locale ", "SANDBOX_PREDICT": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir:/dev/crypto:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/usr/share/cache/fontconfig:/", "FCDSL_CARDS": "", "LIBOPTIONS": "-m0644", "GRUB_PLATFORMS": "", "OBJC_FOR_BUILD": "x86_64-pc-linux-gnu-clang", "SANDBOX_DENY": "", "EBUILD_DEATH_HOOKS": " cros_log_failed_packages cros-workon_on_die_rebase_check asan_death_hook", "STRIP": "llvm-strip", "LC_COLLATE": "C", "OBJC": "x86_64-pc-linux-gnu-clang", "MSAN_OPTIONS": " log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan", "CHOST": "armv7a-cros-linux-gnueabihf", "TMP": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp", "PORTAGE_INST_GID": "0", "OBJDUMP": "llvm-objdump", "PATH": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/build-toolchain-wrappers:/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/build-toolchain-wrappers/gnu_tools:/usr/lib/portage/python3.6/ebuild-helpers/xattr:/usr/lib/portage/python3.6/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/bin:/build/arm-generic/build/bin", "SANDBOX_DEBUG_LOG": "/var/log/sandbox/sandbox-debug-11625.log", "PORTAGE_BZIP2_COMMAND": "lbzip2 -z", "PORTAGE_BUILDDIR": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467", "PORTAGE_USERNAME": "chrome-bot", "NGINX_MODULES_STREAM": "", "USE": "arm dummy elibc_glibc ft2232_spi internal it8212 kernel_linux linux_mtd linux_spi mediatek_i2c_spi parade_lspcon raiden_debug_spi realtek_mst_i2c_spi serprog stlinkv3_spi test usbblaster_spi userland_GNU wiki", "PHP_TARGETS": "", "READELF_FOR_BUILD": "llvm-readelf", "CC": "armv7a-cros-linux-gnueabihf-clang", "TESTS": "", "CCLD_FOR_BUILD": "x86_64-pc-linux-gnu-clang", "BOARD_OVERLAY": "/mnt/host/source/src/overlays/overlay-arm-generic", "CFLAGS": " -Os -pipe  -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections", "USE_EXPAND": "ABI_ARM ABI_MIPS ABI_PPC ABI_S390 ABI_X86 ALSA_CARDS APACHE2_MODULES APACHE2_MPMS BOARD_USE CALLIGRA_FEATURES CAMERAS CHROMEOS_KERNEL_FAMILY COLLECTD_PLUGINS CPU_FLAGS_ARM CPU_FLAGS_X86 CROSSCOMPILE_OPTS CROS_WORKON_TREE CURL_SSL DRACUT_MODULES DVB_CARDS EC_FIRMWARE EC_FIRMWARE_EXTRA ELIBC ENLIGHTENMENT_MODULES FCDSL_CARDS FFTOOLS FOO2ZJS_DEVICES FPMCU_FIRMWARE FRITZCAPI_CARDS GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES KERNEL LCD_DEVICES LIBREOFFICE_EXTENSIONS LINGUAS LINUX_FIRMWARE LIRC_DEVICES LLVM_TARGETS MONKEYD_PLUGINS NETBEANS_MODULES NGINX_MODULES_HTTP NGINX_MODULES_MAIL NGINX_MODULES_STREAM OFED_DRIVERS OFFICE_IMPLEMENTATION OPENMPI_FABRICS OPENMPI_OFED_FEATURES OPENMPI_RM OZONE_PLATFORM OZONE_PLATFORM_DEFAULT PHP_TARGETS PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS ROS_MESSAGES RUBY_TARGETS SANE_BACKENDS TESTS TTY_CONSOLE USERLAND UWSGI_PLUGINS U_BOOT_CONFIG_USE U_BOOT_FDT_USE VIDEO_CARDS VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS", "SANDBOX_BASHRC": "/usr/share/sandbox/sandbox.bashrc", "CROSSCOMPILE_OPTS": "", "SUDO_UID": "1000", "MULTILIB_ABIS": "arm", "STRINGS_FOR_BUILD": "llvm-strings", "LIBDIR_x86": "lib", "PORTAGE_GID": "250", "FETCHCOMMAND_GS": "bash -c 'BOTO_CONFIG= /mnt/host/source/chromite/bin/gs_fetch_binpkg \"${URI}\" \"${DISTDIR}/${FILE}\"'", "MAIL": "/var/mail/root", "PORTAGE_BUILD_GROUP": "portage", "BASHRC_FILESDIR": "/mnt/host/source/src/third_party/chromiumos-overlay/sys-apps/flashrom/files", "APACHE2_MODULES": "", "ELIBC": "glibc", "EAPI": "7", "RANLIB": "llvm-ranlib", "ABI": "arm", "ECLASS_DEPTH": "0", "PORTAGE_BASHRC_FILES": "/mnt/host/source/src/third_party/chromiumos-overlay/profiles/base/profile.bashrc\n/mnt/host/source/src/third_party/chromiumos-overlay/profiles/targets/chromeos/profile.bashrc", "CROS_WORKON_TREE": "121d6ec074232b3094218bca967b5335212c962d", "OLDPWD": "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir", "BUILD_LD": "x86_64-pc-linux-gnu-ld.lld", "MONKEYD_PLUGINS": "", "EMERGE_FROM": "ebuild", "LADSPA_PATH": "/usr/lib/ladspa", "PKG_CONFIG": "/build/arm-generic/build/bin/pkg-config", "DVB_CARDS": "", "_": "/usr/bin/meson", "MESON_EXE_WRAPPER": "/mnt/host/source/src/platform2/common-mk/meson_test.py", "MALLOC_PERTURB_": "221"}, "command": ["/mnt/host/source/src/platform2/common-mk/meson_test.py", "/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/tests/flashrom_unit_tests"], "stderr": "[  PASSED  ] 7 test(s).\n[  PASSED  ] 1 test(s).\n[  PASSED  ] 11 test(s).\n[  PASSED  ] 12 test(s).\n[  SKIPPED ] 2 test(s), listed below:\n[  SKIPPED ] nicrealtek_basic_lifecycle_test_success\n[  SKIPPED ] dediprog_basic_lifecycle_test_success\n\n 2 SKIPPED TEST(S)\n[  PASSED  ] 6 test(s).\n[  PASSED  ] 8 test(s).\n[  PASSED  ] 6 test(s).\n"}
diff --git a/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.junit.xml b/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.junit.xml
index 5da1073..39f50b5 100644
--- a/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.junit.xml
+++ b/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.junit.xml
@@ -1,5 +1,5 @@
 <?xml version='1.0' encoding='utf-8'?>
-<testsuites errors="0" failures="0" tests="1"><testsuite errors="0" failures="0" name="flashromutils" skipped="0" tests="1" time="10.880510330200195"><testcase classname="flashromutils" name="cmocka test flashrom" time="10.880510330200195"><system-out>Running [PosixPath('/mnt/host/source/src/platform2/common-mk/platform2_test.py'), '--sysroot', '/build/arm-generic', '--', '/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/tests/flashrom_unit_tests']
+<testsuites errors="0" failures="0" tests="1"><testsuite errors="0" failures="0" name="flashromutils" skipped="0" tests="1" time="10.915831089019775"><testcase classname="flashromutils" name="cmocka test flashrom" time="10.915831089019775"><system-out>Running [PosixPath('/mnt/host/source/src/platform2/common-mk/platform2_test.py'), '--sysroot', '/build/arm-generic', '--', '/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/tests/flashrom_unit_tests']
 [==========] Running 7 test(s).
 [ RUN      ] address_to_bits_test_success
 [       OK ] address_to_bits_test_success
diff --git a/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.txt b/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.txt
index 441f1e9..5480378 100644
--- a/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.txt
+++ b/chroot/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/meson-logs/testlog.txt
@@ -1,11 +1,11 @@
-Log of Meson test suite run on 2022-09-14T03:51:04.076909
+Log of Meson test suite run on 2022-09-14T15:04:22.976470
 
-Inherited environment: SANDBOX_MESSAGE_P@TH=/proc/11586/fd/2 SLOT=0/0 SHELL=/bin/bash RUBY_TARGETS='' PORTAGE_INST_UID=0 KERNEL_ABI=arm PORTAGE_PYTHONPATH=/usr/lib64/python3.6/site-packages QEMU_SOFTMMU_TARGETS='' PORTAGE_FEATURES='allow-missing-manifests assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg clean-logs config-protect-if-modified distlocks fixlafiles force-mirror ipc-sandbox multilib-strict network-sandbox noclean nodoc noinfo noman parallel-fetch parallel-install protect-owned sandbox sfperms splitdebug test unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr' cros_setup_hooks_run=booya ESYSROOT=/build/arm-generic PYTHON_COMPAT_OVERRIDE=python3_6 LESS='-R -M --shift 5' SUDO_GID=1000 BOTO_CONFIG='' ROOTPATH=/opt/bin:/usr/lib/llvm/bin USE_EXPAND_VALUES_KERNEL='AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt' PORTAGE_PYTHON=/usr/bin/python3.6m PYTHON_SINGLE_TARGET='' BOARD_COMPILER_FLAGS='-march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard' PROFILE_ONLY_VARIABLES='ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND' SYMLINK_LIB=no TSAN_OPTIONS=' log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan' PKG_CONFIG_PATH=/usr/lib/pkgconfig SANDBOX_ACTIVE=armedandready LLVM_PROFILE_FILE=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/coverage_logs/flashrom-0.9.9_%9m.profraw LINUX_FIRMWARE='' USERLAND=GNU CPU_FLAGS_X86='' PKG_TMPDIR=/build/arm-generic/tmp/portage/._unmerge_ PKGUSE='' USE_EXPAND_VALUES_USERLAND='BSD GNU' CHOST_arm=arm-unknown-linux-gnu TTY_CONSOLE='' SANDBOX_ON=1 IUSE_EFFECTIVE='alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 asan atahpt atapromise atavia buspirate_spi ch341a_spi coverage cros_host cros_workon_tree_121d6ec074232b3094218bca967b5335212c962d dediprog developerbox_spi digilent_spi drkaiser dummy elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_bionic elibc_glibc elibc_mingw elibc_mintlib elibc_musl elibc_uclibc ft2232_spi fuzzer gfxnvidia hppa hppa-hpux ia64 ia64-hpux ia64-linux internal it8212 jlink_spi kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux linux_mtd linux_spi m68k m68k-mint mediatek_i2c_spi mips msan mstarddc_spi nic3com nicintel nicintel_eeprom nicintel_spi nicnatsemi nicrealtek nios2 ogp_spi parade_lspcon pickit2_spi pony_spi ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest prefix-stack raiden_debug_spi rayer_spi realtek_mst_i2c_spi riscv s390 satamv satasii serprog sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris static stlinkv3_spi test tsan ubsan usbblaster_spi userland_BSD userland_GNU wiki x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt' EPREFIX='' STRINGS=llvm-strings EBUILD_PHASE_FUNC=src_test RESUMECOMMAND_CIPD='/mnt/host/source/chromite/bin/fetch_cipd "${URI}" "${DISTDIR}/${FILE}"' CAMERAS='' CURL_SSL='' PORTAGE_IPC_DAEMON=1 PORTAGE_BUNZIP2_COMMAND='lbzip2 -d' PROPERTIES='live live' EBUILD_PHASE=test IUSE_IMPLICIT='prefix prefix-guest prefix-stack' FRITZCAPI_CARDS='' CXXEXCEPTIONS_FLAGS='-fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables' SUDO_COMMAND='/bin/bash -c FEATURES="noclean test" parallel_emerge --board arm-generic chromeos-base/libchrome chromeos-base/system_api chromeos-base/libbrillo chromeos-base/libhwsec-foundation chromeos-base/tpm_manager-client chromeos-base/libtpmcrypto chromeos-base/libhwsec chromeos-base/metrics chromeos-base/attestation-client chromeos-base/tpm_manager chromeos-base/chaps media-libs/cros-camera-libfs chromeos-base/cros-camera-android-deps chromeos-base/chromeos-config-tools chromeos-base/bootstat chromeos-base/shill-client chromeos-base/power_manager-client chromeos-base/cryptohome-client chromeos-base/secure-erase-file chromeos-base/cbor chromeos-base/bootlockbox-client chromeos-base/biod_proxy chromeos-base/attestation chromeos-base/chromeos-common-script chromeos-base/cros-camera-libs chromeos-base/libmems chromeos-base/session_manager-client chromeos-base/shill chromeos-base/shill-net chromeos-base/runtime_probe dev-libs/libutf chromeos-base/libpasswordprovider chromeos-base/libcontainer chromeos-base/libchromeos-ui chromeos-base/cryptohome chromeos-base/chromeos-storage-info chromeos-base/oobe_config chromeos-base/imageloader media-libs/cros-camera-hal-usb chromeos-base/verity chromeos-base/libec chromeos-base/libiioservice_ipc chromeos-base/permission_broker-client chromeos-base/mojo_service_manager chromeos-base/mems_setup chromeos-base/patchpanel-client chromeos-base/patchpanel chromeos-base/debugd-client chromeos-base/missive chromeos-base/runtime_probe-client dev-libs/libtextclassifier chromeos-base/chromeos-login chromeos-base/chromeos-init chromeos-base/shill-dbus-client chromeos-base/ml-client chromeos-base/libipp chromeos-base/update_engine-client chromeos-base/imageloader-client chromeos-base/dlcservice-client chromeos-base/vm_protos chromeos-base/libcrossystem chromeos-base/hardware_verifier_proto chromeos-base/modemfwd-proto chromeos-base/wilco-dtc-grpc-protos chromeos-base/policy-go-proto chromeos-base/chaps-client chromeos-base/p2p chromeos-base/modem-utilities chromeos-base/u2fd-client dev-libs/modp_b64 chromeos-base/secanomalyd chromeos-base/cros-camera chromeos-base/chromeos-installer chromeos-base/dev-install chromeos-base/rgbkbd chromeos-base/cros-disks chromeos-base/iioservice_simpleclient chromeos-base/lorgnette chromeos-base/chromeos-imageburner chromeos-base/iioservice chromeos-base/system-proxy chromeos-base/fusebox chromeos-base/hpsd chromeos-base/lexmark-fax-pnh chromeos-base/libvda-gpu-tests chromeos-base/secure-wipe chromeos-base/croslog chromeos-base/tpm_softclear_utils chromeos-base/cros-camera-tool chromeos-base/spaced chromeos-base/diagnostics chromeos-base/hps-tool chromeos-base/featured chromeos-base/hardware_verifier chromeos-base/ml chromeos-base/debugd chromeos-base/run_oci chromeos-base/permission_broker chromeos-base/kerberos chromeos-base/perfetto_simple_producer chromeos-base/smbprovider chromeos-base/chromeos-trim chromeos-base/dns-proxy chromeos-base/mist chromeos-base/hwsec-test-utils chromeos-base/power_manager chromeos-base/print_tools chromeos-base/dlp chromeos-base/smbfs chromeos-base/dlcservice chromeos-base/crash-reporter chromeos-base/usb_bouncer chromeos-base/policy_utils media-libs/cros-camera-libjea_test media-libs/cros-camera-document-scanning-test media-libs/cros-camera-test media-libs/cros-camera-usb-tests media-libs/cros-camera-libcamera_connector_test' PORTAGE_SIGPIPE_STATUS=141 OFFICE_IMPLEMENTATION='' CBUILD=x86_64-pc-linux-gnu SUDO_USER=chrome-bot DEFAULT_ABI=arm BUILD_CXX=x86_64-pc-linux-gnu-clang++ LIBDIR_arm=lib FPMCU_FIRMWARE='' ALSA_CARDS='' ABI_S390='' KERNEL=linux FFLAGS=-O2 EDITOR=/usr/bin/vi ED=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/image PORTAGE_ARCHLIST='alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux s390 sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt' EBUILD=/mnt/host/source/src/third_party/chromiumos-overlay/sys-apps/flashrom/flashrom-0.9.9-r1467.ebuild INHERITED=' cros-constants cros-credentials eutils toolchain-funcs multilib flag-o-matic git-2 cros-workon multiprocessing ninja-utils python-utils-r1 meson cros-sanitizers' OPENMPI_RM='' EBUILD_MASTER_PID=11632 PORTAGE_REPO_NAME=chromiumos PWD=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9 FETCHCOMMAND_AB='/mnt/host/source/chromite/bin/abutil fetch "${URI}" "${DISTDIR}/${FILE}"' PORTAGE_RESTRICT='' PORTAGE_DOCOMPRESS_SIZE_LIMIT=128 LOGNAME=chrome-bot CXXEXCEPTIONS=0 EXEOPTIONS=-m0755 CTARGET_default=armv7a-cros-linux-gnueabihf DEFINED_PHASES=' compile configure info install setup test unpack' PORTAGE_BINPKG_TAR_OPTS=--checkpoint=1000 SANDBOX_VERBOSE=1 PORTAGE_WORKDIR_MODE=0755 PKGDIR=/build/arm-generic/packages/ FILESDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/files RESUMECOMMAND_GS='bash -c '"'"'BOTO_CONFIG= /mnt/host/source/chromite/bin/gs_fetch_binpkg "${URI}" "${DISTDIR}/${FILE}"'"'"'' DIROPTIONS=-m0755 MAKEOPTS=-j32 PORTAGE_CONFIGROOT=/build/arm-generic/ PM_EBUILD_HOOK_DIR=/build/arm-generic/etc/portage/env CXX=armv7a-cros-linux-gnueabihf-clang++ CXXFLAGS=' -Os -pipe  -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections' PORTAGE_OVERRIDE_EPREFIX='' XAUTHORITY=/home/chronos/.Xauthority BUILD_CC=x86_64-pc-linux-gnu-clang ABI_PPC='' T=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp S=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9 P=flashrom-0.9.9 U_BOOT_FDT_USE='' D=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/image A='' CATEGORY=sys-apps EC_FIRMWARE_EXTRA='' LD_PRELOAD=libsandbox.so PYTHON_TARGETS='' ENLIGHTENMENT_MODULES='' CALLIGRA_FEATURES='' GI_TYPELIB_PATH=/usr/local/lib/girepository-1.0:/usr/lib/girepository-1.0 LDFLAGS='-Wl,-O2 -Wl,--as-needed  -Wl,--gc-sections -Wl,--icf=all' EBEEP_IGNORE=1 HOME=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir LIBREOFFICE_EXTENSIONS='' NETBEANS='apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml' LANG=en_US.UTF-8 PORTAGE_COMPRESS=pigz WORKDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work QEMU_USER_TARGETS='' DRACUT_MODULES='' INSOPTIONS=-m0644 SANDBOX_LIB=libsandbox.so UWSGI_PLUGINS='' CROS_BASE_RUSTFLAGS=-Ctarget-feature=+armv7-a,+neon COLUMNS=80 BROOT='' BOARD_USE='' PORTAGE_TMPDIR=/build/arm-generic/tmp CXX_FOR_BUILD=x86_64-pc-linux-gnu-clang++ LINGUAS='' PORTAGE_COLORMAP='GOOD=$'"'"''"'"'
+Inherited environment: SANDBOX_MESSAGE_P@TH=/proc/11625/fd/2 SLOT=0/0 SHELL=/bin/bash RUBY_TARGETS='' PORTAGE_INST_UID=0 KERNEL_ABI=arm PORTAGE_PYTHONPATH=/usr/lib64/python3.6/site-packages QEMU_SOFTMMU_TARGETS='' PORTAGE_FEATURES='allow-missing-manifests assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg clean-logs config-protect-if-modified distlocks fixlafiles force-mirror ipc-sandbox multilib-strict network-sandbox noclean nodoc noinfo noman parallel-fetch parallel-install protect-owned sandbox sfperms splitdebug test unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr' cros_setup_hooks_run=booya ESYSROOT=/build/arm-generic PYTHON_COMPAT_OVERRIDE=python3_6 LESS='-R -M --shift 5' SUDO_GID=1000 BOTO_CONFIG='' ROOTPATH=/opt/bin:/usr/lib/llvm/bin USE_EXPAND_VALUES_KERNEL='AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt' PORTAGE_PYTHON=/usr/bin/python3.6m PYTHON_SINGLE_TARGET='' BOARD_COMPILER_FLAGS='-march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard' PROFILE_ONLY_VARIABLES='ARCH ELIBC IUSE_IMPLICIT KERNEL USERLAND USE_EXPAND_IMPLICIT USE_EXPAND_UNPREFIXED USE_EXPAND_VALUES_ARCH USE_EXPAND_VALUES_ELIBC USE_EXPAND_VALUES_KERNEL USE_EXPAND_VALUES_USERLAND' SYMLINK_LIB=no TSAN_OPTIONS=' log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan' PKG_CONFIG_PATH=/usr/lib/pkgconfig SANDBOX_ACTIVE=armedandready LLVM_PROFILE_FILE=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/coverage_logs/flashrom-0.9.9_%9m.profraw LINUX_FIRMWARE='' USERLAND=GNU CPU_FLAGS_X86='' PKG_TMPDIR=/build/arm-generic/tmp/portage/._unmerge_ PKGUSE='' USE_EXPAND_VALUES_USERLAND='BSD GNU' CHOST_arm=arm-unknown-linux-gnu TTY_CONSOLE='' SANDBOX_ON=1 IUSE_EFFECTIVE='alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 asan atahpt atapromise atavia buspirate_spi ch341a_spi coverage cros_host cros_workon_tree_121d6ec074232b3094218bca967b5335212c962d dediprog developerbox_spi digilent_spi drkaiser dummy elibc_AIX elibc_Cygwin elibc_Darwin elibc_DragonFly elibc_FreeBSD elibc_HPUX elibc_Interix elibc_NetBSD elibc_OpenBSD elibc_SunOS elibc_Winnt elibc_bionic elibc_glibc elibc_mingw elibc_mintlib elibc_musl elibc_uclibc ft2232_spi fuzzer gfxnvidia hppa hppa-hpux ia64 ia64-hpux ia64-linux internal it8212 jlink_spi kernel_AIX kernel_Darwin kernel_FreeBSD kernel_HPUX kernel_NetBSD kernel_OpenBSD kernel_SunOS kernel_Winnt kernel_freemint kernel_linux linux_mtd linux_spi m68k m68k-mint mediatek_i2c_spi mips msan mstarddc_spi nic3com nicintel nicintel_eeprom nicintel_spi nicnatsemi nicrealtek nios2 ogp_spi parade_lspcon pickit2_spi pony_spi ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux prefix prefix-guest prefix-stack raiden_debug_spi rayer_spi realtek_mst_i2c_spi riscv s390 satamv satasii serprog sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris static stlinkv3_spi test tsan ubsan usbblaster_spi userland_BSD userland_GNU wiki x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt' EPREFIX='' STRINGS=llvm-strings EBUILD_PHASE_FUNC=src_test RESUMECOMMAND_CIPD='/mnt/host/source/chromite/bin/fetch_cipd "${URI}" "${DISTDIR}/${FILE}"' CAMERAS='' CURL_SSL='' PORTAGE_IPC_DAEMON=1 PORTAGE_BUNZIP2_COMMAND='lbzip2 -d' PROPERTIES='live live' EBUILD_PHASE=test IUSE_IMPLICIT='prefix prefix-guest prefix-stack' FRITZCAPI_CARDS='' CXXEXCEPTIONS_FLAGS='-fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables' SUDO_COMMAND='/bin/bash -c FEATURES="noclean test" parallel_emerge --board arm-generic chromeos-base/libchrome chromeos-base/system_api chromeos-base/libbrillo chromeos-base/libhwsec-foundation chromeos-base/tpm_manager-client chromeos-base/libtpmcrypto chromeos-base/libhwsec chromeos-base/metrics chromeos-base/attestation-client chromeos-base/tpm_manager chromeos-base/chaps media-libs/cros-camera-libfs chromeos-base/cros-camera-android-deps chromeos-base/chromeos-config-tools chromeos-base/bootstat chromeos-base/shill-client chromeos-base/power_manager-client chromeos-base/cryptohome-client chromeos-base/secure-erase-file chromeos-base/cbor chromeos-base/bootlockbox-client chromeos-base/biod_proxy chromeos-base/attestation chromeos-base/chromeos-common-script chromeos-base/cros-camera-libs chromeos-base/libmems chromeos-base/session_manager-client chromeos-base/shill chromeos-base/shill-net chromeos-base/runtime_probe dev-libs/libutf chromeos-base/libpasswordprovider chromeos-base/libcontainer chromeos-base/libchromeos-ui chromeos-base/cryptohome chromeos-base/chromeos-storage-info chromeos-base/oobe_config chromeos-base/imageloader media-libs/cros-camera-hal-usb chromeos-base/verity chromeos-base/libec chromeos-base/libiioservice_ipc chromeos-base/permission_broker-client chromeos-base/mojo_service_manager chromeos-base/mems_setup chromeos-base/patchpanel-client chromeos-base/patchpanel chromeos-base/debugd-client chromeos-base/missive chromeos-base/runtime_probe-client dev-libs/libtextclassifier chromeos-base/chromeos-login chromeos-base/chromeos-init chromeos-base/shill-dbus-client chromeos-base/ml-client chromeos-base/libipp chromeos-base/update_engine-client chromeos-base/imageloader-client chromeos-base/dlcservice-client chromeos-base/vm_protos chromeos-base/libcrossystem chromeos-base/hardware_verifier_proto chromeos-base/modemfwd-proto chromeos-base/wilco-dtc-grpc-protos chromeos-base/policy-go-proto chromeos-base/chaps-client chromeos-base/p2p chromeos-base/modem-utilities chromeos-base/u2fd-client dev-libs/modp_b64 chromeos-base/secanomalyd chromeos-base/cros-camera chromeos-base/chromeos-installer chromeos-base/dev-install chromeos-base/rgbkbd chromeos-base/cros-disks chromeos-base/iioservice_simpleclient chromeos-base/lorgnette chromeos-base/chromeos-imageburner chromeos-base/iioservice chromeos-base/system-proxy chromeos-base/fusebox chromeos-base/hpsd chromeos-base/lexmark-fax-pnh chromeos-base/libvda-gpu-tests chromeos-base/secure-wipe chromeos-base/croslog chromeos-base/tpm_softclear_utils chromeos-base/cros-camera-tool chromeos-base/spaced chromeos-base/diagnostics chromeos-base/hps-tool chromeos-base/featured chromeos-base/hardware_verifier chromeos-base/ml chromeos-base/debugd chromeos-base/run_oci chromeos-base/permission_broker chromeos-base/kerberos chromeos-base/perfetto_simple_producer chromeos-base/smbprovider chromeos-base/chromeos-trim chromeos-base/dns-proxy chromeos-base/mist chromeos-base/hwsec-test-utils chromeos-base/power_manager chromeos-base/print_tools chromeos-base/dlp chromeos-base/smbfs chromeos-base/dlcservice chromeos-base/crash-reporter chromeos-base/usb_bouncer chromeos-base/policy_utils media-libs/cros-camera-libjea_test media-libs/cros-camera-document-scanning-test media-libs/cros-camera-test media-libs/cros-camera-usb-tests media-libs/cros-camera-libcamera_connector_test' PORTAGE_SIGPIPE_STATUS=141 OFFICE_IMPLEMENTATION='' CBUILD=x86_64-pc-linux-gnu SUDO_USER=chrome-bot DEFAULT_ABI=arm BUILD_CXX=x86_64-pc-linux-gnu-clang++ LIBDIR_arm=lib FPMCU_FIRMWARE='' ALSA_CARDS='' ABI_S390='' KERNEL=linux FFLAGS=-O2 EDITOR=/usr/bin/vi ED=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/image PORTAGE_ARCHLIST='alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips ppc ppc-aix ppc-macos ppc-openbsd ppc64 ppc64-linux s390 sh sparc sparc-fbsd sparc-solaris sparc64-freebsd sparc64-solaris x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt' EBUILD=/mnt/host/source/src/third_party/chromiumos-overlay/sys-apps/flashrom/flashrom-0.9.9-r1467.ebuild INHERITED=' cros-constants cros-credentials eutils toolchain-funcs multilib flag-o-matic git-2 cros-workon multiprocessing ninja-utils python-utils-r1 meson cros-sanitizers' OPENMPI_RM='' EBUILD_MASTER_PID=11672 PORTAGE_REPO_NAME=chromiumos PWD=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9 FETCHCOMMAND_AB='/mnt/host/source/chromite/bin/abutil fetch "${URI}" "${DISTDIR}/${FILE}"' PORTAGE_RESTRICT='' PORTAGE_DOCOMPRESS_SIZE_LIMIT=128 LOGNAME=chrome-bot CXXEXCEPTIONS=0 EXEOPTIONS=-m0755 CTARGET_default=armv7a-cros-linux-gnueabihf DEFINED_PHASES=' compile configure info install setup test unpack' PORTAGE_BINPKG_TAR_OPTS=--checkpoint=1000 SANDBOX_VERBOSE=1 PORTAGE_WORKDIR_MODE=0755 PKGDIR=/build/arm-generic/packages/ FILESDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/files RESUMECOMMAND_GS='bash -c '"'"'BOTO_CONFIG= /mnt/host/source/chromite/bin/gs_fetch_binpkg "${URI}" "${DISTDIR}/${FILE}"'"'"'' DIROPTIONS=-m0755 MAKEOPTS=-j32 PORTAGE_CONFIGROOT=/build/arm-generic/ PM_EBUILD_HOOK_DIR=/build/arm-generic/etc/portage/env CXX=armv7a-cros-linux-gnueabihf-clang++ CXXFLAGS=' -Os -pipe  -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections' PORTAGE_OVERRIDE_EPREFIX='' XAUTHORITY=/home/chronos/.Xauthority BUILD_CC=x86_64-pc-linux-gnu-clang ABI_PPC='' T=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp S=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9 P=flashrom-0.9.9 U_BOOT_FDT_USE='' D=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/image A='' CATEGORY=sys-apps EC_FIRMWARE_EXTRA='' LD_PRELOAD=libsandbox.so PYTHON_TARGETS='' ENLIGHTENMENT_MODULES='' CALLIGRA_FEATURES='' GI_TYPELIB_PATH=/usr/local/lib/girepository-1.0:/usr/lib/girepository-1.0 LDFLAGS='-Wl,-O2 -Wl,--as-needed  -Wl,--gc-sections -Wl,--icf=all' EBEEP_IGNORE=1 HOME=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir LIBREOFFICE_EXTENSIONS='' NETBEANS='apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml' LANG=en_US.UTF-8 PORTAGE_COMPRESS=pigz WORKDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work QEMU_USER_TARGETS='' DRACUT_MODULES='' INSOPTIONS=-m0644 SANDBOX_LIB=libsandbox.so UWSGI_PLUGINS='' CROS_BASE_RUSTFLAGS=-Ctarget-feature=+armv7-a,+neon COLUMNS=80 BROOT='' BOARD_USE='' PORTAGE_TMPDIR=/build/arm-generic/tmp CXX_FOR_BUILD=x86_64-pc-linux-gnu-clang++ LINGUAS='' PORTAGE_COLORMAP='GOOD=$'"'"''"'"'
 WARN=$'"'"''"'"'
 BAD=$'"'"''"'"'
 HILITE=$'"'"''"'"'
 BRACKET=$'"'"''"'"'
-NORMAL=$'"'"''"'"'' SANDBOX_READ=/:/build/arm-generic/tmp/portage LCD_DEVICES='' FEATURES='allow-missing-manifests assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg clean-logs config-protect-if-modified distlocks fixlafiles force-mirror ipc-sandbox multilib-strict network-sandbox noclean nodoc noinfo noman parallel-fetch parallel-install protect-owned sandbox sfperms splitdebug test unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr' NETBEANS_MODULES='' TMPDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp INSTALL_MASK='   /usr/lib*/*.la   /etc/init.d /etc/conf.d   /etc/logrotate.d   /etc/sandbox.d   /usr/share/bash-completion   /usr/share/locale ' PORTAGE_BIN_PATH=/usr/lib/portage/python3.6 _E_INSDESTTREE_='' SANDBOX_METHOD=any LD=armv7a-cros-linux-gnueabihf-ld.lld POSTSUBMIT_BINHOST=gs://chromeos-prebuilt/board/arm-generic/postsubmit-R107-15112.0.0-39877-8803137353401282177/packages OPENMPI_OFED_FEATURES='' NM_FOR_BUILD=llvm-nm ABI_ARM='' PORTAGE_INTERNAL_CALLER=1 PORTAGE_COMPRESSION_COMMAND='zstd -3' PVR=0.9.9-r1467 MARCH_TUNE='' PKG_LOGDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/logging READELF=llvm-readelf CPU_FLAGS_ARM='' ASAN_OPTIONS=' log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan detect_stack_use_after_return=0' KEYWORDS='*' PORTAGE_COMPRESS_EXCLUDE_SUFFIXES='css gif htm[l]? jp[e]?g js pdf png' STRIP_FOR_BUILD=llvm-strip FULL_BINHOST=gs://chromeos-prebuilt/board/arm-generic/full-R107-15113.0.0-rc1/packages/ PORTAGE_BUILD_USER=chrome-bot VCSID=0.9.9-r1467-240388765153af4f68ee2edd69e77991591b686c OPENMPI_FABRICS='' CHROMEOS_KERNEL_SPLITCONFIG=chromiumos-arm NGINX_MODULES_MAIL='' USE_EXPAND_UNPREFIXED=ARCH PORT_LOGDIR=/build/arm-generic/tmp/portage/logs/ MOPREFIX=flashrom EC_FIRMWARE='' _E_EXEDESTTREE_='' MOZ_GMP_PATH=/build/arm-generic/usr/lib/nsbrowser/plugins/gmp-gmpopenh264/system-installed FFTOOLS='' OFED_DRIVERS='' LLVM_TARGETS='' LIRC_DEVICES='' FETCHCOMMAND_SSH='bash -c "x=\${2#ssh://} ; host=\${x%%/*} ; port=\${host##*:} ; host=\${host%:*} ; [[ \${host} = \${port} ]] && port= ; exec rsync --rsh=\"ssh \${port:+-p\${port}} \${3}\" -avP \"\${host}:/\${x#*/}\" \"\$1\"" rsync "${DISTDIR}/${FILE}" "${URI}" "${PORTAGE_SSH_OPTS}"' PORTAGE_PYM_PATH=/usr/lib64/python3.6/site-packages OZONE_PLATFORM_DEFAULT='' FCFLAGS=-O2 CHROMEOS_KERNEL_FAMILY='' EPAUSE_IGNORE=1 LSAN_OPTIONS=' print_suppressions=0' TERM=unknown BOOTSTRAP_USE='cxx unicode python_targets_python3_2 python_targets_python2_7' OBJCOPY_FOR_BUILD=llvm-objcopy EROOT=/build/arm-generic LESSOPEN='|lesspipe %s' CC_FOR_BUILD=x86_64-pc-linux-gnu-clang AT_SYS_M4DIR='${SYSROOT}/usr/share/aclocal' PORTAGE_XATTR_EXCLUDE='btrfs.* security.evm security.ima 	security.selinux system.nfs4_acl user.apache_handler 	user.Beagle.* user.dublincore.* user.mime_encoding user.xdg.*' PORTAGE_LOG_FILE=/build/arm-generic/tmp/portage/logs/sys-apps:flashrom-0.9.9-r1467:20220914-105049.log NOCOLOR=true PORTAGE_DEBUG=0 CROS_WORKON_SRCROOT=/mnt/host/source RESUMECOMMAND_AB='/mnt/host/source/chromite/bin/abutil fetch "${URI}" "${DISTDIR}/${FILE}"' OZONE_PLATFORM='' RESTRICT='' GCE_METADATA_HOST=127.0.0.1:39281 SANDBOX_DEBUG=0 PORTAGE_DEPCACHEDIR=/var/cache/edb/dep AR=llvm-ar ARCH=arm NGINX_MODULES_HTTP='' ROOT=/build/arm-generic VIDEO_CARDS='' ROS_MESSAGES='' ABI_X86='' TEMP=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp USE_EXPAND_VALUES_ARCH='alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd riscv s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt' INPUT_DEVICES='' OBJDUMP_FOR_BUILD=llvm-objdump FOO2ZJS_DEVICES='' PORTAGE_COMPRESS_FLAGS=-3 SHLVL=1 AR_FOR_BUILD=llvm-ar DISTDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/distdir NM=llvm-nm PORTAGE_REPOSITORIES='[DEFAULT]
+NORMAL=$'"'"''"'"'' SANDBOX_READ=/:/build/arm-generic/tmp/portage LCD_DEVICES='' FEATURES='allow-missing-manifests assume-digests binpkg-docompress binpkg-dostrip binpkg-logs buildpkg clean-logs config-protect-if-modified distlocks fixlafiles force-mirror ipc-sandbox multilib-strict network-sandbox noclean nodoc noinfo noman parallel-fetch parallel-install protect-owned sandbox sfperms splitdebug test unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr' NETBEANS_MODULES='' TMPDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp INSTALL_MASK='   /usr/lib*/*.la   /etc/init.d /etc/conf.d   /etc/logrotate.d   /etc/sandbox.d   /usr/share/bash-completion   /usr/share/locale ' PORTAGE_BIN_PATH=/usr/lib/portage/python3.6 _E_INSDESTTREE_='' SANDBOX_METHOD=any LD=armv7a-cros-linux-gnueabihf-ld.lld POSTSUBMIT_BINHOST=gs://chromeos-prebuilt/board/arm-generic/postsubmit-R107-15114.0.0-39911-8803074039107318465/packages OPENMPI_OFED_FEATURES='' NM_FOR_BUILD=llvm-nm ABI_ARM='' PORTAGE_INTERNAL_CALLER=1 PORTAGE_COMPRESSION_COMMAND='zstd -3' PVR=0.9.9-r1467 MARCH_TUNE='' PKG_LOGDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/logging READELF=llvm-readelf CPU_FLAGS_ARM='' ASAN_OPTIONS=' log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan detect_stack_use_after_return=0' KEYWORDS='*' PORTAGE_COMPRESS_EXCLUDE_SUFFIXES='css gif htm[l]? jp[e]?g js pdf png' STRIP_FOR_BUILD=llvm-strip FULL_BINHOST=gs://chromeos-prebuilt/board/arm-generic/full-R107-15113.0.0-rc1/packages/ PORTAGE_BUILD_USER=chrome-bot VCSID=0.9.9-r1467-240388765153af4f68ee2edd69e77991591b686c OPENMPI_FABRICS='' CHROMEOS_KERNEL_SPLITCONFIG=chromiumos-arm NGINX_MODULES_MAIL='' USE_EXPAND_UNPREFIXED=ARCH PORT_LOGDIR=/build/arm-generic/tmp/portage/logs/ MOPREFIX=flashrom EC_FIRMWARE='' _E_EXEDESTTREE_='' MOZ_GMP_PATH=/build/arm-generic/usr/lib/nsbrowser/plugins/gmp-gmpopenh264/system-installed FFTOOLS='' OFED_DRIVERS='' LLVM_TARGETS='' LIRC_DEVICES='' FETCHCOMMAND_SSH='bash -c "x=\${2#ssh://} ; host=\${x%%/*} ; port=\${host##*:} ; host=\${host%:*} ; [[ \${host} = \${port} ]] && port= ; exec rsync --rsh=\"ssh \${port:+-p\${port}} \${3}\" -avP \"\${host}:/\${x#*/}\" \"\$1\"" rsync "${DISTDIR}/${FILE}" "${URI}" "${PORTAGE_SSH_OPTS}"' PORTAGE_PYM_PATH=/usr/lib64/python3.6/site-packages OZONE_PLATFORM_DEFAULT='' FCFLAGS=-O2 CHROMEOS_KERNEL_FAMILY='' EPAUSE_IGNORE=1 LSAN_OPTIONS=' print_suppressions=0' TERM=unknown BOOTSTRAP_USE='cxx unicode python_targets_python3_2 python_targets_python2_7' OBJCOPY_FOR_BUILD=llvm-objcopy LESSOPEN='|lesspipe %s' EROOT=/build/arm-generic CC_FOR_BUILD=x86_64-pc-linux-gnu-clang AT_SYS_M4DIR='${SYSROOT}/usr/share/aclocal' PORTAGE_XATTR_EXCLUDE='btrfs.* security.evm security.ima 	security.selinux system.nfs4_acl user.apache_handler 	user.Beagle.* user.dublincore.* user.mime_encoding user.xdg.*' PORTAGE_LOG_FILE=/build/arm-generic/tmp/portage/logs/sys-apps:flashrom-0.9.9-r1467:20220914-220408.log NOCOLOR=true PORTAGE_DEBUG=0 CROS_WORKON_SRCROOT=/mnt/host/source RESUMECOMMAND_AB='/mnt/host/source/chromite/bin/abutil fetch "${URI}" "${DISTDIR}/${FILE}"' OZONE_PLATFORM='' RESTRICT='' GCE_METADATA_HOST=127.0.0.1:45269 SANDBOX_DEBUG=0 PORTAGE_DEPCACHEDIR=/var/cache/edb/dep AR=llvm-ar ARCH=arm NGINX_MODULES_HTTP='' ROOT=/build/arm-generic VIDEO_CARDS='' ROS_MESSAGES='' ABI_X86='' TEMP=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp USE_EXPAND_VALUES_ARCH='alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd riscv s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt' INPUT_DEVICES='' OBJDUMP_FOR_BUILD=llvm-objdump FOO2ZJS_DEVICES='' PORTAGE_COMPRESS_FLAGS=-3 SHLVL=1 AR_FOR_BUILD=llvm-ar DISTDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/distdir NM=llvm-nm PORTAGE_REPOSITORIES='[DEFAULT]
 auto-sync = yes
 main-repo = portage-stable
 strict-misc-digests = true
@@ -47,11 +47,11 @@
 strict-misc-digests = true
 sync-allow-hardlinks = true
 sync-rcu = false
-' APACHE2_MPMS='' SANDBOX_WRITE=:/build/arm-generic/tmp/portage:/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir/.bash_history:/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/ CHOST_default=armv7a-cros-linux-gnueabihf XFCE_PLUGINS='' GPSD_PROTOCOLS='' LC_MESSAGES=C FETCHCOMMAND_CIPD='/mnt/host/source/chromite/bin/fetch_cipd "${URI}" "${DISTDIR}/${FILE}"' XTABLES_ADDONS='' LICENSE=GPL-2 PYTHONDONTWRITEBYTECODE=1 SYSROOT=/build/arm-generic UBSAN_OPTIONS=' log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan:symbolize=1:print_stacktrace=1' VOICEMAIL_STORAGE='' U_BOOT_CONFIG_USE='' PV=0.9.9 RESUMECOMMAND_SSH='bash -c "x=\${2#ssh://} ; host=\${x%%/*} ; port=\${host##*:} ; host=\${host%:*} ; [[ \${host} = \${port} ]] && port= ; exec rsync --rsh=\"ssh \${port:+-p\${port}} \${3}\" -avP \"\${host}:/\${x#*/}\" \"\$1\"" rsync "${DISTDIR}/${FILE}" "${URI}" "${PORTAGE_SSH_OPTS}"' SANDBOX_LOG=/tmp/sandbox-11586.log PR=r1467 STRIP_MASK='*.nexe /firmware/*.elf' COLLECTD_PLUGINS='' PN=flashrom XARGS='xargs -r' SANE_BACKENDS='' USE_EXPAND_IMPLICIT='ARCH ELIBC KERNEL USERLAND' PF=flashrom-0.9.9-r1467 USE_EXPAND_VALUES_ELIBC='AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt' LD_LIBRARY_PATH=/usr/local/lib CROS_ARTIFACTS_TMP_DIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/cros-artifacts PORTAGE_BASHRC=/build/arm-generic/etc/portage/bashrc CXXLD_FOR_BUILD=x86_64-pc-linux-gnu-clang++ ACCEPT_LICENSE=GPL-2 BUILD_PREFIX=/build/arm-generic/tmp/portage MERGE_TYPE=source ABI_MIPS='' _E_DOCDESTTREE_='' _E_DESTTREE_=/usr BOARD_RUSTFLAGS=-Ctarget-feature=+armv7-a,+neon COMMON_COMPILER_FLAGS='' PORTAGE_ACTUAL_DISTDIR=/var/cache/chromeos-cache/distfiles OBJCOPY=llvm-objcopy RANLIB_FOR_BUILD=llvm-ranlib CCACHE_DISABLE=1 LIBDIR_default=lib PKG_INSTALL_MASK='   /usr/lib*/*.la   /etc/init.d /etc/conf.d   /etc/logrotate.d   /etc/sandbox.d   /usr/share/bash-completion   /usr/share/locale ' SANDBOX_PREDICT=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir:/dev/crypto:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/usr/share/cache/fontconfig:/ FCDSL_CARDS='' LIBOPTIONS=-m0644 GRUB_PLATFORMS='' OBJC_FOR_BUILD=x86_64-pc-linux-gnu-clang SANDBOX_DENY='' EBUILD_DEATH_HOOKS=' cros_log_failed_packages cros-workon_on_die_rebase_check asan_death_hook' STRIP=llvm-strip LC_COLLATE=C OBJC=x86_64-pc-linux-gnu-clang MSAN_OPTIONS=' log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan' CHOST=armv7a-cros-linux-gnueabihf TMP=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp PORTAGE_INST_GID=0 OBJDUMP=llvm-objdump PATH=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/build-toolchain-wrappers:/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/build-toolchain-wrappers/gnu_tools:/usr/lib/portage/python3.6/ebuild-helpers/xattr:/usr/lib/portage/python3.6/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/bin:/build/arm-generic/build/bin SANDBOX_DEBUG_LOG=/tmp/sandbox-debug-11586.log PORTAGE_BUILDDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467 PORTAGE_BZIP2_COMMAND='lbzip2 -z' PORTAGE_USERNAME=chrome-bot NGINX_MODULES_STREAM='' USE='arm dummy elibc_glibc ft2232_spi internal it8212 kernel_linux linux_mtd linux_spi mediatek_i2c_spi parade_lspcon raiden_debug_spi realtek_mst_i2c_spi serprog stlinkv3_spi test usbblaster_spi userland_GNU wiki' PHP_TARGETS='' READELF_FOR_BUILD=llvm-readelf CC=armv7a-cros-linux-gnueabihf-clang TESTS='' CCLD_FOR_BUILD=x86_64-pc-linux-gnu-clang BOARD_OVERLAY=/mnt/host/source/src/overlays/overlay-arm-generic CFLAGS=' -Os -pipe  -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections' USE_EXPAND='ABI_ARM ABI_MIPS ABI_PPC ABI_S390 ABI_X86 ALSA_CARDS APACHE2_MODULES APACHE2_MPMS BOARD_USE CALLIGRA_FEATURES CAMERAS CHROMEOS_KERNEL_FAMILY COLLECTD_PLUGINS CPU_FLAGS_ARM CPU_FLAGS_X86 CROSSCOMPILE_OPTS CROS_WORKON_TREE CURL_SSL DRACUT_MODULES DVB_CARDS EC_FIRMWARE EC_FIRMWARE_EXTRA ELIBC ENLIGHTENMENT_MODULES FCDSL_CARDS FFTOOLS FOO2ZJS_DEVICES FPMCU_FIRMWARE FRITZCAPI_CARDS GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES KERNEL LCD_DEVICES LIBREOFFICE_EXTENSIONS LINGUAS LINUX_FIRMWARE LIRC_DEVICES LLVM_TARGETS MONKEYD_PLUGINS NETBEANS_MODULES NGINX_MODULES_HTTP NGINX_MODULES_MAIL NGINX_MODULES_STREAM OFED_DRIVERS OFFICE_IMPLEMENTATION OPENMPI_FABRICS OPENMPI_OFED_FEATURES OPENMPI_RM OZONE_PLATFORM OZONE_PLATFORM_DEFAULT PHP_TARGETS PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS ROS_MESSAGES RUBY_TARGETS SANE_BACKENDS TESTS TTY_CONSOLE USERLAND UWSGI_PLUGINS U_BOOT_CONFIG_USE U_BOOT_FDT_USE VIDEO_CARDS VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS' SANDBOX_BASHRC=/usr/share/sandbox/sandbox.bashrc CROSSCOMPILE_OPTS='' SUDO_UID=1000 MULTILIB_ABIS=arm STRINGS_FOR_BUILD=llvm-strings LIBDIR_x86=lib PORTAGE_GID=250 FETCHCOMMAND_GS='bash -c '"'"'BOTO_CONFIG= /mnt/host/source/chromite/bin/gs_fetch_binpkg "${URI}" "${DISTDIR}/${FILE}"'"'"'' MAIL=/var/mail/root PORTAGE_BUILD_GROUP=portage BASHRC_FILESDIR=/mnt/host/source/src/third_party/chromiumos-overlay/sys-apps/flashrom/files APACHE2_MODULES='' ELIBC=glibc EAPI=7 RANLIB=llvm-ranlib ABI=arm ECLASS_DEPTH=0 PORTAGE_BASHRC_FILES='/mnt/host/source/src/third_party/chromiumos-overlay/profiles/base/profile.bashrc
+' APACHE2_MPMS='' SANDBOX_WRITE=:/build/arm-generic/tmp/portage:/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir/.bash_history:/dev/console:/dev/fd:/dev/full:/dev/null:/dev/ptmx:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp/:/usr/lib/cf:/usr/lib/conftest:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/tmp/:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp/ CHOST_default=armv7a-cros-linux-gnueabihf XFCE_PLUGINS='' GPSD_PROTOCOLS='' LC_MESSAGES=C FETCHCOMMAND_CIPD='/mnt/host/source/chromite/bin/fetch_cipd "${URI}" "${DISTDIR}/${FILE}"' XTABLES_ADDONS='' LICENSE=GPL-2 PYTHONDONTWRITEBYTECODE=1 SYSROOT=/build/arm-generic UBSAN_OPTIONS=' log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan:symbolize=1:print_stacktrace=1' VOICEMAIL_STORAGE='' U_BOOT_CONFIG_USE='' PV=0.9.9 RESUMECOMMAND_SSH='bash -c "x=\${2#ssh://} ; host=\${x%%/*} ; port=\${host##*:} ; host=\${host%:*} ; [[ \${host} = \${port} ]] && port= ; exec rsync --rsh=\"ssh \${port:+-p\${port}} \${3}\" -avP \"\${host}:/\${x#*/}\" \"\$1\"" rsync "${DISTDIR}/${FILE}" "${URI}" "${PORTAGE_SSH_OPTS}"' SANDBOX_LOG=/var/log/sandbox/sandbox-11625.log PR=r1467 STRIP_MASK='*.nexe /firmware/*.elf' COLLECTD_PLUGINS='' PN=flashrom XARGS='xargs -r' SANE_BACKENDS='' USE_EXPAND_IMPLICIT='ARCH ELIBC KERNEL USERLAND' PF=flashrom-0.9.9-r1467 USE_EXPAND_VALUES_ELIBC='AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt' LD_LIBRARY_PATH=/usr/local/lib CROS_ARTIFACTS_TMP_DIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/cros-artifacts PORTAGE_BASHRC=/build/arm-generic/etc/portage/bashrc CXXLD_FOR_BUILD=x86_64-pc-linux-gnu-clang++ ACCEPT_LICENSE=GPL-2 BUILD_PREFIX=/build/arm-generic/tmp/portage MERGE_TYPE=source ABI_MIPS='' _E_DOCDESTTREE_='' _E_DESTTREE_=/usr BOARD_RUSTFLAGS=-Ctarget-feature=+armv7-a,+neon COMMON_COMPILER_FLAGS='' PORTAGE_ACTUAL_DISTDIR=/var/cache/chromeos-cache/distfiles OBJCOPY=llvm-objcopy RANLIB_FOR_BUILD=llvm-ranlib CCACHE_DISABLE=1 LIBDIR_default=lib PKG_INSTALL_MASK='   /usr/lib*/*.la   /etc/init.d /etc/conf.d   /etc/logrotate.d   /etc/sandbox.d   /usr/share/bash-completion   /usr/share/locale ' SANDBOX_PREDICT=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir:/dev/crypto:/proc/self/coredump_filter:/dev/random:/proc/self/coredump_filter:/usr/share/cache/fontconfig:/ FCDSL_CARDS='' LIBOPTIONS=-m0644 GRUB_PLATFORMS='' OBJC_FOR_BUILD=x86_64-pc-linux-gnu-clang SANDBOX_DENY='' EBUILD_DEATH_HOOKS=' cros_log_failed_packages cros-workon_on_die_rebase_check asan_death_hook' STRIP=llvm-strip LC_COLLATE=C OBJC=x86_64-pc-linux-gnu-clang MSAN_OPTIONS=' log_path=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/asan_logs/asan' CHOST=armv7a-cros-linux-gnueabihf TMP=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp PORTAGE_INST_GID=0 OBJDUMP=llvm-objdump PATH=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/build-toolchain-wrappers:/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/temp/build-toolchain-wrappers/gnu_tools:/usr/lib/portage/python3.6/ebuild-helpers/xattr:/usr/lib/portage/python3.6/ebuild-helpers:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin:/usr/lib/llvm/bin:/build/arm-generic/build/bin SANDBOX_DEBUG_LOG=/var/log/sandbox/sandbox-debug-11625.log PORTAGE_BZIP2_COMMAND='lbzip2 -z' PORTAGE_BUILDDIR=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467 PORTAGE_USERNAME=chrome-bot NGINX_MODULES_STREAM='' USE='arm dummy elibc_glibc ft2232_spi internal it8212 kernel_linux linux_mtd linux_spi mediatek_i2c_spi parade_lspcon raiden_debug_spi realtek_mst_i2c_spi serprog stlinkv3_spi test usbblaster_spi userland_GNU wiki' PHP_TARGETS='' READELF_FOR_BUILD=llvm-readelf CC=armv7a-cros-linux-gnueabihf-clang TESTS='' CCLD_FOR_BUILD=x86_64-pc-linux-gnu-clang BOARD_OVERLAY=/mnt/host/source/src/overlays/overlay-arm-generic CFLAGS=' -Os -pipe  -march=armv7-a -mtune=cortex-a15 -mfpu=neon -mfloat-abi=hard -g -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -ffunction-sections -fdata-sections' USE_EXPAND='ABI_ARM ABI_MIPS ABI_PPC ABI_S390 ABI_X86 ALSA_CARDS APACHE2_MODULES APACHE2_MPMS BOARD_USE CALLIGRA_FEATURES CAMERAS CHROMEOS_KERNEL_FAMILY COLLECTD_PLUGINS CPU_FLAGS_ARM CPU_FLAGS_X86 CROSSCOMPILE_OPTS CROS_WORKON_TREE CURL_SSL DRACUT_MODULES DVB_CARDS EC_FIRMWARE EC_FIRMWARE_EXTRA ELIBC ENLIGHTENMENT_MODULES FCDSL_CARDS FFTOOLS FOO2ZJS_DEVICES FPMCU_FIRMWARE FRITZCAPI_CARDS GPSD_PROTOCOLS GRUB_PLATFORMS INPUT_DEVICES KERNEL LCD_DEVICES LIBREOFFICE_EXTENSIONS LINGUAS LINUX_FIRMWARE LIRC_DEVICES LLVM_TARGETS MONKEYD_PLUGINS NETBEANS_MODULES NGINX_MODULES_HTTP NGINX_MODULES_MAIL NGINX_MODULES_STREAM OFED_DRIVERS OFFICE_IMPLEMENTATION OPENMPI_FABRICS OPENMPI_OFED_FEATURES OPENMPI_RM OZONE_PLATFORM OZONE_PLATFORM_DEFAULT PHP_TARGETS PYTHON_SINGLE_TARGET PYTHON_TARGETS QEMU_SOFTMMU_TARGETS QEMU_USER_TARGETS ROS_MESSAGES RUBY_TARGETS SANE_BACKENDS TESTS TTY_CONSOLE USERLAND UWSGI_PLUGINS U_BOOT_CONFIG_USE U_BOOT_FDT_USE VIDEO_CARDS VOICEMAIL_STORAGE XFCE_PLUGINS XTABLES_ADDONS' SANDBOX_BASHRC=/usr/share/sandbox/sandbox.bashrc CROSSCOMPILE_OPTS='' SUDO_UID=1000 MULTILIB_ABIS=arm STRINGS_FOR_BUILD=llvm-strings LIBDIR_x86=lib PORTAGE_GID=250 FETCHCOMMAND_GS='bash -c '"'"'BOTO_CONFIG= /mnt/host/source/chromite/bin/gs_fetch_binpkg "${URI}" "${DISTDIR}/${FILE}"'"'"'' MAIL=/var/mail/root PORTAGE_BUILD_GROUP=portage BASHRC_FILESDIR=/mnt/host/source/src/third_party/chromiumos-overlay/sys-apps/flashrom/files APACHE2_MODULES='' ELIBC=glibc EAPI=7 RANLIB=llvm-ranlib ABI=arm ECLASS_DEPTH=0 PORTAGE_BASHRC_FILES='/mnt/host/source/src/third_party/chromiumos-overlay/profiles/base/profile.bashrc
 /mnt/host/source/src/third_party/chromiumos-overlay/profiles/targets/chromeos/profile.bashrc' CROS_WORKON_TREE=121d6ec074232b3094218bca967b5335212c962d OLDPWD=/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/homedir BUILD_LD=x86_64-pc-linux-gnu-ld.lld MONKEYD_PLUGINS='' EMERGE_FROM=ebuild LADSPA_PATH=/usr/lib/ladspa PKG_CONFIG=/build/arm-generic/build/bin/pkg-config DVB_CARDS='' _=/usr/bin/meson 
 
-1/1 cmocka test flashrom OK             10.88s
-10:51:04 MESON_EXE_WRAPPER=/mnt/host/source/src/platform2/common-mk/meson_test.py MALLOC_PERTURB_=55 /mnt/host/source/src/platform2/common-mk/meson_test.py /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/tests/flashrom_unit_tests
+1/1 cmocka test flashrom OK             10.92s
+22:04:22 MESON_EXE_WRAPPER=/mnt/host/source/src/platform2/common-mk/meson_test.py MALLOC_PERTURB_=221 /mnt/host/source/src/platform2/common-mk/meson_test.py /build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/tests/flashrom_unit_tests
 ----------------------------------- output -----------------------------------
 stdout:
 Running [PosixPath('/mnt/host/source/src/platform2/common-mk/platform2_test.py'), '--sysroot', '/build/arm-generic', '--', '/build/arm-generic/tmp/portage/sys-apps/flashrom-0.9.9-r1467/work/flashrom-0.9.9-build/tests/flashrom_unit_tests']
diff --git a/chroot/build/arm-generic/usr/include/chromeos/dbus/runtime_probe/runtime_probe.proto b/chroot/build/arm-generic/usr/include/chromeos/dbus/runtime_probe/runtime_probe.proto
index d24272a..1577c40 100644
--- a/chroot/build/arm-generic/usr/include/chromeos/dbus/runtime_probe/runtime_probe.proto
+++ b/chroot/build/arm-generic/usr/include/chromeos/dbus/runtime_probe/runtime_probe.proto
@@ -125,6 +125,8 @@
     // /sys/class/power_supply/<supply_name>/technology section in
     // https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-power.
     string technology = 15;
+    // DeviceChemistry (0x22) in Smart Battery Data Specification.
+    string chemistry = 16;
   }
   // Component alias.
   string name = 1;
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto.cc b/chroot/build/arm-generic/usr/include/perfetto/perfetto.cc
index 2d93fc1..e1d0b00 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto.cc
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto.cc
@@ -1255,7 +1255,7 @@
 #endif
   }
 
-  bool StartsWith(const StringView& other) {
+  bool StartsWith(const StringView& other) const {
     if (other.size() == 0)
       return true;
     if (size() == 0)
@@ -1269,6 +1269,21 @@
     return true;
   }
 
+  bool EndsWith(const StringView& other) const {
+    if (other.size() == 0)
+      return true;
+    if (size() == 0)
+      return false;
+    if (other.size() > size())
+      return false;
+    const size_t off = size() - other.size();
+    for (size_t i = 0; i < other.size(); ++i) {
+      if (at(off + i) != other.at(i))
+        return false;
+    }
+    return true;
+  }
+
   std::string ToStdString() const {
     return size_ == 0 ? "" : std::string(data_, size_);
   }
@@ -4719,6 +4734,8 @@
 #if defined(ADDRESS_SANITIZER) && !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \
     !defined(ADDRESS_SANITIZER_WITHOUT_INSTRUMENTATION)
 
+#include <sanitizer/common_interface_defs.h>
+
 #define ANNOTATE_NEW_BUFFER(buffer, capacity, new_size)                      \
   if (buffer) {                                                              \
     __sanitizer_annotate_contiguous_container(buffer, (buffer) + (capacity), \
@@ -5995,9 +6012,22 @@
 namespace perfetto {
 namespace base {
 
+// Without ignoring this warning we get the message:
+//   error: out-of-line definition of constexpr static data member is redundant
+//   in C++17 and is deprecated
+// when using clang-cl in Windows.
+#if defined(__GNUC__)  // GCC & clang
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated"
+#endif  // __GNUC__
+
 // static
 constexpr size_t StringView::npos;
 
+#if defined(__GNUC__)
+#pragma GCC diagnostic pop
+#endif
+
 }  // namespace base
 }  // namespace perfetto
 // gen_amalgamated begin source: src/base/temp_file.cc
@@ -18383,6 +18413,7 @@
     kInitializeKsymsSynchronouslyForTestingFieldNumber = 14,
     kThrottleRssStatFieldNumber = 15,
     kDisableGenericEventsFieldNumber = 16,
+    kSyscallEventsFieldNumber = 18,
   };
 
   FtraceConfig();
@@ -18452,6 +18483,13 @@
   bool disable_generic_events() const { return disable_generic_events_; }
   void set_disable_generic_events(bool value) { disable_generic_events_ = value; _has_field_.set(16); }
 
+  const std::vector<std::string>& syscall_events() const { return syscall_events_; }
+  std::vector<std::string>* mutable_syscall_events() { return &syscall_events_; }
+  int syscall_events_size() const { return static_cast<int>(syscall_events_.size()); }
+  void clear_syscall_events() { syscall_events_.clear(); }
+  void add_syscall_events(std::string value) { syscall_events_.emplace_back(value); }
+  std::string* add_syscall_events() { syscall_events_.emplace_back(); return &syscall_events_.back(); }
+
  private:
   std::vector<std::string> ftrace_events_;
   std::vector<std::string> atrace_categories_;
@@ -18464,12 +18502,13 @@
   bool initialize_ksyms_synchronously_for_testing_{};
   bool throttle_rss_stat_{};
   bool disable_generic_events_{};
+  std::vector<std::string> syscall_events_;
 
   // Allows to preserve unknown protobuf fields for compatibility
   // with future versions of .proto files.
   std::string unknown_fields_;
 
-  std::bitset<18> _has_field_{};
+  std::bitset<19> _has_field_{};
 };
 
 
@@ -18546,13 +18585,15 @@
    && ksyms_mem_policy_ == other.ksyms_mem_policy_
    && initialize_ksyms_synchronously_for_testing_ == other.initialize_ksyms_synchronously_for_testing_
    && throttle_rss_stat_ == other.throttle_rss_stat_
-   && disable_generic_events_ == other.disable_generic_events_;
+   && disable_generic_events_ == other.disable_generic_events_
+   && syscall_events_ == other.syscall_events_;
 }
 
 bool FtraceConfig::ParseFromArray(const void* raw, size_t size) {
   ftrace_events_.clear();
   atrace_categories_.clear();
   atrace_apps_.clear();
+  syscall_events_.clear();
   unknown_fields_.clear();
   bool packed_error = false;
 
@@ -18598,6 +18639,10 @@
       case 16 /* disable_generic_events */:
         field.get(&disable_generic_events_);
         break;
+      case 18 /* syscall_events */:
+        syscall_events_.emplace_back();
+        field.get(&syscall_events_.back());
+        break;
       default:
         field.SerializeAndAppendTo(&unknown_fields_);
         break;
@@ -18674,6 +18719,11 @@
     msg->AppendTinyVarInt(16, disable_generic_events_);
   }
 
+  // Field 18: syscall_events
+  for (auto& it : syscall_events_) {
+    msg->AppendString(18, it);
+  }
+
   msg->AppendRawProtoBytes(unknown_fields_.data(), unknown_fields_.size());
 }
 
@@ -22818,6 +22868,7 @@
     kStatCountersFieldNumber = 6,
     kDevfreqPeriodMsFieldNumber = 7,
     kCpufreqPeriodMsFieldNumber = 8,
+    kBuddyinfoPeriodMsFieldNumber = 9,
   };
 
   SysStatsConfig();
@@ -22875,6 +22926,10 @@
   uint32_t cpufreq_period_ms() const { return cpufreq_period_ms_; }
   void set_cpufreq_period_ms(uint32_t value) { cpufreq_period_ms_ = value; _has_field_.set(8); }
 
+  bool has_buddyinfo_period_ms() const { return _has_field_[9]; }
+  uint32_t buddyinfo_period_ms() const { return buddyinfo_period_ms_; }
+  void set_buddyinfo_period_ms(uint32_t value) { buddyinfo_period_ms_ = value; _has_field_.set(9); }
+
  private:
   uint32_t meminfo_period_ms_{};
   std::vector<MeminfoCounters> meminfo_counters_;
@@ -22884,12 +22939,13 @@
   std::vector<SysStatsConfig_StatCounters> stat_counters_;
   uint32_t devfreq_period_ms_{};
   uint32_t cpufreq_period_ms_{};
+  uint32_t buddyinfo_period_ms_{};
 
   // Allows to preserve unknown protobuf fields for compatibility
   // with future versions of .proto files.
   std::string unknown_fields_;
 
-  std::bitset<9> _has_field_{};
+  std::bitset<10> _has_field_{};
 };
 
 }  // namespace perfetto
@@ -22929,7 +22985,8 @@
    && stat_period_ms_ == other.stat_period_ms_
    && stat_counters_ == other.stat_counters_
    && devfreq_period_ms_ == other.devfreq_period_ms_
-   && cpufreq_period_ms_ == other.cpufreq_period_ms_;
+   && cpufreq_period_ms_ == other.cpufreq_period_ms_
+   && buddyinfo_period_ms_ == other.buddyinfo_period_ms_;
 }
 
 bool SysStatsConfig::ParseFromArray(const void* raw, size_t size) {
@@ -22972,6 +23029,9 @@
       case 8 /* cpufreq_period_ms */:
         field.get(&cpufreq_period_ms_);
         break;
+      case 9 /* buddyinfo_period_ms */:
+        field.get(&buddyinfo_period_ms_);
+        break;
       default:
         field.SerializeAndAppendTo(&unknown_fields_);
         break;
@@ -23033,6 +23093,142 @@
     msg->AppendVarInt(8, cpufreq_period_ms_);
   }
 
+  // Field 9: buddyinfo_period_ms
+  if (_has_field_[9]) {
+    msg->AppendVarInt(9, buddyinfo_period_ms_);
+  }
+
+  msg->AppendRawProtoBytes(unknown_fields_.data(), unknown_fields_.size());
+}
+
+}  // namespace perfetto
+}  // namespace protos
+}  // namespace gen
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
+// gen_amalgamated begin source: gen/protos/perfetto/config/system_info/system_info.gen.cc
+// gen_amalgamated begin header: gen/protos/perfetto/config/system_info/system_info.gen.h
+// DO NOT EDIT. Autogenerated by Perfetto cppgen_plugin
+#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_CPP_H_
+#define PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_CPP_H_
+
+#include <stdint.h>
+#include <bitset>
+#include <vector>
+#include <string>
+#include <type_traits>
+
+// gen_amalgamated expanded: #include "perfetto/protozero/cpp_message_obj.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/copyable_ptr.h"
+// gen_amalgamated expanded: #include "perfetto/base/export.h"
+
+namespace perfetto {
+namespace protos {
+namespace gen {
+class SystemInfoConfig;
+}  // namespace perfetto
+}  // namespace protos
+}  // namespace gen
+
+namespace protozero {
+class Message;
+}  // namespace protozero
+
+namespace perfetto {
+namespace protos {
+namespace gen {
+
+class PERFETTO_EXPORT_COMPONENT SystemInfoConfig : public ::protozero::CppMessageObj {
+ public:
+  enum FieldNumbers {
+  };
+
+  SystemInfoConfig();
+  ~SystemInfoConfig() override;
+  SystemInfoConfig(SystemInfoConfig&&) noexcept;
+  SystemInfoConfig& operator=(SystemInfoConfig&&);
+  SystemInfoConfig(const SystemInfoConfig&);
+  SystemInfoConfig& operator=(const SystemInfoConfig&);
+  bool operator==(const SystemInfoConfig&) const;
+  bool operator!=(const SystemInfoConfig& other) const { return !(*this == other); }
+
+  bool ParseFromArray(const void*, size_t) override;
+  std::string SerializeAsString() const override;
+  std::vector<uint8_t> SerializeAsArray() const override;
+  void Serialize(::protozero::Message*) const;
+
+ private:
+
+  // Allows to preserve unknown protobuf fields for compatibility
+  // with future versions of .proto files.
+  std::string unknown_fields_;
+
+  std::bitset<2> _has_field_{};
+};
+
+}  // namespace perfetto
+}  // namespace protos
+}  // namespace gen
+
+#endif  // PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_CPP_H_
+// gen_amalgamated expanded: #include "perfetto/protozero/message.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/packed_repeated_fields.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/proto_decoder.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/scattered_heap_buffer.h"
+// DO NOT EDIT. Autogenerated by Perfetto cppgen_plugin
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wfloat-equal"
+#endif
+// gen_amalgamated expanded: #include "protos/perfetto/config/system_info/system_info.gen.h"
+
+namespace perfetto {
+namespace protos {
+namespace gen {
+
+SystemInfoConfig::SystemInfoConfig() = default;
+SystemInfoConfig::~SystemInfoConfig() = default;
+SystemInfoConfig::SystemInfoConfig(const SystemInfoConfig&) = default;
+SystemInfoConfig& SystemInfoConfig::operator=(const SystemInfoConfig&) = default;
+SystemInfoConfig::SystemInfoConfig(SystemInfoConfig&&) noexcept = default;
+SystemInfoConfig& SystemInfoConfig::operator=(SystemInfoConfig&&) = default;
+
+bool SystemInfoConfig::operator==(const SystemInfoConfig& other) const {
+  return unknown_fields_ == other.unknown_fields_;
+}
+
+bool SystemInfoConfig::ParseFromArray(const void* raw, size_t size) {
+  unknown_fields_.clear();
+  bool packed_error = false;
+
+  ::protozero::ProtoDecoder dec(raw, size);
+  for (auto field = dec.ReadField(); field.valid(); field = dec.ReadField()) {
+    if (field.id() < _has_field_.size()) {
+      _has_field_.set(field.id());
+    }
+    switch (field.id()) {
+      default:
+        field.SerializeAndAppendTo(&unknown_fields_);
+        break;
+    }
+  }
+  return !packed_error && !dec.bytes_left();
+}
+
+std::string SystemInfoConfig::SerializeAsString() const {
+  ::protozero::HeapBuffered<::protozero::Message> msg;
+  Serialize(msg.get());
+  return msg.SerializeAsString();
+}
+
+std::vector<uint8_t> SystemInfoConfig::SerializeAsArray() const {
+  ::protozero::HeapBuffered<::protozero::Message> msg;
+  Serialize(msg.get());
+  return msg.SerializeAsArray();
+}
+
+void SystemInfoConfig::Serialize(::protozero::Message* msg) const {
   msg->AppendRawProtoBytes(unknown_fields_.data(), unknown_fields_.size());
 }
 
@@ -23718,6 +23914,7 @@
 #pragma GCC diagnostic ignored "-Wfloat-equal"
 #endif
 // gen_amalgamated expanded: #include "protos/perfetto/config/data_source_config.gen.h"
+// gen_amalgamated expanded: #include "protos/perfetto/config/system_info/system_info.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/test_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/interceptor_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/interceptors/console_config.gen.h"
@@ -23760,6 +23957,7 @@
    && android_polled_state_config_ == other.android_polled_state_config_
    && android_system_property_config_ == other.android_system_property_config_
    && statsd_tracing_config_ == other.statsd_tracing_config_
+   && system_info_config_ == other.system_info_config_
    && chrome_config_ == other.chrome_config_
    && interceptor_config_ == other.interceptor_config_
    && legacy_config_ == other.legacy_config_
@@ -23848,6 +24046,9 @@
       case 117 /* statsd_tracing_config */:
         statsd_tracing_config_ = field.as_std_string();
         break;
+      case 119 /* system_info_config */:
+        (*system_info_config_).ParseFromArray(field.data(), field.size());
+        break;
       case 101 /* chrome_config */:
         (*chrome_config_).ParseFromArray(field.data(), field.size());
         break;
@@ -24001,6 +24202,11 @@
     msg->AppendString(117, statsd_tracing_config_);
   }
 
+  // Field 119: system_info_config
+  if (_has_field_[119]) {
+    (*system_info_config_).Serialize(msg->BeginNestedMessage<::protozero::Message>(119));
+  }
+
   // Field 101: chrome_config
   if (_has_field_[101]) {
     (*chrome_config_).Serialize(msg->BeginNestedMessage<::protozero::Message>(101));
@@ -24154,6 +24360,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class TraceConfig_BufferConfig;
 enum TraceConfig_LockdownModeOperation : int;
 enum TraceConfig_CompressionType : int;
@@ -24346,6 +24553,7 @@
 // gen_amalgamated expanded: #include "protos/perfetto/config/stress_test_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/trace_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/data_source_config.gen.h"
+// gen_amalgamated expanded: #include "protos/perfetto/config/system_info/system_info.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/track_event/track_event_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/test_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/sys_stats/sys_stats_config.gen.h"
@@ -24923,6 +25131,7 @@
 #endif
 // gen_amalgamated expanded: #include "protos/perfetto/config/trace_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/data_source_config.gen.h"
+// gen_amalgamated expanded: #include "protos/perfetto/config/system_info/system_info.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/track_event/track_event_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/test_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/sys_stats/sys_stats_config.gen.h"
@@ -36141,6 +36350,8 @@
 // Intentionally empty (crbug.com/998165)
 // gen_amalgamated begin source: gen/protos/perfetto/config/sys_stats/sys_stats_config.pbzero.cc
 // Intentionally empty (crbug.com/998165)
+// gen_amalgamated begin source: gen/protos/perfetto/config/system_info/system_info.pbzero.cc
+// Intentionally empty (crbug.com/998165)
 // gen_amalgamated begin source: gen/protos/perfetto/config/track_event/track_event_config.pbzero.cc
 // Intentionally empty (crbug.com/998165)
 // gen_amalgamated begin source: gen/protos/perfetto/config/chrome/chrome_config.pbzero.cc
@@ -36261,6 +36472,8 @@
 // Intentionally empty (crbug.com/998165)
 // gen_amalgamated begin source: gen/protos/perfetto/trace/ftrace/oom.pbzero.cc
 // Intentionally empty (crbug.com/998165)
+// gen_amalgamated begin source: gen/protos/perfetto/trace/ftrace/panel.pbzero.cc
+// Intentionally empty (crbug.com/998165)
 // gen_amalgamated begin source: gen/protos/perfetto/trace/ftrace/power.pbzero.cc
 // Intentionally empty (crbug.com/998165)
 // gen_amalgamated begin source: gen/protos/perfetto/trace/ftrace/printk.pbzero.cc
@@ -36295,6 +36508,8 @@
 // Intentionally empty (crbug.com/998165)
 // gen_amalgamated begin source: gen/protos/perfetto/trace/ftrace/ufs.pbzero.cc
 // Intentionally empty (crbug.com/998165)
+// gen_amalgamated begin source: gen/protos/perfetto/trace/ftrace/v4l2.pbzero.cc
+// Intentionally empty (crbug.com/998165)
 // gen_amalgamated begin source: gen/protos/perfetto/trace/ftrace/vmscan.pbzero.cc
 // Intentionally empty (crbug.com/998165)
 // gen_amalgamated begin source: gen/protos/perfetto/trace/ftrace/workqueue.pbzero.cc
@@ -38952,6 +39167,10 @@
   // PID of the process that created the trace writer. Used for a DCHECK that
   // aims to detect unsupported process forks while tracing.
   const base::PlatformProcessId process_id_;
+
+  // True for the first packet on sequence. See the comment for
+  // TracePacket.first_packet_on_sequence for more details.
+  bool first_packet_on_sequence_ = true;
 };
 
 }  // namespace perfetto
@@ -40296,6 +40515,11 @@
     }
   }
 
+  if (PERFETTO_UNLIKELY(first_packet_on_sequence_)) {
+    cur_packet_->set_first_packet_on_sequence(true);
+    first_packet_on_sequence_ = false;
+  }
+
   return handle;
 }
 
@@ -40733,6 +40957,10 @@
   // created. Can be used for any setup required before tracing begins.
   virtual void OnTracingSetup() = 0;
 
+  // Called by muxer once StartupTracing is started. It will be called before
+  // SetupStartupTracingBlocking is returned.
+  virtual void OnStartupTracingSetup() {}
+
   // The lifecycle methods below are always called in the following sequence:
   // SetupDataSource  -> StartDataSource -> StopDataSource.
   // Or, in the edge case where a trace is aborted immediately:
@@ -40859,7 +41087,8 @@
 
 namespace perfetto_pbzero_enum_ConsoleConfig {
 enum Output : int32_t;
-}  // namespace perfetto_pbzero_enum_ConsoleConfig 
+}  // namespace perfetto_pbzero_enum_ConsoleConfig
+using ConsoleConfig_Output = perfetto_pbzero_enum_ConsoleConfig::Output;
 
 namespace perfetto_pbzero_enum_ConsoleConfig {
 enum Output : int32_t {
@@ -41113,7 +41342,8 @@
 
 namespace perfetto_pbzero_enum_ProcessDescriptor {
 enum ChromeProcessType : int32_t;
-}  // namespace perfetto_pbzero_enum_ProcessDescriptor 
+}  // namespace perfetto_pbzero_enum_ProcessDescriptor
+using ProcessDescriptor_ChromeProcessType = perfetto_pbzero_enum_ProcessDescriptor::ChromeProcessType;
 
 namespace perfetto_pbzero_enum_ProcessDescriptor {
 enum ChromeProcessType : int32_t {
@@ -41465,7 +41695,8 @@
 
 namespace perfetto_pbzero_enum_ThreadDescriptor {
 enum ChromeThreadType : int32_t;
-}  // namespace perfetto_pbzero_enum_ThreadDescriptor 
+}  // namespace perfetto_pbzero_enum_ThreadDescriptor
+using ThreadDescriptor_ChromeThreadType = perfetto_pbzero_enum_ThreadDescriptor::ChromeThreadType;
 
 namespace perfetto_pbzero_enum_ThreadDescriptor {
 enum ChromeThreadType : int32_t {
@@ -42492,6 +42723,13 @@
   return annotation;
 }
 
+protos::pbzero::DebugAnnotation* EventContext::AddDebugAnnotation(
+    ::perfetto::DynamicString name) {
+  auto annotation = event()->add_debug_annotations();
+  annotation->set_name(name.value);
+  return annotation;
+}
+
 }  // namespace perfetto
 // gen_amalgamated begin source: src/tracing/interceptor.cc
 /*
@@ -43346,6 +43584,7 @@
     void OnConnect() override;
     void OnDisconnect() override;
     void OnTracingSetup() override;
+    void OnStartupTracingSetup() override;
     void SetupDataSource(DataSourceInstanceID,
                          const DataSourceConfig&) override;
     void StartDataSource(DataSourceInstanceID,
@@ -43361,6 +43600,7 @@
     TracingBackendId const backend_id_;
     bool connected_ = false;
     bool did_setup_tracing_ = false;
+    bool did_setup_startup_tracing_ = false;
     std::atomic<uint32_t> connection_id_{0};
     uint16_t last_startup_target_buffer_reservation_ = 0;
     bool is_producer_provided_smb_ = false;
@@ -43933,7 +44173,7 @@
   // |service_| here because other threads may be concurrently creating new
   // trace writers. Any reconnection attempt will atomically swap the new
   // service in place of the old one.
-  if (did_setup_tracing_) {
+  if (did_setup_tracing_ || did_setup_startup_tracing_) {
     dead_services_.push_back(service_);
   } else {
     service_.reset();
@@ -43947,6 +44187,11 @@
       shmem_batch_commits_duration_ms_);
 }
 
+void TracingMuxerImpl::ProducerImpl::OnStartupTracingSetup() {
+  PERFETTO_DCHECK_THREAD(thread_checker_);
+  did_setup_startup_tracing_ = true;
+}
+
 void TracingMuxerImpl::ProducerImpl::SetupDataSource(
     DataSourceInstanceID id,
     const DataSourceConfig& cfg) {
@@ -45801,6 +46046,7 @@
       int num_ds = session.num_unbound_data_sources;
       auto on_setup = opts.on_setup;
       if (on_setup) {
+        backend.producer->OnStartupTracingSetup();
         task_runner_->PostTask([on_setup, num_ds] {
           on_setup(Tracing::OnStartupTracingSetupCallbackArgs{num_ds});
         });
@@ -46037,8 +46283,10 @@
     // The task runner must be deleted outside the muxer thread. This is done by
     // `owned_task_runner` above.
     muxer->task_runner_.release();
+    auto* platform = muxer->platform_;
     delete muxer;
     instance_ = TracingMuxerFake::Get();
+    platform->Shutdown();
     shutdown_done.Notify();
   });
   shutdown_done.Wait();
@@ -46539,7 +46787,6 @@
 // gen_amalgamated expanded: #include "perfetto/tracing/internal/track_event_internal.h"
 
 // gen_amalgamated expanded: #include "perfetto/base/proc_utils.h"
-// gen_amalgamated expanded: #include "perfetto/base/thread_utils.h"
 // gen_amalgamated expanded: #include "perfetto/base/time.h"
 // gen_amalgamated expanded: #include "perfetto/tracing/core/data_source_config.h"
 // gen_amalgamated expanded: #include "perfetto/tracing/internal/track_event_interned_fields.h"
@@ -46571,7 +46818,6 @@
 
 namespace {
 
-std::atomic<perfetto::base::PlatformThreadId> g_main_thread;
 static constexpr const char kLegacySlowPrefix[] = "disabled-by-default-";
 static constexpr const char kSlowTag[] = "slow";
 static constexpr const char kDebugTag[] = "debug";
@@ -46581,18 +46827,54 @@
 
 constexpr auto kClockIdAbsolute = TrackEventIncrementalState::kClockIdAbsolute;
 
-void ForEachObserver(
-    std::function<bool(TrackEventSessionObserver*&)> callback) {
-  // Session observers, shared by all track event data source instances.
-  static constexpr int kMaxObservers = 8;
-  static std::recursive_mutex* mutex = new std::recursive_mutex{};  // Leaked.
-  static std::array<TrackEventSessionObserver*, kMaxObservers> observers{};
-  std::unique_lock<std::recursive_mutex> lock(*mutex);
-  for (auto& o : observers) {
-    if (!callback(o))
-      break;
+class TrackEventSessionObserverRegistry {
+ public:
+  static TrackEventSessionObserverRegistry* GetInstance() {
+    static TrackEventSessionObserverRegistry* instance =
+        new TrackEventSessionObserverRegistry();  // leaked
+    return instance;
   }
-}
+
+  void AddObserverForRegistry(const TrackEventCategoryRegistry& registry,
+                              TrackEventSessionObserver* observer) {
+    std::unique_lock<std::recursive_mutex> lock(mutex_);
+    observers_.emplace_back(&registry, observer);
+  }
+
+  void RemoveObserverForRegistry(const TrackEventCategoryRegistry& registry,
+                                 TrackEventSessionObserver* observer) {
+    std::unique_lock<std::recursive_mutex> lock(mutex_);
+    observers_.erase(std::remove(observers_.begin(), observers_.end(),
+                                 RegisteredObserver(&registry, observer)),
+                     observers_.end());
+  }
+
+  void ForEachObserverForRegistry(
+      const TrackEventCategoryRegistry& registry,
+      std::function<void(TrackEventSessionObserver*)> callback) {
+    std::unique_lock<std::recursive_mutex> lock(mutex_);
+    for (auto& registered_observer : observers_) {
+      if (&registry == registered_observer.registry) {
+        callback(registered_observer.observer);
+      }
+    }
+  }
+
+ private:
+  struct RegisteredObserver {
+    RegisteredObserver(const TrackEventCategoryRegistry* r,
+                       TrackEventSessionObserver* o)
+        : registry(r), observer(o) {}
+    bool operator==(const RegisteredObserver& other) {
+      return registry == other.registry && observer == other.observer;
+    }
+    const TrackEventCategoryRegistry* registry;
+    TrackEventSessionObserver* observer;
+  };
+
+  std::recursive_mutex mutex_;
+  std::vector<RegisteredObserver> observers_;
+};
 
 enum class MatchType { kExact, kPattern };
 
@@ -46633,9 +46915,6 @@
 bool TrackEventInternal::Initialize(
     const TrackEventCategoryRegistry& registry,
     bool (*register_data_source)(const DataSourceDescriptor&)) {
-  if (!g_main_thread)
-    g_main_thread = perfetto::base::GetThreadId();
-
   DataSourceDescriptor dsd;
   dsd.set_name("track_event");
 
@@ -46664,29 +46943,19 @@
 
 // static
 bool TrackEventInternal::AddSessionObserver(
+    const TrackEventCategoryRegistry& registry,
     TrackEventSessionObserver* observer) {
-  bool result = false;
-  ForEachObserver([&](TrackEventSessionObserver*& o) {
-    if (!o) {
-      o = observer;
-      result = true;
-      return false;
-    }
-    return true;
-  });
-  return result;
+  TrackEventSessionObserverRegistry::GetInstance()->AddObserverForRegistry(
+      registry, observer);
+  return true;
 }
 
 // static
 void TrackEventInternal::RemoveSessionObserver(
+    const TrackEventCategoryRegistry& registry,
     TrackEventSessionObserver* observer) {
-  ForEachObserver([&](TrackEventSessionObserver*& o) {
-    if (o == observer) {
-      o = nullptr;
-      return false;
-    }
-    return true;
-  });
+  TrackEventSessionObserverRegistry::GetInstance()->RemoveObserverForRegistry(
+      registry, observer);
 }
 
 // static
@@ -46698,44 +46967,36 @@
     if (IsCategoryEnabled(registry, config, *registry.GetCategory(i)))
       registry.EnableCategoryForInstance(i, args.internal_instance_index);
   }
-  ForEachObserver([&](TrackEventSessionObserver*& o) {
-    if (o)
-      o->OnSetup(args);
-    return true;
-  });
+  TrackEventSessionObserverRegistry::GetInstance()->ForEachObserverForRegistry(
+      registry, [&](TrackEventSessionObserver* o) { o->OnSetup(args); });
 }
 
 // static
-void TrackEventInternal::OnStart(const DataSourceBase::StartArgs& args) {
+void TrackEventInternal::OnStart(const TrackEventCategoryRegistry& registry,
+                                 const DataSourceBase::StartArgs& args) {
   session_count_.fetch_add(1);
-  ForEachObserver([&](TrackEventSessionObserver*& o) {
-    if (o)
-      o->OnStart(args);
-    return true;
-  });
+  TrackEventSessionObserverRegistry::GetInstance()->ForEachObserverForRegistry(
+      registry, [&](TrackEventSessionObserver* o) { o->OnStart(args); });
 }
 
 // static
 void TrackEventInternal::DisableTracing(
     const TrackEventCategoryRegistry& registry,
     const DataSourceBase::StopArgs& args) {
-  ForEachObserver([&](TrackEventSessionObserver*& o) {
-    if (o)
-      o->OnStop(args);
-    return true;
-  });
+  TrackEventSessionObserverRegistry::GetInstance()->ForEachObserverForRegistry(
+      registry, [&](TrackEventSessionObserver* o) { o->OnStop(args); });
   for (size_t i = 0; i < registry.category_count(); i++)
     registry.DisableCategoryForInstance(i, args.internal_instance_index);
 }
 
 // static
 void TrackEventInternal::WillClearIncrementalState(
+    const TrackEventCategoryRegistry& registry,
     const DataSourceBase::ClearIncrementalStateArgs& args) {
-  ForEachObserver([&](TrackEventSessionObserver*& o) {
-    if (o)
-      o->WillClearIncrementalState(args);
-    return true;
-  });
+  TrackEventSessionObserverRegistry::GetInstance()->ForEachObserverForRegistry(
+      registry, [&](TrackEventSessionObserver* o) {
+        o->WillClearIncrementalState(args);
+      });
 }
 
 // static
@@ -46999,7 +47260,6 @@
     perfetto::protos::pbzero::TrackEvent::Type type,
     const TraceTimestamp& timestamp,
     bool on_current_thread_track) {
-  PERFETTO_DCHECK(g_main_thread);
   PERFETTO_DCHECK(!incr_state->was_cleared);
   auto packet = NewTracePacket(trace_writer, incr_state, tls_state, timestamp);
   EventContext ctx(std::move(packet), incr_state, &tls_state);
@@ -47043,6 +47303,15 @@
   return annotation;
 }
 
+// static
+protos::pbzero::DebugAnnotation* TrackEventInternal::AddDebugAnnotation(
+    perfetto::EventContext* event_ctx,
+    perfetto::DynamicString name) {
+  auto annotation = event_ctx->event()->add_debug_annotations();
+  annotation->set_name(name.value);
+  return annotation;
+}
+
 }  // namespace internal
 }  // namespace perfetto
 // gen_amalgamated begin source: src/tracing/internal/track_event_interned_fields.cc
@@ -47143,6 +47412,8 @@
 PlatformThreadLocalObject::~PlatformThreadLocalObject() = default;
 Platform::~Platform() = default;
 
+void Platform::Shutdown() {}
+
 // static
 std::unique_ptr<PlatformThreadLocalObject>
 PlatformThreadLocalObject::CreateInstance() {
@@ -48637,8 +48908,8 @@
 #ifndef GEN_PERFETTO_VERSION_GEN_H_
 #define GEN_PERFETTO_VERSION_GEN_H_
 
-#define PERFETTO_VERSION_STRING() "v28.0-2ed5d3d8e"
-#define PERFETTO_VERSION_SCM_REVISION() "2ed5d3d8e6f24a96f61abb4579e3404dc3780c11"
+#define PERFETTO_VERSION_STRING() "v29.0-ef0f60beb"
+#define PERFETTO_VERSION_SCM_REVISION() "ef0f60bebc68c7724181fdaf458b50d19a903ce6"
 
 #endif  // GEN_PERFETTO_VERSION_GEN_H_
 /*
@@ -53333,7 +53604,8 @@
 class TraceStats_FilterStats;
 namespace perfetto_pbzero_enum_TraceStats {
 enum FinalFlushOutcome : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceStats 
+}  // namespace perfetto_pbzero_enum_TraceStats
+using TraceStats_FinalFlushOutcome = perfetto_pbzero_enum_TraceStats::FinalFlushOutcome;
 
 namespace perfetto_pbzero_enum_TraceStats {
 enum FinalFlushOutcome : int32_t {
@@ -54518,19 +54790,24 @@
 enum BuiltinClock : int32_t;
 namespace perfetto_pbzero_enum_TraceConfig_BufferConfig {
 enum FillPolicy : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig_BufferConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig_BufferConfig
+using TraceConfig_BufferConfig_FillPolicy = perfetto_pbzero_enum_TraceConfig_BufferConfig::FillPolicy;
 namespace perfetto_pbzero_enum_TraceConfig {
 enum CompressionType : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig
+using TraceConfig_CompressionType = perfetto_pbzero_enum_TraceConfig::CompressionType;
 namespace perfetto_pbzero_enum_TraceConfig {
 enum LockdownModeOperation : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig
+using TraceConfig_LockdownModeOperation = perfetto_pbzero_enum_TraceConfig::LockdownModeOperation;
 namespace perfetto_pbzero_enum_TraceConfig {
 enum StatsdLogging : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig
+using TraceConfig_StatsdLogging = perfetto_pbzero_enum_TraceConfig::StatsdLogging;
 namespace perfetto_pbzero_enum_TraceConfig_TriggerConfig {
 enum TriggerMode : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig_TriggerConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig_TriggerConfig
+using TraceConfig_TriggerConfig_TriggerMode = perfetto_pbzero_enum_TraceConfig_TriggerConfig::TriggerMode;
 
 namespace perfetto_pbzero_enum_TraceConfig {
 enum LockdownModeOperation : int32_t {
@@ -57248,7 +57525,7 @@
 
 class Utsname;
 
-class SystemInfo_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/5, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+class SystemInfo_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/6, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
  public:
   SystemInfo_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit SystemInfo_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -57263,6 +57540,8 @@
   ::protozero::ConstChars tracing_service_version() const { return at<4>().as_string(); }
   bool has_android_sdk_version() const { return at<5>().valid(); }
   uint64_t android_sdk_version() const { return at<5>().as_uint64(); }
+  bool has_page_size() const { return at<6>().valid(); }
+  uint32_t page_size() const { return at<6>().as_uint32(); }
 };
 
 class SystemInfo : public ::protozero::Message {
@@ -57274,6 +57553,7 @@
     kHzFieldNumber = 3,
     kTracingServiceVersionFieldNumber = 4,
     kAndroidSdkVersionFieldNumber = 5,
+    kPageSizeFieldNumber = 6,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.SystemInfo"; }
 
@@ -57410,6 +57690,31 @@
       ::protozero::proto_utils::ProtoSchemaType::kUint64>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_PageSize =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      SystemInfo>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_PageSize kPageSize() { return {}; }
+  void set_page_size(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_PageSize::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
 };
 
 class Utsname_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/4, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
@@ -60966,6 +61271,7 @@
     PERFETTO_ELOG("Unable to read ro.build.version.sdk");
   }
   info->set_hz(sysconf(_SC_CLK_TCK));
+  info->set_page_size(static_cast<uint32_t>(sysconf(_SC_PAGESIZE)));
 #endif  // PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)
   packet->set_trusted_uid(static_cast<int32_t>(uid_));
   packet->set_trusted_packet_sequence_id(kServicePacketSequenceID);
@@ -61988,6 +62294,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class TraceConfig_BufferConfig;
 class AttachRequest;
 class DetachResponse;
@@ -63017,6 +63324,7 @@
 // gen_amalgamated expanded: #include "protos/perfetto/ipc/consumer_port.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/trace_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/data_source_config.gen.h"
+// gen_amalgamated expanded: #include "protos/perfetto/config/system_info/system_info.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/track_event/track_event_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/test_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/sys_stats/sys_stats_config.gen.h"
@@ -64616,6 +64924,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class GetAsyncCommandResponse_SetupDataSource;
 class GetAsyncCommandResponse_SetupTracing;
 class GetAsyncCommandRequest;
@@ -65750,6 +66059,7 @@
 // gen_amalgamated expanded: #include "protos/perfetto/common/gpu_counter_descriptor.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/common/ftrace_descriptor.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/data_source_config.gen.h"
+// gen_amalgamated expanded: #include "protos/perfetto/config/system_info/system_info.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/track_event/track_event_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/test_config.gen.h"
 // gen_amalgamated expanded: #include "protos/perfetto/config/sys_stats/sys_stats_config.gen.h"
@@ -69147,6 +69457,8 @@
   }
   int fcntl_res = fcntl(*fd_, F_SETFD, flags);
   PERFETTO_CHECK(fcntl_res == 0);
+#else
+  ignore_result(retain);
 #endif
 }
 
@@ -76498,7 +76810,12 @@
 // gen_amalgamated expanded: #include "perfetto/ext/tracing/ipc/consumer_ipc_client.h"
 // gen_amalgamated expanded: #include "perfetto/ext/tracing/ipc/default_socket.h"
 // gen_amalgamated expanded: #include "perfetto/ext/tracing/ipc/producer_ipc_client.h"
+
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
+// gen_amalgamated expanded: #include "src/tracing/ipc/shared_memory_windows.h"
+#else
 // gen_amalgamated expanded: #include "src/tracing/ipc/posix_shared_memory.h"
+#endif
 
 namespace perfetto {
 namespace internal {
@@ -76524,7 +76841,11 @@
       shmem_size_hint = TracingService::kDefaultShmSize;
     if (shmem_page_size_hint == 0)
       shmem_page_size_hint = TracingService::kDefaultShmPageSize;
+#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
+    shm = SharedMemoryWindows::Create(shmem_size_hint);
+#else
     shm = PosixSharedMemory::Create(shmem_size_hint);
+#endif
     arbiter = SharedMemoryArbiter::CreateUnboundInstance(shm.get(),
                                                          shmem_page_size_hint);
   }
@@ -76594,6 +76915,7 @@
   std::unique_ptr<base::TaskRunner> CreateTaskRunner(
       const CreateTaskRunnerArgs&) override;
   std::string GetCurrentProcessName() override;
+  void Shutdown() override;
 
  private:
   pthread_key_t tls_key_{};
@@ -76621,10 +76943,23 @@
 }
 
 PlatformPosix::~PlatformPosix() {
+  // pthread_key_delete doesn't call destructors, so do it manually for the
+  // calling thread.
+  void* tls_ptr = pthread_getspecific(tls_key_);
+  delete static_cast<ThreadLocalObject*>(tls_ptr);
+
   pthread_key_delete(tls_key_);
   g_instance = nullptr;
 }
 
+void PlatformPosix::Shutdown() {
+  PERFETTO_CHECK(g_instance == this);
+  delete this;
+  PERFETTO_CHECK(!g_instance);
+  // We're not clearing out the instance in GetDefaultPlatform() since it's not
+  // possible to re-initialize Perfetto after calling this function anyway.
+}
+
 ThreadLocalObject* PlatformPosix::GetOrCreateThreadLocalObject() {
   // In chromium this should be implemented using base::ThreadLocalStorage.
   void* tls_ptr = pthread_getspecific(tls_key_);
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto.h
index dac866b..07aca6d 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto.h
@@ -3534,13 +3534,16 @@
 class TrackEvent_LegacyEvent;
 namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent {
 enum FlowDirection : int32_t;
-}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent 
+}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent
+using TrackEvent_LegacyEvent_FlowDirection = perfetto_pbzero_enum_TrackEvent_LegacyEvent::FlowDirection;
 namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent {
 enum InstantEventScope : int32_t;
-}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent 
+}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent
+using TrackEvent_LegacyEvent_InstantEventScope = perfetto_pbzero_enum_TrackEvent_LegacyEvent::InstantEventScope;
 namespace perfetto_pbzero_enum_TrackEvent {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_TrackEvent 
+}  // namespace perfetto_pbzero_enum_TrackEvent
+using TrackEvent_Type = perfetto_pbzero_enum_TrackEvent::Type;
 
 namespace perfetto_pbzero_enum_TrackEvent {
 enum Type : int32_t {
@@ -5945,6 +5948,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 enum DataSourceConfig_SessionInitiator : int;
 enum ChromeConfig_ClientPriority : int;
 }  // namespace perfetto
@@ -5995,6 +5999,7 @@
     kAndroidPolledStateConfigFieldNumber = 114,
     kAndroidSystemPropertyConfigFieldNumber = 118,
     kStatsdTracingConfigFieldNumber = 117,
+    kSystemInfoConfigFieldNumber = 119,
     kChromeConfigFieldNumber = 101,
     kInterceptorConfigFieldNumber = 115,
     kLegacyConfigFieldNumber = 1000,
@@ -6094,6 +6099,10 @@
   const std::string& statsd_tracing_config_raw() const { return statsd_tracing_config_; }
   void set_statsd_tracing_config_raw(const std::string& raw) { statsd_tracing_config_ = raw; _has_field_.set(117); }
 
+  bool has_system_info_config() const { return _has_field_[119]; }
+  const SystemInfoConfig& system_info_config() const { return *system_info_config_; }
+  SystemInfoConfig* mutable_system_info_config() { _has_field_.set(119); return system_info_config_.get(); }
+
   bool has_chrome_config() const { return _has_field_[101]; }
   const ChromeConfig& chrome_config() const { return *chrome_config_; }
   ChromeConfig* mutable_chrome_config() { _has_field_.set(101); return chrome_config_.get(); }
@@ -6135,6 +6144,7 @@
   std::string android_polled_state_config_;  // [lazy=true]
   std::string android_system_property_config_;  // [lazy=true]
   std::string statsd_tracing_config_;  // [lazy=true]
+  ::protozero::CopyablePtr<SystemInfoConfig> system_info_config_;
   ::protozero::CopyablePtr<ChromeConfig> chrome_config_;
   ::protozero::CopyablePtr<InterceptorConfig> interceptor_config_;
   std::string legacy_config_{};
@@ -6355,6 +6365,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class TraceConfig_BufferConfig;
 enum TraceConfig_LockdownModeOperation : int;
 enum TraceConfig_CompressionType : int;
@@ -8266,6 +8277,10 @@
   // in-process mode.
   virtual std::string GetCurrentProcessName() = 0;
 
+  // Tear down any persistent platform state (e.g., TLS variables). The platform
+  // interface must not be used after calling this function.
+  virtual void Shutdown();
+
  private:
   static base::PlatformProcessId process_id_;
 };
@@ -8730,6 +8745,8 @@
   ::protozero::ConstBytes trace_packet_defaults() const { return at<59>().as_bytes(); }
   bool has_previous_packet_dropped() const { return at<42>().valid(); }
   bool previous_packet_dropped() const { return at<42>().as_bool(); }
+  bool has_first_packet_on_sequence() const { return at<87>().valid(); }
+  bool first_packet_on_sequence() const { return at<87>().as_bool(); }
 };
 
 class TracePacket : public ::protozero::Message {
@@ -8803,6 +8820,7 @@
     kIncrementalStateClearedFieldNumber = 41,
     kTracePacketDefaultsFieldNumber = 59,
     kPreviousPacketDroppedFieldNumber = 42,
+    kFirstPacketOnSequenceFieldNumber = 87,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.TracePacket"; }
 
@@ -10273,6 +10291,31 @@
       ::protozero::proto_utils::ProtoSchemaType::kBool>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_FirstPacketOnSequence =
+    ::protozero::proto_utils::FieldMetadata<
+      87,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kBool,
+      bool,
+      TracePacket>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_FirstPacketOnSequence kFirstPacketOnSequence() { return {}; }
+  void set_first_packet_on_sequence(bool value) {
+    static constexpr uint32_t field_id = FieldMetadata_FirstPacketOnSequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kBool>
+        ::Append(*this, field_id, value);
+  }
 };
 
 } // Namespace.
@@ -11746,7 +11789,8 @@
 class DebugAnnotation_NestedValue;
 namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue {
 enum NestedType : int32_t;
-}  // namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue 
+}  // namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue
+using DebugAnnotation_NestedValue_NestedType = perfetto_pbzero_enum_DebugAnnotation_NestedValue::NestedType;
 
 namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue {
 enum NestedType : int32_t {
@@ -13877,10 +13921,12 @@
 
 namespace perfetto_pbzero_enum_CounterDescriptor {
 enum BuiltinCounterType : int32_t;
-}  // namespace perfetto_pbzero_enum_CounterDescriptor 
+}  // namespace perfetto_pbzero_enum_CounterDescriptor
+using CounterDescriptor_BuiltinCounterType = perfetto_pbzero_enum_CounterDescriptor::BuiltinCounterType;
 namespace perfetto_pbzero_enum_CounterDescriptor {
 enum Unit : int32_t;
-}  // namespace perfetto_pbzero_enum_CounterDescriptor 
+}  // namespace perfetto_pbzero_enum_CounterDescriptor
+using CounterDescriptor_Unit = perfetto_pbzero_enum_CounterDescriptor::Unit;
 
 namespace perfetto_pbzero_enum_CounterDescriptor {
 enum BuiltinCounterType : int32_t {
@@ -15712,16 +15758,20 @@
       const TrackEventCategoryRegistry&,
       bool (*register_data_source)(const DataSourceDescriptor&));
 
-  static bool AddSessionObserver(TrackEventSessionObserver*);
-  static void RemoveSessionObserver(TrackEventSessionObserver*);
+  static bool AddSessionObserver(const TrackEventCategoryRegistry&,
+                                 TrackEventSessionObserver*);
+  static void RemoveSessionObserver(const TrackEventCategoryRegistry&,
+                                    TrackEventSessionObserver*);
 
   static void EnableTracing(const TrackEventCategoryRegistry& registry,
                             const protos::gen::TrackEventConfig& config,
                             const DataSourceBase::SetupArgs&);
-  static void OnStart(const DataSourceBase::StartArgs&);
+  static void OnStart(const TrackEventCategoryRegistry&,
+                      const DataSourceBase::StartArgs&);
   static void DisableTracing(const TrackEventCategoryRegistry& registry,
                              const DataSourceBase::StopArgs&);
   static void WillClearIncrementalState(
+      const TrackEventCategoryRegistry&,
       const DataSourceBase::ClearIncrementalStateArgs&);
 
   static bool IsCategoryEnabled(const TrackEventCategoryRegistry& registry,
@@ -15758,14 +15808,15 @@
 
   // TODO(altimin): Remove this method once Chrome uses
   // EventContext::AddDebugAnnotation directly.
-  template <typename T>
+  template <typename NameType, typename ValueType>
   static void AddDebugAnnotation(perfetto::EventContext* event_ctx,
-                                 const char* name,
-                                 T&& value) {
-    auto annotation = AddDebugAnnotation(event_ctx, name);
+                                 NameType&& name,
+                                 ValueType&& value) {
+    auto annotation =
+        AddDebugAnnotation(event_ctx, std::forward<NameType>(name));
     WriteIntoTracedValue(
         internal::CreateTracedValueFromProto(annotation, event_ctx),
-        std::forward<T>(value));
+        std::forward<ValueType>(value));
   }
 
   // If the given track hasn't been seen by the trace writer yet, write a
@@ -15830,10 +15881,15 @@
       TraceTimestamp,
       uint32_t seq_flags =
           protos::pbzero::TracePacket::SEQ_NEEDS_INCREMENTAL_STATE);
+
   static protos::pbzero::DebugAnnotation* AddDebugAnnotation(
       perfetto::EventContext*,
       const char* name);
 
+  static protos::pbzero::DebugAnnotation* AddDebugAnnotation(
+      perfetto::EventContext*,
+      perfetto::DynamicString name);
+
   static std::atomic<int> session_count_;
 };
 
@@ -16343,8 +16399,11 @@
   // TODO(eseckler): Remove once Chromium has switched to client lib entirely.
   explicit EventContext(
       protos::pbzero::TrackEvent* event,
-      internal::TrackEventIncrementalState* incremental_state = nullptr)
-      : event_(event), incremental_state_(incremental_state) {}
+      internal::TrackEventIncrementalState* incremental_state = nullptr,
+      bool filter_debug_annotations = false)
+      : event_(event),
+        incremental_state_(incremental_state),
+        filter_debug_annotations_(filter_debug_annotations) {}
 
   ~EventContext();
 
@@ -16352,6 +16411,22 @@
     return incremental_state_;
   }
 
+  // Disclaimer: Experimental method, subject to change.
+  // Exposed publicly to emit some TrackEvent fields in Chromium only in local
+  // tracing. Long-term, we really shouldn't be (ab)using the
+  // filter_debug_annotation setting for this.
+  //
+  // TODO(kraskevich): Come up with a more precise name once we have more than
+  // one usecase.
+  bool ShouldFilterDebugAnnotations() const {
+    if (tls_state_) {
+      return tls_state_->filter_debug_annotations;
+    }
+    // In Chromium tls_state_ is nullptr, so we need to get this information
+    // from a separate field.
+    return filter_debug_annotations_;
+  }
+
   // Get a TrackEvent message to write typed arguments to.
   //
   // event() is a template method to allow callers to specify a subclass of
@@ -16383,11 +16458,11 @@
   // values directly to TRACE_EVENT (i.e. TRACE_EVENT(..., "arg", value, ...);)
   // but in rare cases (e.g. when an argument should be written conditionally)
   // EventContext::AddDebugAnnotation provides an explicit equivalent.
-  template <typename T>
-  void AddDebugAnnotation(const char* name, T&& value) {
+  template <typename EventNameType, typename T>
+  void AddDebugAnnotation(EventNameType&& name, T&& value) {
     if (tls_state_ && tls_state_->filter_debug_annotations)
       return;
-    auto annotation = AddDebugAnnotation(name);
+    auto annotation = AddDebugAnnotation(std::forward<EventNameType>(name));
     WriteIntoTracedValue(internal::CreateTracedValueFromProto(annotation, this),
                          std::forward<T>(value));
   }
@@ -16406,6 +16481,8 @@
   EventContext(const EventContext&) = delete;
 
   protos::pbzero::DebugAnnotation* AddDebugAnnotation(const char* name);
+  protos::pbzero::DebugAnnotation* AddDebugAnnotation(
+      ::perfetto::DynamicString name);
 
   TracePacketHandle trace_packet_;
   protos::pbzero::TrackEvent* event_;
@@ -16414,6 +16491,10 @@
   // are certain that it cannot be nullptr. Once we switch to client library in
   // chrome, we can make that happen.
   const internal::TrackEventTlsState* tls_state_ = nullptr;
+  // TODO(kraskevich): Come up with a more precise name once we have more than
+  // one usecase.
+  // TODO(kraskevich): Remove once Chromium has fully switched to client lib.
+  const bool filter_debug_annotations_ = false;
 };
 
 }  // namespace perfetto
@@ -16668,6 +16749,16 @@
   WriteTrackEventArgs(std::move(event_ctx), std::forward<Args>(args)...);
 }
 
+// Write one debug annotation and recursively write the rest of the arguments.
+template <typename ArgValue, typename... Args>
+PERFETTO_ALWAYS_INLINE void WriteTrackEventArgs(EventContext event_ctx,
+                                                DynamicString arg_name,
+                                                ArgValue&& arg_value,
+                                                Args&&... args) {
+  event_ctx.AddDebugAnnotation(arg_name, std::forward<ArgValue>(arg_value));
+  WriteTrackEventArgs(std::move(event_ctx), std::forward<Args>(args)...);
+}
+
 }  // namespace internal
 }  // namespace perfetto
 
@@ -17300,11 +17391,11 @@
   // Returns |true| if the observer was successfully added (i.e., the maximum
   // number of observers wasn't exceeded).
   static bool AddSessionObserver(TrackEventSessionObserver* observer) {
-    return TrackEventInternal::AddSessionObserver(observer);
+    return TrackEventInternal::AddSessionObserver(*Registry, observer);
   }
 
   static void RemoveSessionObserver(TrackEventSessionObserver* observer) {
-    TrackEventInternal::RemoveSessionObserver(observer);
+    TrackEventInternal::RemoveSessionObserver(*Registry, observer);
   }
 
   // DataSource implementation.
@@ -17316,7 +17407,7 @@
   }
 
   void OnStart(const DataSourceBase::StartArgs& args) override {
-    TrackEventInternal::OnStart(args);
+    TrackEventInternal::OnStart(*Registry, args);
   }
 
   void OnStop(const DataSourceBase::StopArgs& args) override {
@@ -17325,7 +17416,7 @@
 
   void WillClearIncrementalState(
       const DataSourceBase::ClearIncrementalStateArgs& args) override {
-    TrackEventInternal::WillClearIncrementalState(args);
+    TrackEventInternal::WillClearIncrementalState(*Registry, args);
   }
 
   static void Flush() {
@@ -17659,8 +17750,21 @@
                     return true;
                   });
             }
-            if (!on_current_thread_track)
+            if (type == protos::pbzero::TrackEvent::TYPE_UNSPECIFIED) {
+              // Explicitly clear the track, so that the event is not associated
+              // with the default track, but instead uses the legacy mechanism
+              // based on the phase and pid/tid override.
+              event_ctx.event()->set_track_uuid(0);
+            } else if (!on_current_thread_track) {
+              // We emit these events using TrackDescriptors, and we cannot emit
+              // events on behalf of other processes using the TrackDescriptor
+              // format. Chrome is the only user of events with explicit process
+              // ids and currently only Chrome emits PHASE_MEMORY_DUMP events
+              // with an explicit process id, so we should be fine here.
+              // TODO(mohitms): Get rid of events with explicit process ids
+              // entirely.
               event_ctx.event()->set_track_uuid(track.uuid);
+            }
             WriteTrackEventArgs(std::move(event_ctx),
                                 std::forward<Arguments>(args)...);
           }  // event_ctx
@@ -18646,8 +18750,6 @@
 static constexpr char TRACE_EVENT_PHASE_MEMORY_DUMP = 'v';
 static constexpr char TRACE_EVENT_PHASE_MARK = 'R';
 static constexpr char TRACE_EVENT_PHASE_CLOCK_SYNC = 'c';
-static constexpr char TRACE_EVENT_PHASE_ENTER_CONTEXT = '(';
-static constexpr char TRACE_EVENT_PHASE_LEAVE_CONTEXT = ')';
 
 // Flags for changing the behavior of TRACE_EVENT_API_ADD_TRACE_EVENT.
 static constexpr uint32_t TRACE_EVENT_FLAG_NONE =
@@ -18852,6 +18954,16 @@
 namespace perfetto {
 namespace internal {
 
+template <typename T>
+bool IsEqual(T x, T y) {
+  return x == y;
+}
+
+template <typename T, typename U>
+bool IsEqual(T x, U y) {
+  return false;
+}
+
 class PERFETTO_EXPORT_COMPONENT TrackEventLegacy {
  public:
   static constexpr protos::pbzero::TrackEvent::Type PhaseToType(char phase) {
@@ -18873,6 +18985,7 @@
                                char phase,
                                uint32_t flags,
                                Args&&... args) PERFETTO_NO_INLINE {
+    PERFETTO_DCHECK(!(flags & TRACE_EVENT_FLAG_HAS_PROCESS_ID));
     AddDebugAnnotations(&ctx, std::forward<Args>(args)...);
     if (NeedLegacyFlags(phase, flags)) {
       auto legacy_event = ctx.event()->set_legacy_event();
@@ -18900,6 +19013,9 @@
     //    trace packet itself and make sure TrackEvent won't write one
     //    internally. This is already done at the call site.
     //
+    PERFETTO_DCHECK(PhaseToType(phase) ==
+                        protos::pbzero::TrackEvent::TYPE_UNSPECIFIED ||
+                    !(flags & TRACE_EVENT_FLAG_HAS_PROCESS_ID));
     flags |= id.id_flags();
     AddDebugAnnotations(&ctx, std::forward<Args>(args)...);
     if (NeedLegacyFlags(phase, flags)) {
@@ -18914,6 +19030,15 @@
             static_cast<int32_t>(legacy::ConvertThreadId(thread_id).tid);
         legacy_event->set_pid_override(pid_override);
         legacy_event->set_tid_override(-1);
+      } else {
+        // Only synchronous phases are supported for other threads. These phases
+        // are supported in TrackEvent types and receive a track_uuid
+        // association via TrackEventDataSource::TraceForCategoryImpl().
+        PERFETTO_DCHECK(PhaseToType(phase) !=
+                            protos::pbzero::TrackEvent::TYPE_UNSPECIFIED ||
+                        IsEqual(thread_id, TRACE_EVENT_API_CURRENT_THREAD_ID) ||
+                        legacy::ConvertThreadId(thread_id).tid ==
+                            ThreadTrack::Current().tid);
       }
     }
   }
@@ -18921,23 +19046,16 @@
   // No arguments.
   static void AddDebugAnnotations(EventContext*) {}
 
-  // One argument.
-  template <typename ArgType>
+  // N number of debug arguments.
+  template <typename ArgNameType, typename ArgType, typename... OtherArgs>
   static void AddDebugAnnotations(EventContext* ctx,
-                                  const char* arg_name,
-                                  ArgType&& arg_value) {
-    TrackEventInternal::AddDebugAnnotation(ctx, arg_name, arg_value);
-  }
-
-  // Two arguments.
-  template <typename ArgType, typename ArgType2>
-  static void AddDebugAnnotations(EventContext* ctx,
-                                  const char* arg_name,
+                                  ArgNameType&& arg_name,
                                   ArgType&& arg_value,
-                                  const char* arg_name2,
-                                  ArgType2&& arg_value2) {
-    TrackEventInternal::AddDebugAnnotation(ctx, arg_name, arg_value);
-    TrackEventInternal::AddDebugAnnotation(ctx, arg_name2, arg_value2);
+                                  OtherArgs&&... more_args) {
+    TrackEventInternal::AddDebugAnnotation(ctx,
+                                           std::forward<ArgNameType>(arg_name),
+                                           std::forward<ArgType>(arg_value));
+    AddDebugAnnotations(ctx, std::forward<OtherArgs>(more_args)...);
   }
 
  private:
@@ -19019,6 +19137,7 @@
                                        thread_id, ...)                     \
   [&]() {                                                                  \
     using ::perfetto::internal::TrackEventInternal;                        \
+    PERFETTO_DCHECK(!(flags & TRACE_EVENT_FLAG_COPY));                     \
     /* First check the scope for instant events. */                        \
     if ((phase) == TRACE_EVENT_PHASE_INSTANT) {                            \
       /* Note: Avoids the need to set LegacyEvent::instant_event_scope. */ \
@@ -19170,18 +19289,20 @@
   INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name,    \
                            TRACE_EVENT_FLAG_NONE | scope, arg1_name, arg1_val, \
                            arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_INSTANT0(category_group, name, scope)              \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY | scope)
-#define TRACE_EVENT_COPY_INSTANT1(category_group, name, scope, arg1_name,   \
-                                  arg1_val)                                 \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY | scope, arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_INSTANT2(category_group, name, scope, arg1_name,      \
-                                  arg1_val, arg2_name, arg2_val)               \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name,    \
-                           TRACE_EVENT_FLAG_COPY | scope, arg1_name, arg1_val, \
-                           arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_INSTANT0(category_group, name, scope)        \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, \
+                           ::perfetto::DynamicString{name}, scope)
+#define TRACE_EVENT_COPY_INSTANT1(category_group, name, scope, arg1_name, \
+                                  arg1_val)                               \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group,     \
+                           ::perfetto::DynamicString{name}, scope,        \
+                           ::perfetto::DynamicString{arg1_name}, arg1_val)
+#define TRACE_EVENT_COPY_INSTANT2(category_group, name, scope, arg1_name,  \
+                                  arg1_val, arg2_name, arg2_val)           \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group,      \
+                           ::perfetto::DynamicString{name}, scope,         \
+                           ::perfetto::DynamicString{arg1_name}, arg1_val, \
+                           ::perfetto::DynamicString{arg2_name}, arg2_val)
 #define TRACE_EVENT_INSTANT_WITH_FLAGS0(category_group, name, scope_and_flags) \
   INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name,    \
                            scope_and_flags)
@@ -19223,9 +19344,11 @@
                            flags, arg1_name, arg1_val)
 #define TRACE_EVENT_COPY_BEGIN2(category_group, name, arg1_name, arg1_val, \
                                 arg2_name, arg2_val)                       \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category_group, name,  \
-                           TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val,     \
-                           arg2_name, arg2_val)
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category_group,        \
+                           ::perfetto::DynamicString{name},                \
+                           TRACE_EVENT_FLAG_NONE,                          \
+                           ::perfetto::DynamicString{arg1_name}, arg1_val, \
+                           ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Begin events with explicit timestamps.
 #define TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(category_group, name, id, \
@@ -19233,23 +19356,26 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                          \
       TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id, thread_id,      \
       timestamp, TRACE_EVENT_FLAG_NONE)
-#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(                \
-    category_group, name, id, thread_id, timestamp)                       \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                     \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id, thread_id, \
-      timestamp, TRACE_EVENT_FLAG_COPY)
-#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP1(                \
-    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val)  \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                     \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id, thread_id, \
-      timestamp, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP2(                \
-    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val,  \
-    arg2_name, arg2_val)                                                  \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                     \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id, thread_id, \
-      timestamp, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name,   \
-      arg2_val)
+#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(       \
+    category_group, name, id, thread_id, timestamp)              \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(            \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,             \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp, \
+      TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP1(               \
+    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                    \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                     \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp,         \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val)
+#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP2(                   \
+    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val,     \
+    arg2_name, arg2_val)                                                     \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                        \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                         \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp,             \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val, \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // End events.
 #define TRACE_EVENT_END0(category_group, name)                          \
@@ -19269,11 +19395,12 @@
                                     arg1_val)                                  \
   INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category_group, name, flags, \
                            arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_END2(category_group, name, arg1_name, arg1_val, \
-                              arg2_name, arg2_val)                       \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category_group, name,  \
-                           TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val,   \
-                           arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_END2(category_group, name, arg1_name, arg1_val,      \
+                              arg2_name, arg2_val)                            \
+  INTERNAL_TRACE_EVENT_ADD(                                                   \
+      TRACE_EVENT_PHASE_END, category_group, ::perfetto::DynamicString{name}, \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val,  \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Mark events.
 #define TRACE_EVENT_MARK_WITH_TIMESTAMP0(category_group, name, timestamp)  \
@@ -19293,18 +19420,20 @@
       TRACE_EVENT_PHASE_MARK, category_group, name, timestamp,                 \
       TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, arg2_name, arg2_val)
 
-#define TRACE_EVENT_COPY_MARK(category_group, name)                      \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_MARK, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_MARK(category_group, name)                \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_MARK, category_group, \
+                           ::perfetto::DynamicString{name},        \
+                           TRACE_EVENT_FLAG_NONE)
 
-#define TRACE_EVENT_COPY_MARK1(category_group, name, arg1_name, arg1_val) \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_MARK, category_group, name,  \
-                           TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_MARK1(category_group, name, arg1_name, arg1_val)      \
+  INTERNAL_TRACE_EVENT_ADD(                                                    \
+      TRACE_EVENT_PHASE_MARK, category_group, ::perfetto::DynamicString{name}, \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val)
 
-#define TRACE_EVENT_COPY_MARK_WITH_TIMESTAMP(category_group, name, timestamp) \
-  INTERNAL_TRACE_EVENT_ADD_WITH_TIMESTAMP(TRACE_EVENT_PHASE_MARK,             \
-                                          category_group, name, timestamp,    \
-                                          TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_MARK_WITH_TIMESTAMP(category_group, name, timestamp)  \
+  INTERNAL_TRACE_EVENT_ADD_WITH_TIMESTAMP(                                     \
+      TRACE_EVENT_PHASE_MARK, category_group, ::perfetto::DynamicString{name}, \
+      timestamp, TRACE_EVENT_FLAG_NONE)
 
 // End events with explicit thread and timestamp.
 #define TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0(category_group, name, id, \
@@ -19312,23 +19441,26 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                        \
       TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, thread_id,      \
       timestamp, TRACE_EVENT_FLAG_NONE)
-#define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP0(                \
-    category_group, name, id, thread_id, timestamp)                     \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                   \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, thread_id, \
-      timestamp, TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP0(         \
+    category_group, name, id, thread_id, timestamp)              \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(            \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,               \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp, \
+      TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP1(                 \
     category_group, name, id, thread_id, timestamp, arg1_name, arg1_val) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                    \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, thread_id,  \
-      timestamp, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP2(                 \
-    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val, \
-    arg2_name, arg2_val)                                                 \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                    \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, thread_id,  \
-      timestamp, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name,  \
-      arg2_val)
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                       \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp,         \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val)
+#define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP2(                     \
+    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val,     \
+    arg2_name, arg2_val)                                                     \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                        \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                           \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp,             \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val, \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Counters.
 #define TRACE_COUNTER1(category_group, name, value)                         \
@@ -19338,9 +19470,10 @@
 #define TRACE_COUNTER_WITH_FLAG1(category_group, name, flag, value)         \
   INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category_group, name, \
                            flag, "value", static_cast<int>(value))
-#define TRACE_COPY_COUNTER1(category_group, name, value)                    \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY, "value",                  \
+#define TRACE_COPY_COUNTER1(category_group, name, value)              \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category_group, \
+                           ::perfetto::DynamicString{name},           \
+                           TRACE_EVENT_FLAG_NONE, "value",            \
                            static_cast<int>(value))
 #define TRACE_COUNTER2(category_group, name, value1_name, value1_val,       \
                        value2_name, value2_val)                             \
@@ -19348,12 +19481,12 @@
                            TRACE_EVENT_FLAG_NONE, value1_name,              \
                            static_cast<int>(value1_val), value2_name,       \
                            static_cast<int>(value2_val))
-#define TRACE_COPY_COUNTER2(category_group, name, value1_name, value1_val,  \
-                            value2_name, value2_val)                        \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY, value1_name,              \
-                           static_cast<int>(value1_val), value2_name,       \
-                           static_cast<int>(value2_val))
+#define TRACE_COPY_COUNTER2(category_group, name, value1_name, value1_val, \
+                            value2_name, value2_val)                       \
+  INTERNAL_TRACE_EVENT_ADD(                                                \
+      TRACE_EVENT_PHASE_COUNTER, category_group,                           \
+      ::perfetto::DynamicString{name}, TRACE_EVENT_FLAG_NONE, value1_name, \
+      static_cast<int>(value1_val), value2_name, static_cast<int>(value2_val))
 
 // Counters with explicit timestamps.
 #define TRACE_COUNTER_WITH_TIMESTAMP1(category_group, name, timestamp, value) \
@@ -19376,7 +19509,8 @@
                                    static_cast<int>(value))
 #define TRACE_COPY_COUNTER_ID1(category_group, name, id, value)               \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, category_group, \
-                                   name, id, TRACE_EVENT_FLAG_COPY, "value",  \
+                                   ::perfetto::DynamicString{name}, id,       \
+                                   TRACE_EVENT_FLAG_NONE, "value",            \
                                    static_cast<int>(value))
 #define TRACE_COUNTER_ID2(category_group, name, id, value1_name, value1_val,  \
                           value2_name, value2_val)                            \
@@ -19384,12 +19518,12 @@
                                    name, id, TRACE_EVENT_FLAG_NONE,           \
                                    value1_name, static_cast<int>(value1_val), \
                                    value2_name, static_cast<int>(value2_val))
-#define TRACE_COPY_COUNTER_ID2(category_group, name, id, value1_name,         \
-                               value1_val, value2_name, value2_val)           \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, category_group, \
-                                   name, id, TRACE_EVENT_FLAG_COPY,           \
-                                   value1_name, static_cast<int>(value1_val), \
-                                   value2_name, static_cast<int>(value2_val))
+#define TRACE_COPY_COUNTER_ID2(category_group, name, id, value1_name,          \
+                               value1_val, value2_name, value2_val)            \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                            \
+      TRACE_EVENT_PHASE_COUNTER, category_group,                               \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE, value1_name, \
+      static_cast<int>(value1_val), value2_name, static_cast<int>(value2_val))
 
 // Sampling profiler events.
 #define TRACE_EVENT_SAMPLE_WITH_ID1(category_group, name, id, arg1_name,       \
@@ -19413,20 +19547,23 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                   \
       TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id,        \
       TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category_group, name, id)   \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
-                                   category_group, name, id,      \
-                                   TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category_group, name, id) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                             \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_COPY_ASYNC_BEGIN1(category_group, name, id, arg1_name, \
                                       arg1_val)                            \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN,          \
-                                   category_group, name, id,               \
-                                   TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                        \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                       \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,          \
+      ::perfetto::DynamicString{arg1_name}, arg1_val)
 #define TRACE_EVENT_COPY_ASYNC_BEGIN2(category_group, name, id, arg1_name, \
                                       arg1_val, arg2_name, arg2_val)       \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                        \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id,             \
-      TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name, arg2_val)
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                       \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,          \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                      \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 #define TRACE_EVENT_ASYNC_BEGIN_WITH_FLAGS0(category_group, name, id, flags) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN,            \
                                    category_group, name, id, flags)
@@ -19463,8 +19600,9 @@
 #define TRACE_EVENT_COPY_ASYNC_BEGIN_WITH_TIMESTAMP0(category_group, name, id, \
                                                      timestamp)                \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                          \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id,                 \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY)
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                           \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID,  \
+      timestamp, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP_AND_FLAGS0(     \
     category_group, name, id, timestamp, flags)                \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(          \
@@ -19515,20 +19653,23 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                           \
       TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id,                  \
       TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_ASYNC_END0(category_group, name, id)   \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
-                                   category_group, name, id,    \
-                                   TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_ASYNC_END0(category_group, name, id) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                           \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_COPY_ASYNC_END1(category_group, name, id, arg1_name, \
                                     arg1_val)                            \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END,          \
-                                   category_group, name, id,             \
-                                   TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                      \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                       \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,        \
+      ::perfetto::DynamicString{arg1_name}, arg1_val)
 #define TRACE_EVENT_COPY_ASYNC_END2(category_group, name, id, arg1_name, \
                                     arg1_val, arg2_name, arg2_val)       \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                      \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id,             \
-      TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name, arg2_val)
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                       \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,        \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                    \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 #define TRACE_EVENT_ASYNC_END_WITH_FLAGS0(category_group, name, id, flags) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END,            \
                                    category_group, name, id, flags)
@@ -19552,11 +19693,12 @@
       TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id,                  \
       TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_NONE,    \
       arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_ASYNC_END_WITH_TIMESTAMP0(category_group, name, id, \
-                                                   timestamp)                \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                        \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id,                 \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_ASYNC_END_WITH_TIMESTAMP0(category_group, name, id,  \
+                                                   timestamp)                 \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID, \
+      timestamp, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_ASYNC_END_WITH_TIMESTAMP_AND_FLAGS0(category_group, name, \
                                                         id, timestamp, flags) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
@@ -19624,18 +19766,20 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                       \
       TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT, category_group, name, id, \
       TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TTS2(                       \
-    category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val)        \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                            \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group, name, id,        \
-      TRACE_EVENT_FLAG_ASYNC_TTS | TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
-      arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END_WITH_TTS2(                         \
-    category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val)        \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                            \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group, name, id,          \
-      TRACE_EVENT_FLAG_ASYNC_TTS | TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
-      arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TTS2(                \
+    category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                     \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,           \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_ASYNC_TTS,  \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                   \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END_WITH_TTS2(                  \
+    category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                     \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group,             \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_ASYNC_TTS,  \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                   \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Async events with explicit timestamps.
 #define TRACE_EVENT_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(category_group, name, \
@@ -19671,47 +19815,54 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                     \
       TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT, category_group, name, id, \
       TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_NONE)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN0(category_group, name, id)   \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, \
-                                   category_group, name, id,               \
-                                   TRACE_EVENT_FLAG_COPY)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN1(category_group, name, id,   \
-                                               arg1_name, arg1_val)        \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, \
-                                   category_group, name, id,               \
-                                   TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN0(category_group, name, id) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                      \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN1(category_group, name, id, \
+                                               arg1_name, arg1_val)      \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                      \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,        \
+      ::perfetto::DynamicString{arg1_name}, arg1_val)
 #define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN2(                         \
     category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                     \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group, name, id, \
-      TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END0(category_group, name, id)   \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, \
-                                   category_group, name, id,             \
-                                   TRACE_EVENT_FLAG_COPY)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(          \
-    category_group, name, id, timestamp)                                \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                   \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group, name, id, \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP1(             \
-    category_group, name, id, timestamp, arg1_name, arg1_val)              \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                      \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group, name, id,    \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY, \
-      arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END_WITH_TIMESTAMP0(          \
-    category_group, name, id, timestamp)                              \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                 \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group, name, id, \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY)
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,           \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,       \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                   \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END0(category_group, name, id) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                    \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(                \
+    category_group, name, id, timestamp)                                      \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,                 \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID, \
+      timestamp, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP1(                \
+    category_group, name, id, timestamp, arg1_name, arg1_val)                 \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,                 \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID, \
+      timestamp, TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, \
+      arg1_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END_WITH_TIMESTAMP0(                  \
+    category_group, name, id, timestamp)                                      \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group,                   \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID, \
+      timestamp, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_NESTABLE_ASYNC_END_WITH_TIMESTAMP2(                    \
     category_group, name, id, timestamp, arg1_name, arg1_val, arg2_name,   \
     arg2_val)                                                              \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                      \
       TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group, name, id,      \
       TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_NONE, \
-      arg1_name, arg1_val, arg2_name, arg2_val)
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                      \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Metadata events.
 #define TRACE_EVENT_METADATA1(category_group, name, arg1_name, arg1_val) \
@@ -19751,16 +19902,6 @@
                                    category_group, name, id,         \
                                    TRACE_EVENT_FLAG_NONE)
 
-// Context events.
-#define TRACE_EVENT_ENTER_CONTEXT(category_group, name, context)    \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ENTER_CONTEXT, \
-                                   category_group, name, context,   \
-                                   TRACE_EVENT_FLAG_NONE)
-#define TRACE_EVENT_LEAVE_CONTEXT(category_group, name, context)    \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_LEAVE_CONTEXT, \
-                                   category_group, name, context,   \
-                                   TRACE_EVENT_FLAG_NONE)
-
 // TODO(skyostil): Implement binary-efficient trace events.
 #define TRACE_EVENT_BINARY_EFFICIENT0 TRACE_EVENT0
 #define TRACE_EVENT_BINARY_EFFICIENT1 TRACE_EVENT1
@@ -24278,10 +24419,12 @@
 class OneofOptions;
 namespace perfetto_pbzero_enum_FieldDescriptorProto {
 enum Label : int32_t;
-}  // namespace perfetto_pbzero_enum_FieldDescriptorProto 
+}  // namespace perfetto_pbzero_enum_FieldDescriptorProto
+using FieldDescriptorProto_Label = perfetto_pbzero_enum_FieldDescriptorProto::Label;
 namespace perfetto_pbzero_enum_FieldDescriptorProto {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_FieldDescriptorProto 
+}  // namespace perfetto_pbzero_enum_FieldDescriptorProto
+using FieldDescriptorProto_Type = perfetto_pbzero_enum_FieldDescriptorProto::Type;
 
 namespace perfetto_pbzero_enum_FieldDescriptorProto {
 enum Type : int32_t {
@@ -25734,10 +25877,12 @@
 class GpuCounterDescriptor_GpuCounterSpec;
 namespace perfetto_pbzero_enum_GpuCounterDescriptor {
 enum GpuCounterGroup : int32_t;
-}  // namespace perfetto_pbzero_enum_GpuCounterDescriptor 
+}  // namespace perfetto_pbzero_enum_GpuCounterDescriptor
+using GpuCounterDescriptor_GpuCounterGroup = perfetto_pbzero_enum_GpuCounterDescriptor::GpuCounterGroup;
 namespace perfetto_pbzero_enum_GpuCounterDescriptor {
 enum MeasureUnit : int32_t;
-}  // namespace perfetto_pbzero_enum_GpuCounterDescriptor 
+}  // namespace perfetto_pbzero_enum_GpuCounterDescriptor
+using GpuCounterDescriptor_MeasureUnit = perfetto_pbzero_enum_GpuCounterDescriptor::MeasureUnit;
 
 namespace perfetto_pbzero_enum_GpuCounterDescriptor {
 enum GpuCounterGroup : int32_t {
@@ -26721,7 +26866,8 @@
 class ObservableEvents_DataSourceInstanceStateChange;
 namespace perfetto_pbzero_enum_ObservableEvents {
 enum DataSourceInstanceState : int32_t;
-}  // namespace perfetto_pbzero_enum_ObservableEvents 
+}  // namespace perfetto_pbzero_enum_ObservableEvents
+using ObservableEvents_DataSourceInstanceState = perfetto_pbzero_enum_ObservableEvents::DataSourceInstanceState;
 
 namespace perfetto_pbzero_enum_ObservableEvents {
 enum Type : int32_t {
@@ -27001,10 +27147,12 @@
 class PerfEvents_Tracepoint;
 namespace perfetto_pbzero_enum_PerfEvents {
 enum Counter : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfEvents 
+}  // namespace perfetto_pbzero_enum_PerfEvents
+using PerfEvents_Counter = perfetto_pbzero_enum_PerfEvents::Counter;
 namespace perfetto_pbzero_enum_PerfEvents {
 enum PerfClock : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfEvents 
+}  // namespace perfetto_pbzero_enum_PerfEvents
+using PerfEvents_PerfClock = perfetto_pbzero_enum_PerfEvents::PerfClock;
 
 namespace perfetto_pbzero_enum_PerfEvents {
 enum Counter : int32_t {
@@ -28348,7 +28496,8 @@
 class TraceStats_FilterStats;
 namespace perfetto_pbzero_enum_TraceStats {
 enum FinalFlushOutcome : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceStats 
+}  // namespace perfetto_pbzero_enum_TraceStats
+using TraceStats_FinalFlushOutcome = perfetto_pbzero_enum_TraceStats::FinalFlushOutcome;
 
 namespace perfetto_pbzero_enum_TraceStats {
 enum FinalFlushOutcome : int32_t {
@@ -29518,7 +29667,8 @@
 
 namespace perfetto_pbzero_enum_ObservableEvents {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_ObservableEvents 
+}  // namespace perfetto_pbzero_enum_ObservableEvents
+using ObservableEvents_Type = perfetto_pbzero_enum_ObservableEvents::Type;
 
 class TracingServiceCapabilities_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/3, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
  public:
@@ -31134,7 +31284,8 @@
 class FtraceConfig_CompactSchedConfig;
 namespace perfetto_pbzero_enum_FtraceConfig {
 enum KsymsMemPolicy : int32_t;
-}  // namespace perfetto_pbzero_enum_FtraceConfig 
+}  // namespace perfetto_pbzero_enum_FtraceConfig
+using FtraceConfig_KsymsMemPolicy = perfetto_pbzero_enum_FtraceConfig::KsymsMemPolicy;
 
 namespace perfetto_pbzero_enum_FtraceConfig {
 enum KsymsMemPolicy : int32_t {
@@ -31165,7 +31316,7 @@
   return "PBZERO_UNKNOWN_ENUM_VALUE";
 }
 
-class FtraceConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/17, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
+class FtraceConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/18, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
  public:
   FtraceConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit FtraceConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -31192,6 +31343,8 @@
   bool throttle_rss_stat() const { return at<15>().as_bool(); }
   bool has_disable_generic_events() const { return at<16>().valid(); }
   bool disable_generic_events() const { return at<16>().as_bool(); }
+  bool has_syscall_events() const { return at<18>().valid(); }
+  ::protozero::RepeatedFieldIterator<::protozero::ConstChars> syscall_events() const { return GetRepeated<::protozero::ConstChars>(18); }
 };
 
 class FtraceConfig : public ::protozero::Message {
@@ -31209,6 +31362,7 @@
     kInitializeKsymsSynchronouslyForTestingFieldNumber = 14,
     kThrottleRssStatFieldNumber = 15,
     kDisableGenericEventsFieldNumber = 16,
+    kSyscallEventsFieldNumber = 18,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.FtraceConfig"; }
 
@@ -31510,6 +31664,37 @@
       ::protozero::proto_utils::ProtoSchemaType::kBool>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_SyscallEvents =
+    ::protozero::proto_utils::FieldMetadata<
+      18,
+      ::protozero::proto_utils::RepetitionType::kRepeatedNotPacked,
+      ::protozero::proto_utils::ProtoSchemaType::kString,
+      std::string,
+      FtraceConfig>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_SyscallEvents kSyscallEvents() { return {}; }
+  void add_syscall_events(const char* data, size_t size) {
+    AppendBytes(FieldMetadata_SyscallEvents::kFieldId, data, size);
+  }
+  void add_syscall_events(::protozero::ConstChars chars) {
+    AppendBytes(FieldMetadata_SyscallEvents::kFieldId, chars.data, chars.size);
+  }
+  void add_syscall_events(std::string value) {
+    static constexpr uint32_t field_id = FieldMetadata_SyscallEvents::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kString>
+        ::Append(*this, field_id, value);
+  }
 };
 
 class FtraceConfig_CompactSchedConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/1, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
@@ -32125,7 +32310,8 @@
 
 namespace perfetto_pbzero_enum_ConsoleConfig {
 enum Output : int32_t;
-}  // namespace perfetto_pbzero_enum_ConsoleConfig 
+}  // namespace perfetto_pbzero_enum_ConsoleConfig
+using ConsoleConfig_Output = perfetto_pbzero_enum_ConsoleConfig::Output;
 
 namespace perfetto_pbzero_enum_ConsoleConfig {
 enum Output : int32_t {
@@ -32261,7 +32447,8 @@
 
 namespace perfetto_pbzero_enum_AndroidPowerConfig {
 enum BatteryCounters : int32_t;
-}  // namespace perfetto_pbzero_enum_AndroidPowerConfig 
+}  // namespace perfetto_pbzero_enum_AndroidPowerConfig
+using AndroidPowerConfig_BatteryCounters = perfetto_pbzero_enum_AndroidPowerConfig::BatteryCounters;
 
 namespace perfetto_pbzero_enum_AndroidPowerConfig {
 enum BatteryCounters : int32_t {
@@ -32463,7 +32650,8 @@
 
 namespace perfetto_pbzero_enum_ProcessStatsConfig {
 enum Quirks : int32_t;
-}  // namespace perfetto_pbzero_enum_ProcessStatsConfig 
+}  // namespace perfetto_pbzero_enum_ProcessStatsConfig
+using ProcessStatsConfig_Quirks = perfetto_pbzero_enum_ProcessStatsConfig::Quirks;
 
 namespace perfetto_pbzero_enum_ProcessStatsConfig {
 enum Quirks : int32_t {
@@ -33878,7 +34066,8 @@
 class PerfEvents_Timebase;
 namespace perfetto_pbzero_enum_PerfEventConfig {
 enum UnwindMode : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfEventConfig 
+}  // namespace perfetto_pbzero_enum_PerfEventConfig
+using PerfEventConfig_UnwindMode = perfetto_pbzero_enum_PerfEventConfig::UnwindMode;
 
 namespace perfetto_pbzero_enum_PerfEventConfig {
 enum UnwindMode : int32_t {
@@ -37196,7 +37385,8 @@
 enum MeminfoCounters : int32_t;
 namespace perfetto_pbzero_enum_SysStatsConfig {
 enum StatCounters : int32_t;
-}  // namespace perfetto_pbzero_enum_SysStatsConfig 
+}  // namespace perfetto_pbzero_enum_SysStatsConfig
+using SysStatsConfig_StatCounters = perfetto_pbzero_enum_SysStatsConfig::StatCounters;
 enum VmstatCounters : int32_t;
 
 namespace perfetto_pbzero_enum_SysStatsConfig {
@@ -37236,7 +37426,7 @@
   return "PBZERO_UNKNOWN_ENUM_VALUE";
 }
 
-class SysStatsConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/8, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
+class SysStatsConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/9, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
  public:
   SysStatsConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit SysStatsConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -37257,6 +37447,8 @@
   uint32_t devfreq_period_ms() const { return at<7>().as_uint32(); }
   bool has_cpufreq_period_ms() const { return at<8>().valid(); }
   uint32_t cpufreq_period_ms() const { return at<8>().as_uint32(); }
+  bool has_buddyinfo_period_ms() const { return at<9>().valid(); }
+  uint32_t buddyinfo_period_ms() const { return at<9>().as_uint32(); }
 };
 
 class SysStatsConfig : public ::protozero::Message {
@@ -37271,6 +37463,7 @@
     kStatCountersFieldNumber = 6,
     kDevfreqPeriodMsFieldNumber = 7,
     kCpufreqPeriodMsFieldNumber = 8,
+    kBuddyinfoPeriodMsFieldNumber = 9,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.SysStatsConfig"; }
 
@@ -37484,6 +37677,69 @@
       ::protozero::proto_utils::ProtoSchemaType::kUint32>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_BuddyinfoPeriodMs =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      SysStatsConfig>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_BuddyinfoPeriodMs kBuddyinfoPeriodMs() { return {}; }
+  void set_buddyinfo_period_ms(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_BuddyinfoPeriodMs::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+} // Namespace.
+} // Namespace.
+} // Namespace.
+#endif  // Include guard.
+// gen_amalgamated begin header: gen/protos/perfetto/config/system_info/system_info.pbzero.h
+// Autogenerated by the ProtoZero compiler plugin. DO NOT EDIT.
+
+#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_H_
+#define PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+// gen_amalgamated expanded: #include "perfetto/protozero/field_writer.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/message.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/packed_repeated_fields.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/proto_decoder.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/proto_utils.h"
+
+namespace perfetto {
+namespace protos {
+namespace pbzero {
+
+
+class SystemInfoConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/0, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  SystemInfoConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit SystemInfoConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit SystemInfoConfig_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+};
+
+class SystemInfoConfig : public ::protozero::Message {
+ public:
+  using Decoder = SystemInfoConfig_Decoder;
+  static constexpr const char* GetName() { return ".perfetto.protos.SystemInfoConfig"; }
+
 };
 
 } // Namespace.
@@ -37827,7 +38083,8 @@
 
 namespace perfetto_pbzero_enum_ChromeConfig {
 enum ClientPriority : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeConfig 
+}  // namespace perfetto_pbzero_enum_ChromeConfig
+using ChromeConfig_ClientPriority = perfetto_pbzero_enum_ChromeConfig::ClientPriority;
 
 namespace perfetto_pbzero_enum_ChromeConfig {
 enum ClientPriority : int32_t {
@@ -38074,12 +38331,14 @@
 class ProcessStatsConfig;
 class StatsdTracingConfig;
 class SysStatsConfig;
+class SystemInfoConfig;
 class TestConfig;
 class TrackEventConfig;
 class VulkanMemoryConfig;
 namespace perfetto_pbzero_enum_DataSourceConfig {
 enum SessionInitiator : int32_t;
-}  // namespace perfetto_pbzero_enum_DataSourceConfig 
+}  // namespace perfetto_pbzero_enum_DataSourceConfig
+using DataSourceConfig_SessionInitiator = perfetto_pbzero_enum_DataSourceConfig::SessionInitiator;
 
 namespace perfetto_pbzero_enum_DataSourceConfig {
 enum SessionInitiator : int32_t {
@@ -38106,7 +38365,7 @@
   return "PBZERO_UNKNOWN_ENUM_VALUE";
 }
 
-class DataSourceConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/118, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+class DataSourceConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/119, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
  public:
   DataSourceConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit DataSourceConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -38159,6 +38418,8 @@
   ::protozero::ConstBytes android_system_property_config() const { return at<118>().as_bytes(); }
   bool has_statsd_tracing_config() const { return at<117>().valid(); }
   ::protozero::ConstBytes statsd_tracing_config() const { return at<117>().as_bytes(); }
+  bool has_system_info_config() const { return at<119>().valid(); }
+  ::protozero::ConstBytes system_info_config() const { return at<119>().as_bytes(); }
   bool has_chrome_config() const { return at<101>().valid(); }
   ::protozero::ConstBytes chrome_config() const { return at<101>().as_bytes(); }
   bool has_interceptor_config() const { return at<115>().valid(); }
@@ -38195,6 +38456,7 @@
     kAndroidPolledStateConfigFieldNumber = 114,
     kAndroidSystemPropertyConfigFieldNumber = 118,
     kStatsdTracingConfigFieldNumber = 117,
+    kSystemInfoConfigFieldNumber = 119,
     kChromeConfigFieldNumber = 101,
     kInterceptorConfigFieldNumber = 115,
     kLegacyConfigFieldNumber = 1000,
@@ -38816,6 +39078,27 @@
   }
 
 
+  using FieldMetadata_SystemInfoConfig =
+    ::protozero::proto_utils::FieldMetadata<
+      119,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      SystemInfoConfig,
+      DataSourceConfig>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_SystemInfoConfig kSystemInfoConfig() { return {}; }
+  template <typename T = SystemInfoConfig> T* set_system_info_config() {
+    return BeginNestedMessage<T>(119);
+  }
+
+
   using FieldMetadata_ChromeConfig =
     ::protozero::proto_utils::FieldMetadata<
       101,
@@ -40175,19 +40458,24 @@
 enum BuiltinClock : int32_t;
 namespace perfetto_pbzero_enum_TraceConfig_BufferConfig {
 enum FillPolicy : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig_BufferConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig_BufferConfig
+using TraceConfig_BufferConfig_FillPolicy = perfetto_pbzero_enum_TraceConfig_BufferConfig::FillPolicy;
 namespace perfetto_pbzero_enum_TraceConfig {
 enum CompressionType : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig
+using TraceConfig_CompressionType = perfetto_pbzero_enum_TraceConfig::CompressionType;
 namespace perfetto_pbzero_enum_TraceConfig {
 enum LockdownModeOperation : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig
+using TraceConfig_LockdownModeOperation = perfetto_pbzero_enum_TraceConfig::LockdownModeOperation;
 namespace perfetto_pbzero_enum_TraceConfig {
 enum StatsdLogging : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig
+using TraceConfig_StatsdLogging = perfetto_pbzero_enum_TraceConfig::StatsdLogging;
 namespace perfetto_pbzero_enum_TraceConfig_TriggerConfig {
 enum TriggerMode : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig_TriggerConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig_TriggerConfig
+using TraceConfig_TriggerConfig_TriggerMode = perfetto_pbzero_enum_TraceConfig_TriggerConfig::TriggerMode;
 
 namespace perfetto_pbzero_enum_TraceConfig {
 enum LockdownModeOperation : int32_t {
@@ -43118,7 +43406,7 @@
 
 class Utsname;
 
-class SystemInfo_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/5, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+class SystemInfo_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/6, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
  public:
   SystemInfo_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit SystemInfo_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -43133,6 +43421,8 @@
   ::protozero::ConstChars tracing_service_version() const { return at<4>().as_string(); }
   bool has_android_sdk_version() const { return at<5>().valid(); }
   uint64_t android_sdk_version() const { return at<5>().as_uint64(); }
+  bool has_page_size() const { return at<6>().valid(); }
+  uint32_t page_size() const { return at<6>().as_uint32(); }
 };
 
 class SystemInfo : public ::protozero::Message {
@@ -43144,6 +43434,7 @@
     kHzFieldNumber = 3,
     kTracingServiceVersionFieldNumber = 4,
     kAndroidSdkVersionFieldNumber = 5,
+    kPageSizeFieldNumber = 6,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.SystemInfo"; }
 
@@ -43280,6 +43571,31 @@
       ::protozero::proto_utils::ProtoSchemaType::kUint64>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_PageSize =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      SystemInfo>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_PageSize kPageSize() { return {}; }
+  void set_page_size(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_PageSize::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
 };
 
 class Utsname_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/4, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
@@ -44607,7 +44923,8 @@
 class AndroidCameraSessionStats_CameraGraph_CameraNode;
 namespace perfetto_pbzero_enum_AndroidCameraFrameEvent {
 enum CaptureResultStatus : int32_t;
-}  // namespace perfetto_pbzero_enum_AndroidCameraFrameEvent 
+}  // namespace perfetto_pbzero_enum_AndroidCameraFrameEvent
+using AndroidCameraFrameEvent_CaptureResultStatus = perfetto_pbzero_enum_AndroidCameraFrameEvent::CaptureResultStatus;
 
 namespace perfetto_pbzero_enum_AndroidCameraFrameEvent {
 enum CaptureResultStatus : int32_t {
@@ -45773,10 +46090,12 @@
 class FrameTimelineEvent_FrameEnd;
 namespace perfetto_pbzero_enum_FrameTimelineEvent {
 enum PredictionType : int32_t;
-}  // namespace perfetto_pbzero_enum_FrameTimelineEvent 
+}  // namespace perfetto_pbzero_enum_FrameTimelineEvent
+using FrameTimelineEvent_PredictionType = perfetto_pbzero_enum_FrameTimelineEvent::PredictionType;
 namespace perfetto_pbzero_enum_FrameTimelineEvent {
 enum PresentType : int32_t;
-}  // namespace perfetto_pbzero_enum_FrameTimelineEvent 
+}  // namespace perfetto_pbzero_enum_FrameTimelineEvent
+using FrameTimelineEvent_PresentType = perfetto_pbzero_enum_FrameTimelineEvent::PresentType;
 
 namespace perfetto_pbzero_enum_FrameTimelineEvent {
 enum JankType : int32_t {
@@ -47116,7 +47435,8 @@
 class GraphicsFrameEvent_BufferEvent;
 namespace perfetto_pbzero_enum_GraphicsFrameEvent {
 enum BufferEventType : int32_t;
-}  // namespace perfetto_pbzero_enum_GraphicsFrameEvent 
+}  // namespace perfetto_pbzero_enum_GraphicsFrameEvent
+using GraphicsFrameEvent_BufferEventType = perfetto_pbzero_enum_GraphicsFrameEvent::BufferEventType;
 
 namespace perfetto_pbzero_enum_GraphicsFrameEvent {
 enum BufferEventType : int32_t {
@@ -48144,10 +48464,12 @@
 class BackgroundTracingMetadata_TriggerRule_NamedRule;
 namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule_NamedRule {
 enum EventType : int32_t;
-}  // namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule_NamedRule 
+}  // namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule_NamedRule
+using BackgroundTracingMetadata_TriggerRule_NamedRule_EventType = perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule_NamedRule::EventType;
 namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule {
 enum TriggerType : int32_t;
-}  // namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule 
+}  // namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule
+using BackgroundTracingMetadata_TriggerRule_TriggerType = perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule::TriggerType;
 
 namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule {
 enum TriggerType : int32_t {
@@ -48707,10 +49029,12 @@
 class ChromeTracedValue;
 namespace perfetto_pbzero_enum_ChromeLegacyJsonTrace {
 enum TraceType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeLegacyJsonTrace 
+}  // namespace perfetto_pbzero_enum_ChromeLegacyJsonTrace
+using ChromeLegacyJsonTrace_TraceType = perfetto_pbzero_enum_ChromeLegacyJsonTrace::TraceType;
 namespace perfetto_pbzero_enum_ChromeTracedValue {
 enum NestedType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeTracedValue 
+}  // namespace perfetto_pbzero_enum_ChromeTracedValue
+using ChromeTracedValue_NestedType = perfetto_pbzero_enum_ChromeTracedValue::NestedType;
 
 namespace perfetto_pbzero_enum_ChromeLegacyJsonTrace {
 enum TraceType : int32_t {
@@ -50311,7 +50635,8 @@
 class InodeFileMap_Entry;
 namespace perfetto_pbzero_enum_InodeFileMap_Entry {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_InodeFileMap_Entry 
+}  // namespace perfetto_pbzero_enum_InodeFileMap_Entry
+using InodeFileMap_Entry_Type = perfetto_pbzero_enum_InodeFileMap_Entry::Type;
 
 namespace perfetto_pbzero_enum_InodeFileMap_Entry {
 enum Type : int32_t {
@@ -50653,6 +50978,9 @@
 class DrmSchedProcessJobFtraceEvent;
 class DrmVblankEventDeliveredFtraceEvent;
 class DrmVblankEventFtraceEvent;
+class DsiCmdFifoStatusFtraceEvent;
+class DsiRxFtraceEvent;
+class DsiTxFtraceEvent;
 class Ext4AllocDaBlocksFtraceEvent;
 class Ext4AllocateBlocksFtraceEvent;
 class Ext4AllocateInodeFtraceEvent;
@@ -50976,6 +51304,12 @@
 class TrapRegFtraceEvent;
 class UfshcdClkGatingFtraceEvent;
 class UfshcdCommandFtraceEvent;
+class V4l2DqbufFtraceEvent;
+class V4l2QbufFtraceEvent;
+class Vb2V4l2BufDoneFtraceEvent;
+class Vb2V4l2BufQueueFtraceEvent;
+class Vb2V4l2DqbufFtraceEvent;
+class Vb2V4l2QbufFtraceEvent;
 class VgicUpdateIrqPendingFtraceEvent;
 class WakeupSourceActivateFtraceEvent;
 class WakeupSourceDeactivateFtraceEvent;
@@ -50985,7 +51319,7 @@
 class WorkqueueQueueWorkFtraceEvent;
 class ZeroFtraceEvent;
 
-class FtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/421, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+class FtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/430, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
  public:
   FtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit FtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -51798,6 +52132,24 @@
   ::protozero::ConstBytes f2fs_iostat_latency() const { return at<420>().as_bytes(); }
   bool has_sched_cpu_util_cfs() const { return at<421>().valid(); }
   ::protozero::ConstBytes sched_cpu_util_cfs() const { return at<421>().as_bytes(); }
+  bool has_v4l2_qbuf() const { return at<422>().valid(); }
+  ::protozero::ConstBytes v4l2_qbuf() const { return at<422>().as_bytes(); }
+  bool has_v4l2_dqbuf() const { return at<423>().valid(); }
+  ::protozero::ConstBytes v4l2_dqbuf() const { return at<423>().as_bytes(); }
+  bool has_vb2_v4l2_buf_queue() const { return at<424>().valid(); }
+  ::protozero::ConstBytes vb2_v4l2_buf_queue() const { return at<424>().as_bytes(); }
+  bool has_vb2_v4l2_buf_done() const { return at<425>().valid(); }
+  ::protozero::ConstBytes vb2_v4l2_buf_done() const { return at<425>().as_bytes(); }
+  bool has_vb2_v4l2_qbuf() const { return at<426>().valid(); }
+  ::protozero::ConstBytes vb2_v4l2_qbuf() const { return at<426>().as_bytes(); }
+  bool has_vb2_v4l2_dqbuf() const { return at<427>().valid(); }
+  ::protozero::ConstBytes vb2_v4l2_dqbuf() const { return at<427>().as_bytes(); }
+  bool has_dsi_cmd_fifo_status() const { return at<428>().valid(); }
+  ::protozero::ConstBytes dsi_cmd_fifo_status() const { return at<428>().as_bytes(); }
+  bool has_dsi_rx() const { return at<429>().valid(); }
+  ::protozero::ConstBytes dsi_rx() const { return at<429>().as_bytes(); }
+  bool has_dsi_tx() const { return at<430>().valid(); }
+  ::protozero::ConstBytes dsi_tx() const { return at<430>().as_bytes(); }
 };
 
 class FtraceEvent : public ::protozero::Message {
@@ -52208,6 +52560,15 @@
     kF2fsIostatFieldNumber = 419,
     kF2fsIostatLatencyFieldNumber = 420,
     kSchedCpuUtilCfsFieldNumber = 421,
+    kV4l2QbufFieldNumber = 422,
+    kV4l2DqbufFieldNumber = 423,
+    kVb2V4l2BufQueueFieldNumber = 424,
+    kVb2V4l2BufDoneFieldNumber = 425,
+    kVb2V4l2QbufFieldNumber = 426,
+    kVb2V4l2DqbufFieldNumber = 427,
+    kDsiCmdFifoStatusFieldNumber = 428,
+    kDsiRxFieldNumber = 429,
+    kDsiTxFieldNumber = 430,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.FtraceEvent"; }
 
@@ -60703,6 +61064,195 @@
     return BeginNestedMessage<T>(421);
   }
 
+
+  using FieldMetadata_V4l2Qbuf =
+    ::protozero::proto_utils::FieldMetadata<
+      422,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      V4l2QbufFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_V4l2Qbuf kV4l2Qbuf() { return {}; }
+  template <typename T = V4l2QbufFtraceEvent> T* set_v4l2_qbuf() {
+    return BeginNestedMessage<T>(422);
+  }
+
+
+  using FieldMetadata_V4l2Dqbuf =
+    ::protozero::proto_utils::FieldMetadata<
+      423,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      V4l2DqbufFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_V4l2Dqbuf kV4l2Dqbuf() { return {}; }
+  template <typename T = V4l2DqbufFtraceEvent> T* set_v4l2_dqbuf() {
+    return BeginNestedMessage<T>(423);
+  }
+
+
+  using FieldMetadata_Vb2V4l2BufQueue =
+    ::protozero::proto_utils::FieldMetadata<
+      424,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      Vb2V4l2BufQueueFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Vb2V4l2BufQueue kVb2V4l2BufQueue() { return {}; }
+  template <typename T = Vb2V4l2BufQueueFtraceEvent> T* set_vb2_v4l2_buf_queue() {
+    return BeginNestedMessage<T>(424);
+  }
+
+
+  using FieldMetadata_Vb2V4l2BufDone =
+    ::protozero::proto_utils::FieldMetadata<
+      425,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      Vb2V4l2BufDoneFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Vb2V4l2BufDone kVb2V4l2BufDone() { return {}; }
+  template <typename T = Vb2V4l2BufDoneFtraceEvent> T* set_vb2_v4l2_buf_done() {
+    return BeginNestedMessage<T>(425);
+  }
+
+
+  using FieldMetadata_Vb2V4l2Qbuf =
+    ::protozero::proto_utils::FieldMetadata<
+      426,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      Vb2V4l2QbufFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Vb2V4l2Qbuf kVb2V4l2Qbuf() { return {}; }
+  template <typename T = Vb2V4l2QbufFtraceEvent> T* set_vb2_v4l2_qbuf() {
+    return BeginNestedMessage<T>(426);
+  }
+
+
+  using FieldMetadata_Vb2V4l2Dqbuf =
+    ::protozero::proto_utils::FieldMetadata<
+      427,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      Vb2V4l2DqbufFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Vb2V4l2Dqbuf kVb2V4l2Dqbuf() { return {}; }
+  template <typename T = Vb2V4l2DqbufFtraceEvent> T* set_vb2_v4l2_dqbuf() {
+    return BeginNestedMessage<T>(427);
+  }
+
+
+  using FieldMetadata_DsiCmdFifoStatus =
+    ::protozero::proto_utils::FieldMetadata<
+      428,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      DsiCmdFifoStatusFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_DsiCmdFifoStatus kDsiCmdFifoStatus() { return {}; }
+  template <typename T = DsiCmdFifoStatusFtraceEvent> T* set_dsi_cmd_fifo_status() {
+    return BeginNestedMessage<T>(428);
+  }
+
+
+  using FieldMetadata_DsiRx =
+    ::protozero::proto_utils::FieldMetadata<
+      429,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      DsiRxFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_DsiRx kDsiRx() { return {}; }
+  template <typename T = DsiRxFtraceEvent> T* set_dsi_rx() {
+    return BeginNestedMessage<T>(429);
+  }
+
+
+  using FieldMetadata_DsiTx =
+    ::protozero::proto_utils::FieldMetadata<
+      430,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      DsiTxFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_DsiTx kDsiTx() { return {}; }
+  template <typename T = DsiTxFtraceEvent> T* set_dsi_tx() {
+    return BeginNestedMessage<T>(430);
+  }
+
 };
 
 } // Namespace.
@@ -61282,7 +61832,8 @@
 class FtraceCpuStats;
 namespace perfetto_pbzero_enum_FtraceStats {
 enum Phase : int32_t;
-}  // namespace perfetto_pbzero_enum_FtraceStats 
+}  // namespace perfetto_pbzero_enum_FtraceStats
+using FtraceStats_Phase = perfetto_pbzero_enum_FtraceStats::Phase;
 
 namespace perfetto_pbzero_enum_FtraceStats {
 enum Phase : int32_t {
@@ -110868,6 +111419,274 @@
 } // Namespace.
 } // Namespace.
 #endif  // Include guard.
+// gen_amalgamated begin header: gen/protos/perfetto/trace/ftrace/panel.pbzero.h
+// Autogenerated by the ProtoZero compiler plugin. DO NOT EDIT.
+
+#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_TRACE_FTRACE_PANEL_PROTO_H_
+#define PERFETTO_PROTOS_PROTOS_PERFETTO_TRACE_FTRACE_PANEL_PROTO_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+// gen_amalgamated expanded: #include "perfetto/protozero/field_writer.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/message.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/packed_repeated_fields.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/proto_decoder.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/proto_utils.h"
+
+namespace perfetto {
+namespace protos {
+namespace pbzero {
+
+
+class DsiTxFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/3, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  DsiTxFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit DsiTxFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit DsiTxFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_last() const { return at<1>().valid(); }
+  uint32_t last() const { return at<1>().as_uint32(); }
+  bool has_tx_buf() const { return at<2>().valid(); }
+  uint32_t tx_buf() const { return at<2>().as_uint32(); }
+  bool has_type() const { return at<3>().valid(); }
+  uint32_t type() const { return at<3>().as_uint32(); }
+};
+
+class DsiTxFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = DsiTxFtraceEvent_Decoder;
+  enum : int32_t {
+    kLastFieldNumber = 1,
+    kTxBufFieldNumber = 2,
+    kTypeFieldNumber = 3,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.DsiTxFtraceEvent"; }
+
+
+  using FieldMetadata_Last =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiTxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Last kLast() { return {}; }
+  void set_last(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Last::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TxBuf =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiTxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TxBuf kTxBuf() { return {}; }
+  void set_tx_buf(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TxBuf::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Type =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiTxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Type kType() { return {}; }
+  void set_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Type::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class DsiRxFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/2, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  DsiRxFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit DsiRxFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit DsiRxFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_cmd() const { return at<1>().valid(); }
+  uint32_t cmd() const { return at<1>().as_uint32(); }
+  bool has_rx_buf() const { return at<2>().valid(); }
+  uint32_t rx_buf() const { return at<2>().as_uint32(); }
+};
+
+class DsiRxFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = DsiRxFtraceEvent_Decoder;
+  enum : int32_t {
+    kCmdFieldNumber = 1,
+    kRxBufFieldNumber = 2,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.DsiRxFtraceEvent"; }
+
+
+  using FieldMetadata_Cmd =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiRxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Cmd kCmd() { return {}; }
+  void set_cmd(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Cmd::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_RxBuf =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiRxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_RxBuf kRxBuf() { return {}; }
+  void set_rx_buf(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_RxBuf::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class DsiCmdFifoStatusFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/2, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  DsiCmdFifoStatusFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit DsiCmdFifoStatusFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit DsiCmdFifoStatusFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_header() const { return at<1>().valid(); }
+  uint32_t header() const { return at<1>().as_uint32(); }
+  bool has_payload() const { return at<2>().valid(); }
+  uint32_t payload() const { return at<2>().as_uint32(); }
+};
+
+class DsiCmdFifoStatusFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = DsiCmdFifoStatusFtraceEvent_Decoder;
+  enum : int32_t {
+    kHeaderFieldNumber = 1,
+    kPayloadFieldNumber = 2,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.DsiCmdFifoStatusFtraceEvent"; }
+
+
+  using FieldMetadata_Header =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiCmdFifoStatusFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Header kHeader() { return {}; }
+  void set_header(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Header::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Payload =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiCmdFifoStatusFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Payload kPayload() { return {}; }
+  void set_payload(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Payload::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+} // Namespace.
+} // Namespace.
+} // Namespace.
+#endif  // Include guard.
 // gen_amalgamated begin header: gen/protos/perfetto/trace/ftrace/power.pbzero.h
 // Autogenerated by the ProtoZero compiler plugin. DO NOT EDIT.
 
@@ -118486,6 +119305,2814 @@
 } // Namespace.
 } // Namespace.
 #endif  // Include guard.
+// gen_amalgamated begin header: gen/protos/perfetto/trace/ftrace/v4l2.pbzero.h
+// Autogenerated by the ProtoZero compiler plugin. DO NOT EDIT.
+
+#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_TRACE_FTRACE_V4L2_PROTO_H_
+#define PERFETTO_PROTOS_PROTOS_PERFETTO_TRACE_FTRACE_V4L2_PROTO_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+// gen_amalgamated expanded: #include "perfetto/protozero/field_writer.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/message.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/packed_repeated_fields.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/proto_decoder.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/proto_utils.h"
+
+namespace perfetto {
+namespace protos {
+namespace pbzero {
+
+
+class Vb2V4l2DqbufFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/15, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  Vb2V4l2DqbufFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit Vb2V4l2DqbufFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit Vb2V4l2DqbufFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_field() const { return at<1>().valid(); }
+  uint32_t field() const { return at<1>().as_uint32(); }
+  bool has_flags() const { return at<2>().valid(); }
+  uint32_t flags() const { return at<2>().as_uint32(); }
+  bool has_minor() const { return at<3>().valid(); }
+  int32_t minor() const { return at<3>().as_int32(); }
+  bool has_sequence() const { return at<4>().valid(); }
+  uint32_t sequence() const { return at<4>().as_uint32(); }
+  bool has_timecode_flags() const { return at<5>().valid(); }
+  uint32_t timecode_flags() const { return at<5>().as_uint32(); }
+  bool has_timecode_frames() const { return at<6>().valid(); }
+  uint32_t timecode_frames() const { return at<6>().as_uint32(); }
+  bool has_timecode_hours() const { return at<7>().valid(); }
+  uint32_t timecode_hours() const { return at<7>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<8>().valid(); }
+  uint32_t timecode_minutes() const { return at<8>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<9>().valid(); }
+  uint32_t timecode_seconds() const { return at<9>().as_uint32(); }
+  bool has_timecode_type() const { return at<10>().valid(); }
+  uint32_t timecode_type() const { return at<10>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<11>().valid(); }
+  uint32_t timecode_userbits0() const { return at<11>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<12>().valid(); }
+  uint32_t timecode_userbits1() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<13>().valid(); }
+  uint32_t timecode_userbits2() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<14>().valid(); }
+  uint32_t timecode_userbits3() const { return at<14>().as_uint32(); }
+  bool has_timestamp() const { return at<15>().valid(); }
+  int64_t timestamp() const { return at<15>().as_int64(); }
+};
+
+class Vb2V4l2DqbufFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = Vb2V4l2DqbufFtraceEvent_Decoder;
+  enum : int32_t {
+    kFieldFieldNumber = 1,
+    kFlagsFieldNumber = 2,
+    kMinorFieldNumber = 3,
+    kSequenceFieldNumber = 4,
+    kTimecodeFlagsFieldNumber = 5,
+    kTimecodeFramesFieldNumber = 6,
+    kTimecodeHoursFieldNumber = 7,
+    kTimecodeMinutesFieldNumber = 8,
+    kTimecodeSecondsFieldNumber = 9,
+    kTimecodeTypeFieldNumber = 10,
+    kTimecodeUserbits0FieldNumber = 11,
+    kTimecodeUserbits1FieldNumber = 12,
+    kTimecodeUserbits2FieldNumber = 13,
+    kTimecodeUserbits3FieldNumber = 14,
+    kTimestampFieldNumber = 15,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.Vb2V4l2DqbufFtraceEvent"; }
+
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class Vb2V4l2QbufFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/15, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  Vb2V4l2QbufFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit Vb2V4l2QbufFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit Vb2V4l2QbufFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_field() const { return at<1>().valid(); }
+  uint32_t field() const { return at<1>().as_uint32(); }
+  bool has_flags() const { return at<2>().valid(); }
+  uint32_t flags() const { return at<2>().as_uint32(); }
+  bool has_minor() const { return at<3>().valid(); }
+  int32_t minor() const { return at<3>().as_int32(); }
+  bool has_sequence() const { return at<4>().valid(); }
+  uint32_t sequence() const { return at<4>().as_uint32(); }
+  bool has_timecode_flags() const { return at<5>().valid(); }
+  uint32_t timecode_flags() const { return at<5>().as_uint32(); }
+  bool has_timecode_frames() const { return at<6>().valid(); }
+  uint32_t timecode_frames() const { return at<6>().as_uint32(); }
+  bool has_timecode_hours() const { return at<7>().valid(); }
+  uint32_t timecode_hours() const { return at<7>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<8>().valid(); }
+  uint32_t timecode_minutes() const { return at<8>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<9>().valid(); }
+  uint32_t timecode_seconds() const { return at<9>().as_uint32(); }
+  bool has_timecode_type() const { return at<10>().valid(); }
+  uint32_t timecode_type() const { return at<10>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<11>().valid(); }
+  uint32_t timecode_userbits0() const { return at<11>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<12>().valid(); }
+  uint32_t timecode_userbits1() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<13>().valid(); }
+  uint32_t timecode_userbits2() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<14>().valid(); }
+  uint32_t timecode_userbits3() const { return at<14>().as_uint32(); }
+  bool has_timestamp() const { return at<15>().valid(); }
+  int64_t timestamp() const { return at<15>().as_int64(); }
+};
+
+class Vb2V4l2QbufFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = Vb2V4l2QbufFtraceEvent_Decoder;
+  enum : int32_t {
+    kFieldFieldNumber = 1,
+    kFlagsFieldNumber = 2,
+    kMinorFieldNumber = 3,
+    kSequenceFieldNumber = 4,
+    kTimecodeFlagsFieldNumber = 5,
+    kTimecodeFramesFieldNumber = 6,
+    kTimecodeHoursFieldNumber = 7,
+    kTimecodeMinutesFieldNumber = 8,
+    kTimecodeSecondsFieldNumber = 9,
+    kTimecodeTypeFieldNumber = 10,
+    kTimecodeUserbits0FieldNumber = 11,
+    kTimecodeUserbits1FieldNumber = 12,
+    kTimecodeUserbits2FieldNumber = 13,
+    kTimecodeUserbits3FieldNumber = 14,
+    kTimestampFieldNumber = 15,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.Vb2V4l2QbufFtraceEvent"; }
+
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class Vb2V4l2BufDoneFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/15, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  Vb2V4l2BufDoneFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit Vb2V4l2BufDoneFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit Vb2V4l2BufDoneFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_field() const { return at<1>().valid(); }
+  uint32_t field() const { return at<1>().as_uint32(); }
+  bool has_flags() const { return at<2>().valid(); }
+  uint32_t flags() const { return at<2>().as_uint32(); }
+  bool has_minor() const { return at<3>().valid(); }
+  int32_t minor() const { return at<3>().as_int32(); }
+  bool has_sequence() const { return at<4>().valid(); }
+  uint32_t sequence() const { return at<4>().as_uint32(); }
+  bool has_timecode_flags() const { return at<5>().valid(); }
+  uint32_t timecode_flags() const { return at<5>().as_uint32(); }
+  bool has_timecode_frames() const { return at<6>().valid(); }
+  uint32_t timecode_frames() const { return at<6>().as_uint32(); }
+  bool has_timecode_hours() const { return at<7>().valid(); }
+  uint32_t timecode_hours() const { return at<7>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<8>().valid(); }
+  uint32_t timecode_minutes() const { return at<8>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<9>().valid(); }
+  uint32_t timecode_seconds() const { return at<9>().as_uint32(); }
+  bool has_timecode_type() const { return at<10>().valid(); }
+  uint32_t timecode_type() const { return at<10>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<11>().valid(); }
+  uint32_t timecode_userbits0() const { return at<11>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<12>().valid(); }
+  uint32_t timecode_userbits1() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<13>().valid(); }
+  uint32_t timecode_userbits2() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<14>().valid(); }
+  uint32_t timecode_userbits3() const { return at<14>().as_uint32(); }
+  bool has_timestamp() const { return at<15>().valid(); }
+  int64_t timestamp() const { return at<15>().as_int64(); }
+};
+
+class Vb2V4l2BufDoneFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = Vb2V4l2BufDoneFtraceEvent_Decoder;
+  enum : int32_t {
+    kFieldFieldNumber = 1,
+    kFlagsFieldNumber = 2,
+    kMinorFieldNumber = 3,
+    kSequenceFieldNumber = 4,
+    kTimecodeFlagsFieldNumber = 5,
+    kTimecodeFramesFieldNumber = 6,
+    kTimecodeHoursFieldNumber = 7,
+    kTimecodeMinutesFieldNumber = 8,
+    kTimecodeSecondsFieldNumber = 9,
+    kTimecodeTypeFieldNumber = 10,
+    kTimecodeUserbits0FieldNumber = 11,
+    kTimecodeUserbits1FieldNumber = 12,
+    kTimecodeUserbits2FieldNumber = 13,
+    kTimecodeUserbits3FieldNumber = 14,
+    kTimestampFieldNumber = 15,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.Vb2V4l2BufDoneFtraceEvent"; }
+
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class Vb2V4l2BufQueueFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/15, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  Vb2V4l2BufQueueFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit Vb2V4l2BufQueueFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit Vb2V4l2BufQueueFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_field() const { return at<1>().valid(); }
+  uint32_t field() const { return at<1>().as_uint32(); }
+  bool has_flags() const { return at<2>().valid(); }
+  uint32_t flags() const { return at<2>().as_uint32(); }
+  bool has_minor() const { return at<3>().valid(); }
+  int32_t minor() const { return at<3>().as_int32(); }
+  bool has_sequence() const { return at<4>().valid(); }
+  uint32_t sequence() const { return at<4>().as_uint32(); }
+  bool has_timecode_flags() const { return at<5>().valid(); }
+  uint32_t timecode_flags() const { return at<5>().as_uint32(); }
+  bool has_timecode_frames() const { return at<6>().valid(); }
+  uint32_t timecode_frames() const { return at<6>().as_uint32(); }
+  bool has_timecode_hours() const { return at<7>().valid(); }
+  uint32_t timecode_hours() const { return at<7>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<8>().valid(); }
+  uint32_t timecode_minutes() const { return at<8>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<9>().valid(); }
+  uint32_t timecode_seconds() const { return at<9>().as_uint32(); }
+  bool has_timecode_type() const { return at<10>().valid(); }
+  uint32_t timecode_type() const { return at<10>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<11>().valid(); }
+  uint32_t timecode_userbits0() const { return at<11>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<12>().valid(); }
+  uint32_t timecode_userbits1() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<13>().valid(); }
+  uint32_t timecode_userbits2() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<14>().valid(); }
+  uint32_t timecode_userbits3() const { return at<14>().as_uint32(); }
+  bool has_timestamp() const { return at<15>().valid(); }
+  int64_t timestamp() const { return at<15>().as_int64(); }
+};
+
+class Vb2V4l2BufQueueFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = Vb2V4l2BufQueueFtraceEvent_Decoder;
+  enum : int32_t {
+    kFieldFieldNumber = 1,
+    kFlagsFieldNumber = 2,
+    kMinorFieldNumber = 3,
+    kSequenceFieldNumber = 4,
+    kTimecodeFlagsFieldNumber = 5,
+    kTimecodeFramesFieldNumber = 6,
+    kTimecodeHoursFieldNumber = 7,
+    kTimecodeMinutesFieldNumber = 8,
+    kTimecodeSecondsFieldNumber = 9,
+    kTimecodeTypeFieldNumber = 10,
+    kTimecodeUserbits0FieldNumber = 11,
+    kTimecodeUserbits1FieldNumber = 12,
+    kTimecodeUserbits2FieldNumber = 13,
+    kTimecodeUserbits3FieldNumber = 14,
+    kTimestampFieldNumber = 15,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.Vb2V4l2BufQueueFtraceEvent"; }
+
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class V4l2DqbufFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/18, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  V4l2DqbufFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit V4l2DqbufFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit V4l2DqbufFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_bytesused() const { return at<1>().valid(); }
+  uint32_t bytesused() const { return at<1>().as_uint32(); }
+  bool has_field() const { return at<2>().valid(); }
+  uint32_t field() const { return at<2>().as_uint32(); }
+  bool has_flags() const { return at<3>().valid(); }
+  uint32_t flags() const { return at<3>().as_uint32(); }
+  bool has_index() const { return at<4>().valid(); }
+  uint32_t index() const { return at<4>().as_uint32(); }
+  bool has_minor() const { return at<5>().valid(); }
+  int32_t minor() const { return at<5>().as_int32(); }
+  bool has_sequence() const { return at<6>().valid(); }
+  uint32_t sequence() const { return at<6>().as_uint32(); }
+  bool has_timecode_flags() const { return at<7>().valid(); }
+  uint32_t timecode_flags() const { return at<7>().as_uint32(); }
+  bool has_timecode_frames() const { return at<8>().valid(); }
+  uint32_t timecode_frames() const { return at<8>().as_uint32(); }
+  bool has_timecode_hours() const { return at<9>().valid(); }
+  uint32_t timecode_hours() const { return at<9>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<10>().valid(); }
+  uint32_t timecode_minutes() const { return at<10>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<11>().valid(); }
+  uint32_t timecode_seconds() const { return at<11>().as_uint32(); }
+  bool has_timecode_type() const { return at<12>().valid(); }
+  uint32_t timecode_type() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<13>().valid(); }
+  uint32_t timecode_userbits0() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<14>().valid(); }
+  uint32_t timecode_userbits1() const { return at<14>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<15>().valid(); }
+  uint32_t timecode_userbits2() const { return at<15>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<16>().valid(); }
+  uint32_t timecode_userbits3() const { return at<16>().as_uint32(); }
+  bool has_timestamp() const { return at<17>().valid(); }
+  int64_t timestamp() const { return at<17>().as_int64(); }
+  bool has_type() const { return at<18>().valid(); }
+  uint32_t type() const { return at<18>().as_uint32(); }
+};
+
+class V4l2DqbufFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = V4l2DqbufFtraceEvent_Decoder;
+  enum : int32_t {
+    kBytesusedFieldNumber = 1,
+    kFieldFieldNumber = 2,
+    kFlagsFieldNumber = 3,
+    kIndexFieldNumber = 4,
+    kMinorFieldNumber = 5,
+    kSequenceFieldNumber = 6,
+    kTimecodeFlagsFieldNumber = 7,
+    kTimecodeFramesFieldNumber = 8,
+    kTimecodeHoursFieldNumber = 9,
+    kTimecodeMinutesFieldNumber = 10,
+    kTimecodeSecondsFieldNumber = 11,
+    kTimecodeTypeFieldNumber = 12,
+    kTimecodeUserbits0FieldNumber = 13,
+    kTimecodeUserbits1FieldNumber = 14,
+    kTimecodeUserbits2FieldNumber = 15,
+    kTimecodeUserbits3FieldNumber = 16,
+    kTimestampFieldNumber = 17,
+    kTypeFieldNumber = 18,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.V4l2DqbufFtraceEvent"; }
+
+
+  using FieldMetadata_Bytesused =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Bytesused kBytesused() { return {}; }
+  void set_bytesused(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Bytesused::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Index =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Index kIndex() { return {}; }
+  void set_index(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Index::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      16,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      17,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Type =
+    ::protozero::proto_utils::FieldMetadata<
+      18,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Type kType() { return {}; }
+  void set_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Type::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class V4l2QbufFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/18, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  V4l2QbufFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit V4l2QbufFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit V4l2QbufFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_bytesused() const { return at<1>().valid(); }
+  uint32_t bytesused() const { return at<1>().as_uint32(); }
+  bool has_field() const { return at<2>().valid(); }
+  uint32_t field() const { return at<2>().as_uint32(); }
+  bool has_flags() const { return at<3>().valid(); }
+  uint32_t flags() const { return at<3>().as_uint32(); }
+  bool has_index() const { return at<4>().valid(); }
+  uint32_t index() const { return at<4>().as_uint32(); }
+  bool has_minor() const { return at<5>().valid(); }
+  int32_t minor() const { return at<5>().as_int32(); }
+  bool has_sequence() const { return at<6>().valid(); }
+  uint32_t sequence() const { return at<6>().as_uint32(); }
+  bool has_timecode_flags() const { return at<7>().valid(); }
+  uint32_t timecode_flags() const { return at<7>().as_uint32(); }
+  bool has_timecode_frames() const { return at<8>().valid(); }
+  uint32_t timecode_frames() const { return at<8>().as_uint32(); }
+  bool has_timecode_hours() const { return at<9>().valid(); }
+  uint32_t timecode_hours() const { return at<9>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<10>().valid(); }
+  uint32_t timecode_minutes() const { return at<10>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<11>().valid(); }
+  uint32_t timecode_seconds() const { return at<11>().as_uint32(); }
+  bool has_timecode_type() const { return at<12>().valid(); }
+  uint32_t timecode_type() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<13>().valid(); }
+  uint32_t timecode_userbits0() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<14>().valid(); }
+  uint32_t timecode_userbits1() const { return at<14>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<15>().valid(); }
+  uint32_t timecode_userbits2() const { return at<15>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<16>().valid(); }
+  uint32_t timecode_userbits3() const { return at<16>().as_uint32(); }
+  bool has_timestamp() const { return at<17>().valid(); }
+  int64_t timestamp() const { return at<17>().as_int64(); }
+  bool has_type() const { return at<18>().valid(); }
+  uint32_t type() const { return at<18>().as_uint32(); }
+};
+
+class V4l2QbufFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = V4l2QbufFtraceEvent_Decoder;
+  enum : int32_t {
+    kBytesusedFieldNumber = 1,
+    kFieldFieldNumber = 2,
+    kFlagsFieldNumber = 3,
+    kIndexFieldNumber = 4,
+    kMinorFieldNumber = 5,
+    kSequenceFieldNumber = 6,
+    kTimecodeFlagsFieldNumber = 7,
+    kTimecodeFramesFieldNumber = 8,
+    kTimecodeHoursFieldNumber = 9,
+    kTimecodeMinutesFieldNumber = 10,
+    kTimecodeSecondsFieldNumber = 11,
+    kTimecodeTypeFieldNumber = 12,
+    kTimecodeUserbits0FieldNumber = 13,
+    kTimecodeUserbits1FieldNumber = 14,
+    kTimecodeUserbits2FieldNumber = 15,
+    kTimecodeUserbits3FieldNumber = 16,
+    kTimestampFieldNumber = 17,
+    kTypeFieldNumber = 18,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.V4l2QbufFtraceEvent"; }
+
+
+  using FieldMetadata_Bytesused =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Bytesused kBytesused() { return {}; }
+  void set_bytesused(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Bytesused::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Index =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Index kIndex() { return {}; }
+  void set_index(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Index::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      16,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      17,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Type =
+    ::protozero::proto_utils::FieldMetadata<
+      18,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Type kType() { return {}; }
+  void set_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Type::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+} // Namespace.
+} // Namespace.
+} // Namespace.
+#endif  // Include guard.
 // gen_amalgamated begin header: gen/protos/perfetto/trace/ftrace/vmscan.pbzero.h
 // Autogenerated by the ProtoZero compiler plugin. DO NOT EDIT.
 
@@ -119406,7 +123033,8 @@
 
 namespace perfetto_pbzero_enum_GpuLog {
 enum Severity : int32_t;
-}  // namespace perfetto_pbzero_enum_GpuLog 
+}  // namespace perfetto_pbzero_enum_GpuLog
+using GpuLog_Severity = perfetto_pbzero_enum_GpuLog::Severity;
 
 namespace perfetto_pbzero_enum_GpuLog {
 enum Severity : int32_t {
@@ -119601,10 +123229,12 @@
 class GpuRenderStageEvent_Specifications_Description;
 namespace perfetto_pbzero_enum_InternedGpuRenderStageSpecification {
 enum RenderStageCategory : int32_t;
-}  // namespace perfetto_pbzero_enum_InternedGpuRenderStageSpecification 
+}  // namespace perfetto_pbzero_enum_InternedGpuRenderStageSpecification
+using InternedGpuRenderStageSpecification_RenderStageCategory = perfetto_pbzero_enum_InternedGpuRenderStageSpecification::RenderStageCategory;
 namespace perfetto_pbzero_enum_InternedGraphicsContext {
 enum Api : int32_t;
-}  // namespace perfetto_pbzero_enum_InternedGraphicsContext 
+}  // namespace perfetto_pbzero_enum_InternedGraphicsContext
+using InternedGraphicsContext_Api = perfetto_pbzero_enum_InternedGraphicsContext::Api;
 
 namespace perfetto_pbzero_enum_InternedGpuRenderStageSpecification {
 enum RenderStageCategory : int32_t {
@@ -121149,13 +124779,16 @@
 class VulkanMemoryEventAnnotation;
 namespace perfetto_pbzero_enum_VulkanMemoryEvent {
 enum AllocationScope : int32_t;
-}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent 
+}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent
+using VulkanMemoryEvent_AllocationScope = perfetto_pbzero_enum_VulkanMemoryEvent::AllocationScope;
 namespace perfetto_pbzero_enum_VulkanMemoryEvent {
 enum Operation : int32_t;
-}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent 
+}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent
+using VulkanMemoryEvent_Operation = perfetto_pbzero_enum_VulkanMemoryEvent::Operation;
 namespace perfetto_pbzero_enum_VulkanMemoryEvent {
 enum Source : int32_t;
-}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent 
+}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent
+using VulkanMemoryEvent_Source = perfetto_pbzero_enum_VulkanMemoryEvent::Source;
 
 namespace perfetto_pbzero_enum_VulkanMemoryEvent {
 enum Source : int32_t {
@@ -122563,10 +126196,12 @@
 class InternedString;
 namespace perfetto_pbzero_enum_HeapGraphRoot {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_HeapGraphRoot 
+}  // namespace perfetto_pbzero_enum_HeapGraphRoot
+using HeapGraphRoot_Type = perfetto_pbzero_enum_HeapGraphRoot::Type;
 namespace perfetto_pbzero_enum_HeapGraphType {
 enum Kind : int32_t;
-}  // namespace perfetto_pbzero_enum_HeapGraphType 
+}  // namespace perfetto_pbzero_enum_HeapGraphType
+using HeapGraphType_Kind = perfetto_pbzero_enum_HeapGraphType::Kind;
 
 namespace perfetto_pbzero_enum_HeapGraphType {
 enum Kind : int32_t {
@@ -124505,19 +128140,24 @@
 class ProfilePacket_ProcessStats;
 namespace perfetto_pbzero_enum_PerfSample_ProducerEvent {
 enum DataSourceStopReason : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfSample_ProducerEvent 
+}  // namespace perfetto_pbzero_enum_PerfSample_ProducerEvent
+using PerfSample_ProducerEvent_DataSourceStopReason = perfetto_pbzero_enum_PerfSample_ProducerEvent::DataSourceStopReason;
 namespace perfetto_pbzero_enum_PerfSample {
 enum SampleSkipReason : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfSample 
+}  // namespace perfetto_pbzero_enum_PerfSample
+using PerfSample_SampleSkipReason = perfetto_pbzero_enum_PerfSample::SampleSkipReason;
 namespace perfetto_pbzero_enum_ProfilePacket_ProcessHeapSamples {
 enum ClientError : int32_t;
-}  // namespace perfetto_pbzero_enum_ProfilePacket_ProcessHeapSamples 
+}  // namespace perfetto_pbzero_enum_ProfilePacket_ProcessHeapSamples
+using ProfilePacket_ProcessHeapSamples_ClientError = perfetto_pbzero_enum_ProfilePacket_ProcessHeapSamples::ClientError;
 namespace perfetto_pbzero_enum_Profiling {
 enum CpuMode : int32_t;
-}  // namespace perfetto_pbzero_enum_Profiling 
+}  // namespace perfetto_pbzero_enum_Profiling
+using Profiling_CpuMode = perfetto_pbzero_enum_Profiling::CpuMode;
 namespace perfetto_pbzero_enum_Profiling {
 enum StackUnwindError : int32_t;
-}  // namespace perfetto_pbzero_enum_Profiling 
+}  // namespace perfetto_pbzero_enum_Profiling
+using Profiling_StackUnwindError = perfetto_pbzero_enum_Profiling::StackUnwindError;
 
 namespace perfetto_pbzero_enum_PerfSample {
 enum SampleSkipReason : int32_t {
@@ -127351,7 +130991,8 @@
 
 namespace perfetto_pbzero_enum_ChromeApplicationStateInfo {
 enum ChromeApplicationState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeApplicationStateInfo 
+}  // namespace perfetto_pbzero_enum_ChromeApplicationStateInfo
+using ChromeApplicationStateInfo_ChromeApplicationState = perfetto_pbzero_enum_ChromeApplicationStateInfo::ChromeApplicationState;
 
 namespace perfetto_pbzero_enum_ChromeApplicationStateInfo {
 enum ChromeApplicationState : int32_t {
@@ -127479,32 +131120,41 @@
 class SourceLocation;
 namespace perfetto_pbzero_enum_BeginFrameArgs {
 enum BeginFrameArgsType : int32_t;
-}  // namespace perfetto_pbzero_enum_BeginFrameArgs 
+}  // namespace perfetto_pbzero_enum_BeginFrameArgs
+using BeginFrameArgs_BeginFrameArgsType = perfetto_pbzero_enum_BeginFrameArgs::BeginFrameArgsType;
 namespace perfetto_pbzero_enum_BeginImplFrameArgs {
 enum State : int32_t;
-}  // namespace perfetto_pbzero_enum_BeginImplFrameArgs 
+}  // namespace perfetto_pbzero_enum_BeginImplFrameArgs
+using BeginImplFrameArgs_State = perfetto_pbzero_enum_BeginImplFrameArgs::State;
 enum ChromeCompositorSchedulerAction : int32_t;
 namespace perfetto_pbzero_enum_ChromeCompositorSchedulerState {
 enum BeginImplFrameDeadlineMode : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorSchedulerState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorSchedulerState
+using ChromeCompositorSchedulerState_BeginImplFrameDeadlineMode = perfetto_pbzero_enum_ChromeCompositorSchedulerState::BeginImplFrameDeadlineMode;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState {
 enum BeginImplFrameState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState
+using ChromeCompositorStateMachine_MajorState_BeginImplFrameState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState::BeginImplFrameState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState {
 enum BeginMainFrameState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState
+using ChromeCompositorStateMachine_MajorState_BeginMainFrameState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState::BeginMainFrameState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState {
 enum ForcedRedrawOnTimeoutState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState
+using ChromeCompositorStateMachine_MajorState_ForcedRedrawOnTimeoutState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState::ForcedRedrawOnTimeoutState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState {
 enum LayerTreeFrameSinkState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState
+using ChromeCompositorStateMachine_MajorState_LayerTreeFrameSinkState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState::LayerTreeFrameSinkState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState {
 enum ScrollHandlerState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState
+using ChromeCompositorStateMachine_MinorState_ScrollHandlerState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState::ScrollHandlerState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState {
 enum TreePriority : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState
+using ChromeCompositorStateMachine_MinorState_TreePriority = perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState::TreePriority;
 
 enum ChromeCompositorSchedulerAction : int32_t {
   CC_SCHEDULER_ACTION_UNSPECIFIED = 0,
@@ -131107,16 +134757,20 @@
 
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum FrameDropReason : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeFrameReporter 
+}  // namespace perfetto_pbzero_enum_ChromeFrameReporter
+using ChromeFrameReporter_FrameDropReason = perfetto_pbzero_enum_ChromeFrameReporter::FrameDropReason;
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum FrameType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeFrameReporter 
+}  // namespace perfetto_pbzero_enum_ChromeFrameReporter
+using ChromeFrameReporter_FrameType = perfetto_pbzero_enum_ChromeFrameReporter::FrameType;
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum ScrollState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeFrameReporter 
+}  // namespace perfetto_pbzero_enum_ChromeFrameReporter
+using ChromeFrameReporter_ScrollState = perfetto_pbzero_enum_ChromeFrameReporter::ScrollState;
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum State : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeFrameReporter 
+}  // namespace perfetto_pbzero_enum_ChromeFrameReporter
+using ChromeFrameReporter_State = perfetto_pbzero_enum_ChromeFrameReporter::State;
 
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum State : int32_t {
@@ -132026,10 +135680,12 @@
 class ChromeLatencyInfo_ComponentInfo;
 namespace perfetto_pbzero_enum_ChromeLatencyInfo {
 enum LatencyComponentType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeLatencyInfo 
+}  // namespace perfetto_pbzero_enum_ChromeLatencyInfo
+using ChromeLatencyInfo_LatencyComponentType = perfetto_pbzero_enum_ChromeLatencyInfo::LatencyComponentType;
 namespace perfetto_pbzero_enum_ChromeLatencyInfo {
 enum Step : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeLatencyInfo 
+}  // namespace perfetto_pbzero_enum_ChromeLatencyInfo
+using ChromeLatencyInfo_Step = perfetto_pbzero_enum_ChromeLatencyInfo::Step;
 
 namespace perfetto_pbzero_enum_ChromeLatencyInfo {
 enum Step : int32_t {
@@ -132516,7 +136172,8 @@
 
 namespace perfetto_pbzero_enum_ChromeLegacyIpc {
 enum MessageClass : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeLegacyIpc 
+}  // namespace perfetto_pbzero_enum_ChromeLegacyIpc
+using ChromeLegacyIpc_MessageClass = perfetto_pbzero_enum_ChromeLegacyIpc::MessageClass;
 
 namespace perfetto_pbzero_enum_ChromeLegacyIpc {
 enum MessageClass : int32_t {
@@ -133087,7 +136744,8 @@
 
 namespace perfetto_pbzero_enum_ChromeProcessDescriptor {
 enum ProcessType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeProcessDescriptor 
+}  // namespace perfetto_pbzero_enum_ChromeProcessDescriptor
+using ChromeProcessDescriptor_ProcessType = perfetto_pbzero_enum_ChromeProcessDescriptor::ProcessType;
 
 namespace perfetto_pbzero_enum_ChromeProcessDescriptor {
 enum ProcessType : int32_t {
@@ -133661,7 +137319,8 @@
 
 namespace perfetto_pbzero_enum_ChromeThreadDescriptor {
 enum ThreadType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeThreadDescriptor 
+}  // namespace perfetto_pbzero_enum_ChromeThreadDescriptor
+using ChromeThreadDescriptor_ThreadType = perfetto_pbzero_enum_ChromeThreadDescriptor::ThreadType;
 
 namespace perfetto_pbzero_enum_ChromeThreadDescriptor {
 enum ThreadType : int32_t {
@@ -134228,10 +137887,12 @@
 
 namespace perfetto_pbzero_enum_CounterDescriptor {
 enum BuiltinCounterType : int32_t;
-}  // namespace perfetto_pbzero_enum_CounterDescriptor 
+}  // namespace perfetto_pbzero_enum_CounterDescriptor
+using CounterDescriptor_BuiltinCounterType = perfetto_pbzero_enum_CounterDescriptor::BuiltinCounterType;
 namespace perfetto_pbzero_enum_CounterDescriptor {
 enum Unit : int32_t;
-}  // namespace perfetto_pbzero_enum_CounterDescriptor 
+}  // namespace perfetto_pbzero_enum_CounterDescriptor
+using CounterDescriptor_Unit = perfetto_pbzero_enum_CounterDescriptor::Unit;
 
 namespace perfetto_pbzero_enum_CounterDescriptor {
 enum BuiltinCounterType : int32_t {
@@ -134535,7 +138196,8 @@
 class DebugAnnotation_NestedValue;
 namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue {
 enum NestedType : int32_t;
-}  // namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue 
+}  // namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue
+using DebugAnnotation_NestedValue_NestedType = perfetto_pbzero_enum_DebugAnnotation_NestedValue::NestedType;
 
 namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue {
 enum NestedType : int32_t {
@@ -135628,7 +139290,8 @@
 
 namespace perfetto_pbzero_enum_ProcessDescriptor {
 enum ChromeProcessType : int32_t;
-}  // namespace perfetto_pbzero_enum_ProcessDescriptor 
+}  // namespace perfetto_pbzero_enum_ProcessDescriptor
+using ProcessDescriptor_ChromeProcessType = perfetto_pbzero_enum_ProcessDescriptor::ChromeProcessType;
 
 namespace perfetto_pbzero_enum_ProcessDescriptor {
 enum ChromeProcessType : int32_t {
@@ -136312,7 +139975,8 @@
 
 namespace perfetto_pbzero_enum_ThreadDescriptor {
 enum ChromeThreadType : int32_t;
-}  // namespace perfetto_pbzero_enum_ThreadDescriptor 
+}  // namespace perfetto_pbzero_enum_ThreadDescriptor
+using ThreadDescriptor_ChromeThreadType = perfetto_pbzero_enum_ThreadDescriptor::ChromeThreadType;
 
 namespace perfetto_pbzero_enum_ThreadDescriptor {
 enum ChromeThreadType : int32_t {
@@ -136950,13 +140614,16 @@
 class TrackEvent_LegacyEvent;
 namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent {
 enum FlowDirection : int32_t;
-}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent 
+}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent
+using TrackEvent_LegacyEvent_FlowDirection = perfetto_pbzero_enum_TrackEvent_LegacyEvent::FlowDirection;
 namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent {
 enum InstantEventScope : int32_t;
-}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent 
+}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent
+using TrackEvent_LegacyEvent_InstantEventScope = perfetto_pbzero_enum_TrackEvent_LegacyEvent::InstantEventScope;
 namespace perfetto_pbzero_enum_TrackEvent {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_TrackEvent 
+}  // namespace perfetto_pbzero_enum_TrackEvent
+using TrackEvent_Type = perfetto_pbzero_enum_TrackEvent::Type;
 
 namespace perfetto_pbzero_enum_TrackEvent {
 enum Type : int32_t {
@@ -140292,7 +143959,7 @@
 namespace pbzero {
 
 
-class BatteryCounters_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/4, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+class BatteryCounters_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/5, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
  public:
   BatteryCounters_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit BatteryCounters_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -140305,6 +143972,8 @@
   int64_t current_ua() const { return at<3>().as_int64(); }
   bool has_current_avg_ua() const { return at<4>().valid(); }
   int64_t current_avg_ua() const { return at<4>().as_int64(); }
+  bool has_name() const { return at<5>().valid(); }
+  ::protozero::ConstChars name() const { return at<5>().as_string(); }
 };
 
 class BatteryCounters : public ::protozero::Message {
@@ -140315,6 +143984,7 @@
     kCapacityPercentFieldNumber = 2,
     kCurrentUaFieldNumber = 3,
     kCurrentAvgUaFieldNumber = 4,
+    kNameFieldNumber = 5,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.BatteryCounters"; }
 
@@ -140418,6 +144088,37 @@
       ::protozero::proto_utils::ProtoSchemaType::kInt64>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_Name =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kString,
+      std::string,
+      BatteryCounters>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Name kName() { return {}; }
+  void set_name(const char* data, size_t size) {
+    AppendBytes(FieldMetadata_Name::kFieldId, data, size);
+  }
+  void set_name(::protozero::ConstChars chars) {
+    AppendBytes(FieldMetadata_Name::kFieldId, chars.data, chars.size);
+  }
+  void set_name(std::string value) {
+    static constexpr uint32_t field_id = FieldMetadata_Name::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kString>
+        ::Append(*this, field_id, value);
+  }
 };
 
 } // Namespace.
@@ -141838,6 +145539,7 @@
 namespace protos {
 namespace pbzero {
 
+class SysStats_BuddyInfo;
 class SysStats_CpuTimes;
 class SysStats_DevfreqValue;
 class SysStats_InterruptCount;
@@ -141846,7 +145548,7 @@
 enum MeminfoCounters : int32_t;
 enum VmstatCounters : int32_t;
 
-class SysStats_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/11, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
+class SysStats_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/12, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
  public:
   SysStats_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit SysStats_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -141873,6 +145575,8 @@
   ::protozero::RepeatedFieldIterator<::protozero::ConstBytes> devfreq() const { return GetRepeated<::protozero::ConstBytes>(10); }
   bool has_cpufreq_khz() const { return at<11>().valid(); }
   ::protozero::RepeatedFieldIterator<uint32_t> cpufreq_khz() const { return GetRepeated<uint32_t>(11); }
+  bool has_buddy_info() const { return at<12>().valid(); }
+  ::protozero::RepeatedFieldIterator<::protozero::ConstBytes> buddy_info() const { return GetRepeated<::protozero::ConstBytes>(12); }
 };
 
 class SysStats : public ::protozero::Message {
@@ -141890,6 +145594,7 @@
     kCollectionEndTimestampFieldNumber = 9,
     kDevfreqFieldNumber = 10,
     kCpufreqKhzFieldNumber = 11,
+    kBuddyInfoFieldNumber = 12,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.SysStats"; }
 
@@ -141898,6 +145603,7 @@
   using CpuTimes = ::perfetto::protos::pbzero::SysStats_CpuTimes;
   using InterruptCount = ::perfetto::protos::pbzero::SysStats_InterruptCount;
   using DevfreqValue = ::perfetto::protos::pbzero::SysStats_DevfreqValue;
+  using BuddyInfo = ::perfetto::protos::pbzero::SysStats_BuddyInfo;
 
   using FieldMetadata_Meminfo =
     ::protozero::proto_utils::FieldMetadata<
@@ -142149,6 +145855,139 @@
       ::protozero::proto_utils::ProtoSchemaType::kUint32>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_BuddyInfo =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kRepeatedNotPacked,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      SysStats_BuddyInfo,
+      SysStats>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_BuddyInfo kBuddyInfo() { return {}; }
+  template <typename T = SysStats_BuddyInfo> T* add_buddy_info() {
+    return BeginNestedMessage<T>(12);
+  }
+
+};
+
+class SysStats_BuddyInfo_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/3, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
+ public:
+  SysStats_BuddyInfo_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit SysStats_BuddyInfo_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit SysStats_BuddyInfo_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_node() const { return at<1>().valid(); }
+  ::protozero::ConstChars node() const { return at<1>().as_string(); }
+  bool has_zone() const { return at<2>().valid(); }
+  ::protozero::ConstChars zone() const { return at<2>().as_string(); }
+  bool has_order_pages() const { return at<3>().valid(); }
+  ::protozero::RepeatedFieldIterator<uint32_t> order_pages() const { return GetRepeated<uint32_t>(3); }
+};
+
+class SysStats_BuddyInfo : public ::protozero::Message {
+ public:
+  using Decoder = SysStats_BuddyInfo_Decoder;
+  enum : int32_t {
+    kNodeFieldNumber = 1,
+    kZoneFieldNumber = 2,
+    kOrderPagesFieldNumber = 3,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.SysStats.BuddyInfo"; }
+
+
+  using FieldMetadata_Node =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kString,
+      std::string,
+      SysStats_BuddyInfo>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Node kNode() { return {}; }
+  void set_node(const char* data, size_t size) {
+    AppendBytes(FieldMetadata_Node::kFieldId, data, size);
+  }
+  void set_node(::protozero::ConstChars chars) {
+    AppendBytes(FieldMetadata_Node::kFieldId, chars.data, chars.size);
+  }
+  void set_node(std::string value) {
+    static constexpr uint32_t field_id = FieldMetadata_Node::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kString>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Zone =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kString,
+      std::string,
+      SysStats_BuddyInfo>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Zone kZone() { return {}; }
+  void set_zone(const char* data, size_t size) {
+    AppendBytes(FieldMetadata_Zone::kFieldId, data, size);
+  }
+  void set_zone(::protozero::ConstChars chars) {
+    AppendBytes(FieldMetadata_Zone::kFieldId, chars.data, chars.size);
+  }
+  void set_zone(std::string value) {
+    static constexpr uint32_t field_id = FieldMetadata_Zone::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kString>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_OrderPages =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kRepeatedNotPacked,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      SysStats_BuddyInfo>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_OrderPages kOrderPages() { return {}; }
+  void add_order_pages(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_OrderPages::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
 };
 
 class SysStats_DevfreqValue_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/2, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
@@ -144538,6 +148377,8 @@
   ::protozero::ConstBytes trace_packet_defaults() const { return at<59>().as_bytes(); }
   bool has_previous_packet_dropped() const { return at<42>().valid(); }
   bool previous_packet_dropped() const { return at<42>().as_bool(); }
+  bool has_first_packet_on_sequence() const { return at<87>().valid(); }
+  bool first_packet_on_sequence() const { return at<87>().as_bool(); }
 };
 
 class TracePacket : public ::protozero::Message {
@@ -144611,6 +148452,7 @@
     kIncrementalStateClearedFieldNumber = 41,
     kTracePacketDefaultsFieldNumber = 59,
     kPreviousPacketDroppedFieldNumber = 42,
+    kFirstPacketOnSequenceFieldNumber = 87,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.TracePacket"; }
 
@@ -146081,6 +149923,31 @@
       ::protozero::proto_utils::ProtoSchemaType::kBool>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_FirstPacketOnSequence =
+    ::protozero::proto_utils::FieldMetadata<
+      87,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kBool,
+      bool,
+      TracePacket>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_FirstPacketOnSequence kFirstPacketOnSequence() { return {}; }
+  void set_first_packet_on_sequence(bool value) {
+    static constexpr uint32_t field_id = FieldMetadata_FirstPacketOnSequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kBool>
+        ::Append(*this, field_id, value);
+  }
 };
 
 } // Namespace.
@@ -146242,10 +150109,12 @@
 class MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry;
 namespace perfetto_pbzero_enum_MemoryTrackerSnapshot {
 enum LevelOfDetail : int32_t;
-}  // namespace perfetto_pbzero_enum_MemoryTrackerSnapshot 
+}  // namespace perfetto_pbzero_enum_MemoryTrackerSnapshot
+using MemoryTrackerSnapshot_LevelOfDetail = perfetto_pbzero_enum_MemoryTrackerSnapshot::LevelOfDetail;
 namespace perfetto_pbzero_enum_MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry {
 enum Units : int32_t;
-}  // namespace perfetto_pbzero_enum_MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry 
+}  // namespace perfetto_pbzero_enum_MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry
+using MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry_Units = perfetto_pbzero_enum_MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry::Units;
 
 namespace perfetto_pbzero_enum_MemoryTrackerSnapshot {
 enum LevelOfDetail : int32_t {
@@ -152304,6 +156173,7 @@
     kInitializeKsymsSynchronouslyForTestingFieldNumber = 14,
     kThrottleRssStatFieldNumber = 15,
     kDisableGenericEventsFieldNumber = 16,
+    kSyscallEventsFieldNumber = 18,
   };
 
   FtraceConfig();
@@ -152373,6 +156243,13 @@
   bool disable_generic_events() const { return disable_generic_events_; }
   void set_disable_generic_events(bool value) { disable_generic_events_ = value; _has_field_.set(16); }
 
+  const std::vector<std::string>& syscall_events() const { return syscall_events_; }
+  std::vector<std::string>* mutable_syscall_events() { return &syscall_events_; }
+  int syscall_events_size() const { return static_cast<int>(syscall_events_.size()); }
+  void clear_syscall_events() { syscall_events_.clear(); }
+  void add_syscall_events(std::string value) { syscall_events_.emplace_back(value); }
+  std::string* add_syscall_events() { syscall_events_.emplace_back(); return &syscall_events_.back(); }
+
  private:
   std::vector<std::string> ftrace_events_;
   std::vector<std::string> atrace_categories_;
@@ -152385,12 +156262,13 @@
   bool initialize_ksyms_synchronously_for_testing_{};
   bool throttle_rss_stat_{};
   bool disable_generic_events_{};
+  std::vector<std::string> syscall_events_;
 
   // Allows to preserve unknown protobuf fields for compatibility
   // with future versions of .proto files.
   std::string unknown_fields_;
 
-  std::bitset<18> _has_field_{};
+  std::bitset<19> _has_field_{};
 };
 
 
@@ -154618,6 +158496,7 @@
     kStatCountersFieldNumber = 6,
     kDevfreqPeriodMsFieldNumber = 7,
     kCpufreqPeriodMsFieldNumber = 8,
+    kBuddyinfoPeriodMsFieldNumber = 9,
   };
 
   SysStatsConfig();
@@ -154675,6 +158554,10 @@
   uint32_t cpufreq_period_ms() const { return cpufreq_period_ms_; }
   void set_cpufreq_period_ms(uint32_t value) { cpufreq_period_ms_ = value; _has_field_.set(8); }
 
+  bool has_buddyinfo_period_ms() const { return _has_field_[9]; }
+  uint32_t buddyinfo_period_ms() const { return buddyinfo_period_ms_; }
+  void set_buddyinfo_period_ms(uint32_t value) { buddyinfo_period_ms_ = value; _has_field_.set(9); }
+
  private:
   uint32_t meminfo_period_ms_{};
   std::vector<MeminfoCounters> meminfo_counters_;
@@ -154684,12 +158567,13 @@
   std::vector<SysStatsConfig_StatCounters> stat_counters_;
   uint32_t devfreq_period_ms_{};
   uint32_t cpufreq_period_ms_{};
+  uint32_t buddyinfo_period_ms_{};
 
   // Allows to preserve unknown protobuf fields for compatibility
   // with future versions of .proto files.
   std::string unknown_fields_;
 
-  std::bitset<9> _has_field_{};
+  std::bitset<10> _has_field_{};
 };
 
 }  // namespace perfetto
@@ -154697,6 +158581,70 @@
 }  // namespace gen
 
 #endif  // PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYS_STATS_SYS_STATS_CONFIG_PROTO_CPP_H_
+// gen_amalgamated begin header: gen/protos/perfetto/config/system_info/system_info.gen.h
+// DO NOT EDIT. Autogenerated by Perfetto cppgen_plugin
+#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_CPP_H_
+#define PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_CPP_H_
+
+#include <stdint.h>
+#include <bitset>
+#include <vector>
+#include <string>
+#include <type_traits>
+
+// gen_amalgamated expanded: #include "perfetto/protozero/cpp_message_obj.h"
+// gen_amalgamated expanded: #include "perfetto/protozero/copyable_ptr.h"
+// gen_amalgamated expanded: #include "perfetto/base/export.h"
+
+namespace perfetto {
+namespace protos {
+namespace gen {
+class SystemInfoConfig;
+}  // namespace perfetto
+}  // namespace protos
+}  // namespace gen
+
+namespace protozero {
+class Message;
+}  // namespace protozero
+
+namespace perfetto {
+namespace protos {
+namespace gen {
+
+class PERFETTO_EXPORT_COMPONENT SystemInfoConfig : public ::protozero::CppMessageObj {
+ public:
+  enum FieldNumbers {
+  };
+
+  SystemInfoConfig();
+  ~SystemInfoConfig() override;
+  SystemInfoConfig(SystemInfoConfig&&) noexcept;
+  SystemInfoConfig& operator=(SystemInfoConfig&&);
+  SystemInfoConfig(const SystemInfoConfig&);
+  SystemInfoConfig& operator=(const SystemInfoConfig&);
+  bool operator==(const SystemInfoConfig&) const;
+  bool operator!=(const SystemInfoConfig& other) const { return !(*this == other); }
+
+  bool ParseFromArray(const void*, size_t) override;
+  std::string SerializeAsString() const override;
+  std::vector<uint8_t> SerializeAsArray() const override;
+  void Serialize(::protozero::Message*) const;
+
+ private:
+
+  // Allows to preserve unknown protobuf fields for compatibility
+  // with future versions of .proto files.
+  std::string unknown_fields_;
+
+  std::bitset<2> _has_field_{};
+};
+
+}  // namespace perfetto
+}  // namespace protos
+}  // namespace gen
+
+#endif  // PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_CPP_H_
 // gen_amalgamated begin header: gen/protos/perfetto/config/chrome/chrome_config.gen.h
 // DO NOT EDIT. Autogenerated by Perfetto cppgen_plugin
 #ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_CHROME_CHROME_CONFIG_PROTO_CPP_H_
@@ -154826,6 +158774,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 enum DataSourceConfig_SessionInitiator : int;
 enum ChromeConfig_ClientPriority : int;
 }  // namespace perfetto
@@ -154876,6 +158825,7 @@
     kAndroidPolledStateConfigFieldNumber = 114,
     kAndroidSystemPropertyConfigFieldNumber = 118,
     kStatsdTracingConfigFieldNumber = 117,
+    kSystemInfoConfigFieldNumber = 119,
     kChromeConfigFieldNumber = 101,
     kInterceptorConfigFieldNumber = 115,
     kLegacyConfigFieldNumber = 1000,
@@ -154975,6 +158925,10 @@
   const std::string& statsd_tracing_config_raw() const { return statsd_tracing_config_; }
   void set_statsd_tracing_config_raw(const std::string& raw) { statsd_tracing_config_ = raw; _has_field_.set(117); }
 
+  bool has_system_info_config() const { return _has_field_[119]; }
+  const SystemInfoConfig& system_info_config() const { return *system_info_config_; }
+  SystemInfoConfig* mutable_system_info_config() { _has_field_.set(119); return system_info_config_.get(); }
+
   bool has_chrome_config() const { return _has_field_[101]; }
   const ChromeConfig& chrome_config() const { return *chrome_config_; }
   ChromeConfig* mutable_chrome_config() { _has_field_.set(101); return chrome_config_.get(); }
@@ -155016,6 +158970,7 @@
   std::string android_polled_state_config_;  // [lazy=true]
   std::string android_system_property_config_;  // [lazy=true]
   std::string statsd_tracing_config_;  // [lazy=true]
+  ::protozero::CopyablePtr<SystemInfoConfig> system_info_config_;
   ::protozero::CopyablePtr<ChromeConfig> chrome_config_;
   ::protozero::CopyablePtr<InterceptorConfig> interceptor_config_;
   std::string legacy_config_{};
@@ -155146,6 +159101,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class TraceConfig_BufferConfig;
 enum TraceConfig_LockdownModeOperation : int;
 enum TraceConfig_CompressionType : int;
@@ -155578,6 +159534,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class TraceConfig_BufferConfig;
 enum TraceConfig_LockdownModeOperation : int;
 enum TraceConfig_CompressionType : int;
@@ -156589,6 +160546,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class TraceConfig_BufferConfig;
 class AttachRequest;
 class DetachResponse;
@@ -157636,6 +161594,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class GetAsyncCommandResponse_SetupDataSource;
 class GetAsyncCommandResponse_SetupTracing;
 class GetAsyncCommandRequest;
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/base/build_configs/android_tree/perfetto_build_flags.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/base/build_configs/android_tree/perfetto_build_flags.h
index 502e9bf..85f8ad2 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/base/build_configs/android_tree/perfetto_build_flags.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/base/build_configs/android_tree/perfetto_build_flags.h
@@ -34,7 +34,7 @@
 #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_FORCE_DCHECK_OFF() (0)
 #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_VERBOSE_LOGS() (1)
 #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_VERSION_GEN() (1)
-#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_PERCENTILE() (0)
+#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_PERCENTILE() (1)
 #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_LINENOISE() (0)
 #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_HTTPD() (1)
 #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_TP_JSON() (0)
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/base/container_annotations.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/base/container_annotations.h
index 183e6e0..5cc743a 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/base/container_annotations.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/base/container_annotations.h
@@ -23,6 +23,8 @@
 #if defined(ADDRESS_SANITIZER) && !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \
     !defined(ADDRESS_SANITIZER_WITHOUT_INSTRUMENTATION)
 
+#include <sanitizer/common_interface_defs.h>
+
 #define ANNOTATE_NEW_BUFFER(buffer, capacity, new_size)                      \
   if (buffer) {                                                              \
     __sanitizer_annotate_contiguous_container(buffer, (buffer) + (capacity), \
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/base/string_view.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/base/string_view.h
index 98e61cf..89c6daa 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/base/string_view.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/base/string_view.h
@@ -120,7 +120,7 @@
 #endif
   }
 
-  bool StartsWith(const StringView& other) {
+  bool StartsWith(const StringView& other) const {
     if (other.size() == 0)
       return true;
     if (size() == 0)
@@ -134,6 +134,21 @@
     return true;
   }
 
+  bool EndsWith(const StringView& other) const {
+    if (other.size() == 0)
+      return true;
+    if (size() == 0)
+      return false;
+    if (other.size() > size())
+      return false;
+    const size_t off = size() - other.size();
+    for (size_t i = 0; i < other.size(); ++i) {
+      if (at(off + i) != other.at(i))
+        return false;
+    }
+    return true;
+  }
+
   std::string ToStdString() const {
     return size_ == 0 ? "" : std::string(data_, size_);
   }
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/tracing/core/producer.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/tracing/core/producer.h
index d4e8850..d1ca85d 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/tracing/core/producer.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/ext/tracing/core/producer.h
@@ -63,6 +63,10 @@
   // created. Can be used for any setup required before tracing begins.
   virtual void OnTracingSetup() = 0;
 
+  // Called by muxer once StartupTracing is started. It will be called before
+  // SetupStartupTracingBlocking is returned.
+  virtual void OnStartupTracingSetup() {}
+
   // The lifecycle methods below are always called in the following sequence:
   // SetupDataSource  -> StartDataSource -> StopDataSource.
   // Or, in the edge case where a trace is aborted immediately:
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/trace_processor/basic_types.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/trace_processor/basic_types.h
index 58c261f..1ca649a 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/trace_processor/basic_types.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/trace_processor/basic_types.h
@@ -118,6 +118,15 @@
   // Any built-in metric proto or sql files matching these paths are skipped
   // during trace processor metric initialization.
   std::vector<std::string> skip_builtin_metric_paths;
+
+  // When set to true, the trace processor analyzes trace proto content, and
+  // exports the field path -> total size mapping into an SQL table.
+  //
+  // The analysis feature is hidden behind the flag so that the users who don't
+  // need this feature don't pay the performance costs.
+  //
+  // The flag has no impact on non-proto traces.
+  bool analyze_trace_proto_content = false;
 };
 
 // Represents a dynamically typed value returned by SQL.
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/event_context.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/event_context.h
index 616ac10..e88c89c 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/event_context.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/event_context.h
@@ -51,8 +51,11 @@
   // TODO(eseckler): Remove once Chromium has switched to client lib entirely.
   explicit EventContext(
       protos::pbzero::TrackEvent* event,
-      internal::TrackEventIncrementalState* incremental_state = nullptr)
-      : event_(event), incremental_state_(incremental_state) {}
+      internal::TrackEventIncrementalState* incremental_state = nullptr,
+      bool filter_debug_annotations = false)
+      : event_(event),
+        incremental_state_(incremental_state),
+        filter_debug_annotations_(filter_debug_annotations) {}
 
   ~EventContext();
 
@@ -60,6 +63,22 @@
     return incremental_state_;
   }
 
+  // Disclaimer: Experimental method, subject to change.
+  // Exposed publicly to emit some TrackEvent fields in Chromium only in local
+  // tracing. Long-term, we really shouldn't be (ab)using the
+  // filter_debug_annotation setting for this.
+  //
+  // TODO(kraskevich): Come up with a more precise name once we have more than
+  // one usecase.
+  bool ShouldFilterDebugAnnotations() const {
+    if (tls_state_) {
+      return tls_state_->filter_debug_annotations;
+    }
+    // In Chromium tls_state_ is nullptr, so we need to get this information
+    // from a separate field.
+    return filter_debug_annotations_;
+  }
+
   // Get a TrackEvent message to write typed arguments to.
   //
   // event() is a template method to allow callers to specify a subclass of
@@ -91,11 +110,11 @@
   // values directly to TRACE_EVENT (i.e. TRACE_EVENT(..., "arg", value, ...);)
   // but in rare cases (e.g. when an argument should be written conditionally)
   // EventContext::AddDebugAnnotation provides an explicit equivalent.
-  template <typename T>
-  void AddDebugAnnotation(const char* name, T&& value) {
+  template <typename EventNameType, typename T>
+  void AddDebugAnnotation(EventNameType&& name, T&& value) {
     if (tls_state_ && tls_state_->filter_debug_annotations)
       return;
-    auto annotation = AddDebugAnnotation(name);
+    auto annotation = AddDebugAnnotation(std::forward<EventNameType>(name));
     WriteIntoTracedValue(internal::CreateTracedValueFromProto(annotation, this),
                          std::forward<T>(value));
   }
@@ -114,6 +133,8 @@
   EventContext(const EventContext&) = delete;
 
   protos::pbzero::DebugAnnotation* AddDebugAnnotation(const char* name);
+  protos::pbzero::DebugAnnotation* AddDebugAnnotation(
+      ::perfetto::DynamicString name);
 
   TracePacketHandle trace_packet_;
   protos::pbzero::TrackEvent* event_;
@@ -122,6 +143,10 @@
   // are certain that it cannot be nullptr. Once we switch to client library in
   // chrome, we can make that happen.
   const internal::TrackEventTlsState* tls_state_ = nullptr;
+  // TODO(kraskevich): Come up with a more precise name once we have more than
+  // one usecase.
+  // TODO(kraskevich): Remove once Chromium has fully switched to client lib.
+  const bool filter_debug_annotations_ = false;
 };
 
 }  // namespace perfetto
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/track_event_data_source.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/track_event_data_source.h
index ce2e0f0..3b3444e 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/track_event_data_source.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/track_event_data_source.h
@@ -183,11 +183,11 @@
   // Returns |true| if the observer was successfully added (i.e., the maximum
   // number of observers wasn't exceeded).
   static bool AddSessionObserver(TrackEventSessionObserver* observer) {
-    return TrackEventInternal::AddSessionObserver(observer);
+    return TrackEventInternal::AddSessionObserver(*Registry, observer);
   }
 
   static void RemoveSessionObserver(TrackEventSessionObserver* observer) {
-    TrackEventInternal::RemoveSessionObserver(observer);
+    TrackEventInternal::RemoveSessionObserver(*Registry, observer);
   }
 
   // DataSource implementation.
@@ -199,7 +199,7 @@
   }
 
   void OnStart(const DataSourceBase::StartArgs& args) override {
-    TrackEventInternal::OnStart(args);
+    TrackEventInternal::OnStart(*Registry, args);
   }
 
   void OnStop(const DataSourceBase::StopArgs& args) override {
@@ -208,7 +208,7 @@
 
   void WillClearIncrementalState(
       const DataSourceBase::ClearIncrementalStateArgs& args) override {
-    TrackEventInternal::WillClearIncrementalState(args);
+    TrackEventInternal::WillClearIncrementalState(*Registry, args);
   }
 
   static void Flush() {
@@ -542,8 +542,21 @@
                     return true;
                   });
             }
-            if (!on_current_thread_track)
+            if (type == protos::pbzero::TrackEvent::TYPE_UNSPECIFIED) {
+              // Explicitly clear the track, so that the event is not associated
+              // with the default track, but instead uses the legacy mechanism
+              // based on the phase and pid/tid override.
+              event_ctx.event()->set_track_uuid(0);
+            } else if (!on_current_thread_track) {
+              // We emit these events using TrackDescriptors, and we cannot emit
+              // events on behalf of other processes using the TrackDescriptor
+              // format. Chrome is the only user of events with explicit process
+              // ids and currently only Chrome emits PHASE_MEMORY_DUMP events
+              // with an explicit process id, so we should be fine here.
+              // TODO(mohitms): Get rid of events with explicit process ids
+              // entirely.
               event_ctx.event()->set_track_uuid(track.uuid);
+            }
             WriteTrackEventArgs(std::move(event_ctx),
                                 std::forward<Arguments>(args)...);
           }  // event_ctx
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/track_event_internal.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/track_event_internal.h
index 00aa3f5..085c441 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/track_event_internal.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/track_event_internal.h
@@ -173,16 +173,20 @@
       const TrackEventCategoryRegistry&,
       bool (*register_data_source)(const DataSourceDescriptor&));
 
-  static bool AddSessionObserver(TrackEventSessionObserver*);
-  static void RemoveSessionObserver(TrackEventSessionObserver*);
+  static bool AddSessionObserver(const TrackEventCategoryRegistry&,
+                                 TrackEventSessionObserver*);
+  static void RemoveSessionObserver(const TrackEventCategoryRegistry&,
+                                    TrackEventSessionObserver*);
 
   static void EnableTracing(const TrackEventCategoryRegistry& registry,
                             const protos::gen::TrackEventConfig& config,
                             const DataSourceBase::SetupArgs&);
-  static void OnStart(const DataSourceBase::StartArgs&);
+  static void OnStart(const TrackEventCategoryRegistry&,
+                      const DataSourceBase::StartArgs&);
   static void DisableTracing(const TrackEventCategoryRegistry& registry,
                              const DataSourceBase::StopArgs&);
   static void WillClearIncrementalState(
+      const TrackEventCategoryRegistry&,
       const DataSourceBase::ClearIncrementalStateArgs&);
 
   static bool IsCategoryEnabled(const TrackEventCategoryRegistry& registry,
@@ -219,14 +223,15 @@
 
   // TODO(altimin): Remove this method once Chrome uses
   // EventContext::AddDebugAnnotation directly.
-  template <typename T>
+  template <typename NameType, typename ValueType>
   static void AddDebugAnnotation(perfetto::EventContext* event_ctx,
-                                 const char* name,
-                                 T&& value) {
-    auto annotation = AddDebugAnnotation(event_ctx, name);
+                                 NameType&& name,
+                                 ValueType&& value) {
+    auto annotation =
+        AddDebugAnnotation(event_ctx, std::forward<NameType>(name));
     WriteIntoTracedValue(
         internal::CreateTracedValueFromProto(annotation, event_ctx),
-        std::forward<T>(value));
+        std::forward<ValueType>(value));
   }
 
   // If the given track hasn't been seen by the trace writer yet, write a
@@ -291,10 +296,15 @@
       TraceTimestamp,
       uint32_t seq_flags =
           protos::pbzero::TracePacket::SEQ_NEEDS_INCREMENTAL_STATE);
+
   static protos::pbzero::DebugAnnotation* AddDebugAnnotation(
       perfetto::EventContext*,
       const char* name);
 
+  static protos::pbzero::DebugAnnotation* AddDebugAnnotation(
+      perfetto::EventContext*,
+      perfetto::DynamicString name);
+
   static std::atomic<int> session_count_;
 };
 
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/write_track_event_args.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/write_track_event_args.h
index ba6c4e8..f54c4ab 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/write_track_event_args.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/internal/write_track_event_args.h
@@ -149,6 +149,16 @@
   WriteTrackEventArgs(std::move(event_ctx), std::forward<Args>(args)...);
 }
 
+// Write one debug annotation and recursively write the rest of the arguments.
+template <typename ArgValue, typename... Args>
+PERFETTO_ALWAYS_INLINE void WriteTrackEventArgs(EventContext event_ctx,
+                                                DynamicString arg_name,
+                                                ArgValue&& arg_value,
+                                                Args&&... args) {
+  event_ctx.AddDebugAnnotation(arg_name, std::forward<ArgValue>(arg_value));
+  WriteTrackEventArgs(std::move(event_ctx), std::forward<Args>(args)...);
+}
+
 }  // namespace internal
 }  // namespace perfetto
 
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/platform.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/platform.h
index fde6b11..17328cc 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/platform.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/platform.h
@@ -104,6 +104,10 @@
   // in-process mode.
   virtual std::string GetCurrentProcessName() = 0;
 
+  // Tear down any persistent platform state (e.g., TLS variables). The platform
+  // interface must not be used after calling this function.
+  virtual void Shutdown();
+
  private:
   static base::PlatformProcessId process_id_;
 };
diff --git a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/track_event_legacy.h b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/track_event_legacy.h
index b97961d..6ff7815 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/track_event_legacy.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/perfetto/tracing/track_event_legacy.h
@@ -97,8 +97,6 @@
 static constexpr char TRACE_EVENT_PHASE_MEMORY_DUMP = 'v';
 static constexpr char TRACE_EVENT_PHASE_MARK = 'R';
 static constexpr char TRACE_EVENT_PHASE_CLOCK_SYNC = 'c';
-static constexpr char TRACE_EVENT_PHASE_ENTER_CONTEXT = '(';
-static constexpr char TRACE_EVENT_PHASE_LEAVE_CONTEXT = ')';
 
 // Flags for changing the behavior of TRACE_EVENT_API_ADD_TRACE_EVENT.
 static constexpr uint32_t TRACE_EVENT_FLAG_NONE =
@@ -303,6 +301,16 @@
 namespace perfetto {
 namespace internal {
 
+template <typename T>
+bool IsEqual(T x, T y) {
+  return x == y;
+}
+
+template <typename T, typename U>
+bool IsEqual(T x, U y) {
+  return false;
+}
+
 class PERFETTO_EXPORT_COMPONENT TrackEventLegacy {
  public:
   static constexpr protos::pbzero::TrackEvent::Type PhaseToType(char phase) {
@@ -324,6 +332,7 @@
                                char phase,
                                uint32_t flags,
                                Args&&... args) PERFETTO_NO_INLINE {
+    PERFETTO_DCHECK(!(flags & TRACE_EVENT_FLAG_HAS_PROCESS_ID));
     AddDebugAnnotations(&ctx, std::forward<Args>(args)...);
     if (NeedLegacyFlags(phase, flags)) {
       auto legacy_event = ctx.event()->set_legacy_event();
@@ -351,6 +360,9 @@
     //    trace packet itself and make sure TrackEvent won't write one
     //    internally. This is already done at the call site.
     //
+    PERFETTO_DCHECK(PhaseToType(phase) ==
+                        protos::pbzero::TrackEvent::TYPE_UNSPECIFIED ||
+                    !(flags & TRACE_EVENT_FLAG_HAS_PROCESS_ID));
     flags |= id.id_flags();
     AddDebugAnnotations(&ctx, std::forward<Args>(args)...);
     if (NeedLegacyFlags(phase, flags)) {
@@ -365,6 +377,15 @@
             static_cast<int32_t>(legacy::ConvertThreadId(thread_id).tid);
         legacy_event->set_pid_override(pid_override);
         legacy_event->set_tid_override(-1);
+      } else {
+        // Only synchronous phases are supported for other threads. These phases
+        // are supported in TrackEvent types and receive a track_uuid
+        // association via TrackEventDataSource::TraceForCategoryImpl().
+        PERFETTO_DCHECK(PhaseToType(phase) !=
+                            protos::pbzero::TrackEvent::TYPE_UNSPECIFIED ||
+                        IsEqual(thread_id, TRACE_EVENT_API_CURRENT_THREAD_ID) ||
+                        legacy::ConvertThreadId(thread_id).tid ==
+                            ThreadTrack::Current().tid);
       }
     }
   }
@@ -372,23 +393,16 @@
   // No arguments.
   static void AddDebugAnnotations(EventContext*) {}
 
-  // One argument.
-  template <typename ArgType>
+  // N number of debug arguments.
+  template <typename ArgNameType, typename ArgType, typename... OtherArgs>
   static void AddDebugAnnotations(EventContext* ctx,
-                                  const char* arg_name,
-                                  ArgType&& arg_value) {
-    TrackEventInternal::AddDebugAnnotation(ctx, arg_name, arg_value);
-  }
-
-  // Two arguments.
-  template <typename ArgType, typename ArgType2>
-  static void AddDebugAnnotations(EventContext* ctx,
-                                  const char* arg_name,
+                                  ArgNameType&& arg_name,
                                   ArgType&& arg_value,
-                                  const char* arg_name2,
-                                  ArgType2&& arg_value2) {
-    TrackEventInternal::AddDebugAnnotation(ctx, arg_name, arg_value);
-    TrackEventInternal::AddDebugAnnotation(ctx, arg_name2, arg_value2);
+                                  OtherArgs&&... more_args) {
+    TrackEventInternal::AddDebugAnnotation(ctx,
+                                           std::forward<ArgNameType>(arg_name),
+                                           std::forward<ArgType>(arg_value));
+    AddDebugAnnotations(ctx, std::forward<OtherArgs>(more_args)...);
   }
 
  private:
@@ -470,6 +484,7 @@
                                        thread_id, ...)                     \
   [&]() {                                                                  \
     using ::perfetto::internal::TrackEventInternal;                        \
+    PERFETTO_DCHECK(!(flags & TRACE_EVENT_FLAG_COPY));                     \
     /* First check the scope for instant events. */                        \
     if ((phase) == TRACE_EVENT_PHASE_INSTANT) {                            \
       /* Note: Avoids the need to set LegacyEvent::instant_event_scope. */ \
@@ -621,18 +636,20 @@
   INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name,    \
                            TRACE_EVENT_FLAG_NONE | scope, arg1_name, arg1_val, \
                            arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_INSTANT0(category_group, name, scope)              \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY | scope)
-#define TRACE_EVENT_COPY_INSTANT1(category_group, name, scope, arg1_name,   \
-                                  arg1_val)                                 \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY | scope, arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_INSTANT2(category_group, name, scope, arg1_name,      \
-                                  arg1_val, arg2_name, arg2_val)               \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name,    \
-                           TRACE_EVENT_FLAG_COPY | scope, arg1_name, arg1_val, \
-                           arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_INSTANT0(category_group, name, scope)        \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, \
+                           ::perfetto::DynamicString{name}, scope)
+#define TRACE_EVENT_COPY_INSTANT1(category_group, name, scope, arg1_name, \
+                                  arg1_val)                               \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group,     \
+                           ::perfetto::DynamicString{name}, scope,        \
+                           ::perfetto::DynamicString{arg1_name}, arg1_val)
+#define TRACE_EVENT_COPY_INSTANT2(category_group, name, scope, arg1_name,  \
+                                  arg1_val, arg2_name, arg2_val)           \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group,      \
+                           ::perfetto::DynamicString{name}, scope,         \
+                           ::perfetto::DynamicString{arg1_name}, arg1_val, \
+                           ::perfetto::DynamicString{arg2_name}, arg2_val)
 #define TRACE_EVENT_INSTANT_WITH_FLAGS0(category_group, name, scope_and_flags) \
   INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_INSTANT, category_group, name,    \
                            scope_and_flags)
@@ -674,9 +691,11 @@
                            flags, arg1_name, arg1_val)
 #define TRACE_EVENT_COPY_BEGIN2(category_group, name, arg1_name, arg1_val, \
                                 arg2_name, arg2_val)                       \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category_group, name,  \
-                           TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val,     \
-                           arg2_name, arg2_val)
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_BEGIN, category_group,        \
+                           ::perfetto::DynamicString{name},                \
+                           TRACE_EVENT_FLAG_NONE,                          \
+                           ::perfetto::DynamicString{arg1_name}, arg1_val, \
+                           ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Begin events with explicit timestamps.
 #define TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(category_group, name, id, \
@@ -684,23 +703,26 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                          \
       TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id, thread_id,      \
       timestamp, TRACE_EVENT_FLAG_NONE)
-#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(                \
-    category_group, name, id, thread_id, timestamp)                       \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                     \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id, thread_id, \
-      timestamp, TRACE_EVENT_FLAG_COPY)
-#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP1(                \
-    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val)  \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                     \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id, thread_id, \
-      timestamp, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP2(                \
-    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val,  \
-    arg2_name, arg2_val)                                                  \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                     \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id, thread_id, \
-      timestamp, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name,   \
-      arg2_val)
+#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP0(       \
+    category_group, name, id, thread_id, timestamp)              \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(            \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,             \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp, \
+      TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP1(               \
+    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                    \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                     \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp,         \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val)
+#define TRACE_EVENT_COPY_BEGIN_WITH_ID_TID_AND_TIMESTAMP2(                   \
+    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val,     \
+    arg2_name, arg2_val)                                                     \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                        \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                         \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp,             \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val, \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // End events.
 #define TRACE_EVENT_END0(category_group, name)                          \
@@ -720,11 +742,12 @@
                                     arg1_val)                                  \
   INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category_group, name, flags, \
                            arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_END2(category_group, name, arg1_name, arg1_val, \
-                              arg2_name, arg2_val)                       \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_END, category_group, name,  \
-                           TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val,   \
-                           arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_END2(category_group, name, arg1_name, arg1_val,      \
+                              arg2_name, arg2_val)                            \
+  INTERNAL_TRACE_EVENT_ADD(                                                   \
+      TRACE_EVENT_PHASE_END, category_group, ::perfetto::DynamicString{name}, \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val,  \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Mark events.
 #define TRACE_EVENT_MARK_WITH_TIMESTAMP0(category_group, name, timestamp)  \
@@ -744,18 +767,20 @@
       TRACE_EVENT_PHASE_MARK, category_group, name, timestamp,                 \
       TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, arg2_name, arg2_val)
 
-#define TRACE_EVENT_COPY_MARK(category_group, name)                      \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_MARK, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_MARK(category_group, name)                \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_MARK, category_group, \
+                           ::perfetto::DynamicString{name},        \
+                           TRACE_EVENT_FLAG_NONE)
 
-#define TRACE_EVENT_COPY_MARK1(category_group, name, arg1_name, arg1_val) \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_MARK, category_group, name,  \
-                           TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_MARK1(category_group, name, arg1_name, arg1_val)      \
+  INTERNAL_TRACE_EVENT_ADD(                                                    \
+      TRACE_EVENT_PHASE_MARK, category_group, ::perfetto::DynamicString{name}, \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val)
 
-#define TRACE_EVENT_COPY_MARK_WITH_TIMESTAMP(category_group, name, timestamp) \
-  INTERNAL_TRACE_EVENT_ADD_WITH_TIMESTAMP(TRACE_EVENT_PHASE_MARK,             \
-                                          category_group, name, timestamp,    \
-                                          TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_MARK_WITH_TIMESTAMP(category_group, name, timestamp)  \
+  INTERNAL_TRACE_EVENT_ADD_WITH_TIMESTAMP(                                     \
+      TRACE_EVENT_PHASE_MARK, category_group, ::perfetto::DynamicString{name}, \
+      timestamp, TRACE_EVENT_FLAG_NONE)
 
 // End events with explicit thread and timestamp.
 #define TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0(category_group, name, id, \
@@ -763,23 +788,26 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                        \
       TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, thread_id,      \
       timestamp, TRACE_EVENT_FLAG_NONE)
-#define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP0(                \
-    category_group, name, id, thread_id, timestamp)                     \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                   \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, thread_id, \
-      timestamp, TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP0(         \
+    category_group, name, id, thread_id, timestamp)              \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(            \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,               \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp, \
+      TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP1(                 \
     category_group, name, id, thread_id, timestamp, arg1_name, arg1_val) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                    \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, thread_id,  \
-      timestamp, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP2(                 \
-    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val, \
-    arg2_name, arg2_val)                                                 \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                    \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id, thread_id,  \
-      timestamp, TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name,  \
-      arg2_val)
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                       \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp,         \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val)
+#define TRACE_EVENT_COPY_END_WITH_ID_TID_AND_TIMESTAMP2(                     \
+    category_group, name, id, thread_id, timestamp, arg1_name, arg1_val,     \
+    arg2_name, arg2_val)                                                     \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                        \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                           \
+      ::perfetto::DynamicString{name}, id, thread_id, timestamp,             \
+      TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, arg1_val, \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Counters.
 #define TRACE_COUNTER1(category_group, name, value)                         \
@@ -789,9 +817,10 @@
 #define TRACE_COUNTER_WITH_FLAG1(category_group, name, flag, value)         \
   INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category_group, name, \
                            flag, "value", static_cast<int>(value))
-#define TRACE_COPY_COUNTER1(category_group, name, value)                    \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY, "value",                  \
+#define TRACE_COPY_COUNTER1(category_group, name, value)              \
+  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category_group, \
+                           ::perfetto::DynamicString{name},           \
+                           TRACE_EVENT_FLAG_NONE, "value",            \
                            static_cast<int>(value))
 #define TRACE_COUNTER2(category_group, name, value1_name, value1_val,       \
                        value2_name, value2_val)                             \
@@ -799,12 +828,12 @@
                            TRACE_EVENT_FLAG_NONE, value1_name,              \
                            static_cast<int>(value1_val), value2_name,       \
                            static_cast<int>(value2_val))
-#define TRACE_COPY_COUNTER2(category_group, name, value1_name, value1_val,  \
-                            value2_name, value2_val)                        \
-  INTERNAL_TRACE_EVENT_ADD(TRACE_EVENT_PHASE_COUNTER, category_group, name, \
-                           TRACE_EVENT_FLAG_COPY, value1_name,              \
-                           static_cast<int>(value1_val), value2_name,       \
-                           static_cast<int>(value2_val))
+#define TRACE_COPY_COUNTER2(category_group, name, value1_name, value1_val, \
+                            value2_name, value2_val)                       \
+  INTERNAL_TRACE_EVENT_ADD(                                                \
+      TRACE_EVENT_PHASE_COUNTER, category_group,                           \
+      ::perfetto::DynamicString{name}, TRACE_EVENT_FLAG_NONE, value1_name, \
+      static_cast<int>(value1_val), value2_name, static_cast<int>(value2_val))
 
 // Counters with explicit timestamps.
 #define TRACE_COUNTER_WITH_TIMESTAMP1(category_group, name, timestamp, value) \
@@ -827,7 +856,8 @@
                                    static_cast<int>(value))
 #define TRACE_COPY_COUNTER_ID1(category_group, name, id, value)               \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, category_group, \
-                                   name, id, TRACE_EVENT_FLAG_COPY, "value",  \
+                                   ::perfetto::DynamicString{name}, id,       \
+                                   TRACE_EVENT_FLAG_NONE, "value",            \
                                    static_cast<int>(value))
 #define TRACE_COUNTER_ID2(category_group, name, id, value1_name, value1_val,  \
                           value2_name, value2_val)                            \
@@ -835,12 +865,12 @@
                                    name, id, TRACE_EVENT_FLAG_NONE,           \
                                    value1_name, static_cast<int>(value1_val), \
                                    value2_name, static_cast<int>(value2_val))
-#define TRACE_COPY_COUNTER_ID2(category_group, name, id, value1_name,         \
-                               value1_val, value2_name, value2_val)           \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_COUNTER, category_group, \
-                                   name, id, TRACE_EVENT_FLAG_COPY,           \
-                                   value1_name, static_cast<int>(value1_val), \
-                                   value2_name, static_cast<int>(value2_val))
+#define TRACE_COPY_COUNTER_ID2(category_group, name, id, value1_name,          \
+                               value1_val, value2_name, value2_val)            \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                            \
+      TRACE_EVENT_PHASE_COUNTER, category_group,                               \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE, value1_name, \
+      static_cast<int>(value1_val), value2_name, static_cast<int>(value2_val))
 
 // Sampling profiler events.
 #define TRACE_EVENT_SAMPLE_WITH_ID1(category_group, name, id, arg1_name,       \
@@ -864,20 +894,23 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                   \
       TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id,        \
       TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category_group, name, id)   \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN, \
-                                   category_group, name, id,      \
-                                   TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_ASYNC_BEGIN0(category_group, name, id) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                             \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_COPY_ASYNC_BEGIN1(category_group, name, id, arg1_name, \
                                       arg1_val)                            \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN,          \
-                                   category_group, name, id,               \
-                                   TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                        \
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                       \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,          \
+      ::perfetto::DynamicString{arg1_name}, arg1_val)
 #define TRACE_EVENT_COPY_ASYNC_BEGIN2(category_group, name, id, arg1_name, \
                                       arg1_val, arg2_name, arg2_val)       \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                        \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id,             \
-      TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name, arg2_val)
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                       \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,          \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                      \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 #define TRACE_EVENT_ASYNC_BEGIN_WITH_FLAGS0(category_group, name, id, flags) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_BEGIN,            \
                                    category_group, name, id, flags)
@@ -914,8 +947,9 @@
 #define TRACE_EVENT_COPY_ASYNC_BEGIN_WITH_TIMESTAMP0(category_group, name, id, \
                                                      timestamp)                \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                          \
-      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group, name, id,                 \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY)
+      TRACE_EVENT_PHASE_ASYNC_BEGIN, category_group,                           \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID,  \
+      timestamp, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_ASYNC_BEGIN_WITH_TIMESTAMP_AND_FLAGS0(     \
     category_group, name, id, timestamp, flags)                \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(          \
@@ -966,20 +1000,23 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                           \
       TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id,                  \
       TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_ASYNC_END0(category_group, name, id)   \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END, \
-                                   category_group, name, id,    \
-                                   TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_ASYNC_END0(category_group, name, id) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                           \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_COPY_ASYNC_END1(category_group, name, id, arg1_name, \
                                     arg1_val)                            \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END,          \
-                                   category_group, name, id,             \
-                                   TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                      \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                       \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,        \
+      ::perfetto::DynamicString{arg1_name}, arg1_val)
 #define TRACE_EVENT_COPY_ASYNC_END2(category_group, name, id, arg1_name, \
                                     arg1_val, arg2_name, arg2_val)       \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                      \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id,             \
-      TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name, arg2_val)
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                       \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,        \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                    \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 #define TRACE_EVENT_ASYNC_END_WITH_FLAGS0(category_group, name, id, flags) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ASYNC_END,            \
                                    category_group, name, id, flags)
@@ -1003,11 +1040,12 @@
       TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id,                  \
       TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_NONE,    \
       arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_ASYNC_END_WITH_TIMESTAMP0(category_group, name, id, \
-                                                   timestamp)                \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                        \
-      TRACE_EVENT_PHASE_ASYNC_END, category_group, name, id,                 \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY)
+#define TRACE_EVENT_COPY_ASYNC_END_WITH_TIMESTAMP0(category_group, name, id,  \
+                                                   timestamp)                 \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
+      TRACE_EVENT_PHASE_ASYNC_END, category_group,                            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID, \
+      timestamp, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_ASYNC_END_WITH_TIMESTAMP_AND_FLAGS0(category_group, name, \
                                                         id, timestamp, flags) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
@@ -1075,18 +1113,20 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                       \
       TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT, category_group, name, id, \
       TRACE_EVENT_FLAG_NONE, arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TTS2(                       \
-    category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val)        \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                            \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group, name, id,        \
-      TRACE_EVENT_FLAG_ASYNC_TTS | TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
-      arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END_WITH_TTS2(                         \
-    category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val)        \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                            \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group, name, id,          \
-      TRACE_EVENT_FLAG_ASYNC_TTS | TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, \
-      arg2_name, arg2_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TTS2(                \
+    category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                     \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,           \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_ASYNC_TTS,  \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                   \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END_WITH_TTS2(                  \
+    category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                     \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group,             \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_ASYNC_TTS,  \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                   \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Async events with explicit timestamps.
 #define TRACE_EVENT_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(category_group, name, \
@@ -1122,47 +1162,54 @@
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                     \
       TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT, category_group, name, id, \
       TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_NONE)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN0(category_group, name, id)   \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, \
-                                   category_group, name, id,               \
-                                   TRACE_EVENT_FLAG_COPY)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN1(category_group, name, id,   \
-                                               arg1_name, arg1_val)        \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, \
-                                   category_group, name, id,               \
-                                   TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN0(category_group, name, id) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                      \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN1(category_group, name, id, \
+                                               arg1_name, arg1_val)      \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                      \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,        \
+      ::perfetto::DynamicString{arg1_name}, arg1_val)
 #define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN2(                         \
     category_group, name, id, arg1_name, arg1_val, arg2_name, arg2_val) \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                     \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group, name, id, \
-      TRACE_EVENT_FLAG_COPY, arg1_name, arg1_val, arg2_name, arg2_val)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END0(category_group, name, id)   \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, \
-                                   category_group, name, id,             \
-                                   TRACE_EVENT_FLAG_COPY)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(          \
-    category_group, name, id, timestamp)                                \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                   \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group, name, id, \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP1(             \
-    category_group, name, id, timestamp, arg1_name, arg1_val)              \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                      \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group, name, id,    \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY, \
-      arg1_name, arg1_val)
-#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END_WITH_TIMESTAMP0(          \
-    category_group, name, id, timestamp)                              \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                 \
-      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group, name, id, \
-      TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_COPY)
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,           \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE,       \
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                   \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END0(category_group, name, id) \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID(                                    \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group,            \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP0(                \
+    category_group, name, id, timestamp)                                      \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,                 \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID, \
+      timestamp, TRACE_EVENT_FLAG_NONE)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_BEGIN_WITH_TIMESTAMP1(                \
+    category_group, name, id, timestamp, arg1_name, arg1_val)                 \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN, category_group,                 \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID, \
+      timestamp, TRACE_EVENT_FLAG_NONE, ::perfetto::DynamicString{arg1_name}, \
+      arg1_val)
+#define TRACE_EVENT_COPY_NESTABLE_ASYNC_END_WITH_TIMESTAMP0(                  \
+    category_group, name, id, timestamp)                                      \
+  INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                         \
+      TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group,                   \
+      ::perfetto::DynamicString{name}, id, TRACE_EVENT_API_CURRENT_THREAD_ID, \
+      timestamp, TRACE_EVENT_FLAG_NONE)
 #define TRACE_EVENT_NESTABLE_ASYNC_END_WITH_TIMESTAMP2(                    \
     category_group, name, id, timestamp, arg1_name, arg1_val, arg2_name,   \
     arg2_val)                                                              \
   INTERNAL_TRACE_EVENT_ADD_WITH_ID_TID_AND_TIMESTAMP(                      \
       TRACE_EVENT_PHASE_NESTABLE_ASYNC_END, category_group, name, id,      \
       TRACE_EVENT_API_CURRENT_THREAD_ID, timestamp, TRACE_EVENT_FLAG_NONE, \
-      arg1_name, arg1_val, arg2_name, arg2_val)
+      ::perfetto::DynamicString{arg1_name}, arg1_val,                      \
+      ::perfetto::DynamicString{arg2_name}, arg2_val)
 
 // Metadata events.
 #define TRACE_EVENT_METADATA1(category_group, name, arg1_name, arg1_val) \
@@ -1202,16 +1249,6 @@
                                    category_group, name, id,         \
                                    TRACE_EVENT_FLAG_NONE)
 
-// Context events.
-#define TRACE_EVENT_ENTER_CONTEXT(category_group, name, context)    \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_ENTER_CONTEXT, \
-                                   category_group, name, context,   \
-                                   TRACE_EVENT_FLAG_NONE)
-#define TRACE_EVENT_LEAVE_CONTEXT(category_group, name, context)    \
-  INTERNAL_TRACE_EVENT_ADD_WITH_ID(TRACE_EVENT_PHASE_LEAVE_CONTEXT, \
-                                   category_group, name, context,   \
-                                   TRACE_EVENT_FLAG_NONE)
-
 // TODO(skyostil): Implement binary-efficient trace events.
 #define TRACE_EVENT_BINARY_EFFICIENT0 TRACE_EVENT0
 #define TRACE_EVENT_BINARY_EFFICIENT1 TRACE_EVENT1
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/descriptor.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/descriptor.pbzero.h
index b915cfc..3a9b41a 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/descriptor.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/descriptor.pbzero.h
@@ -26,10 +26,12 @@
 class OneofOptions;
 namespace perfetto_pbzero_enum_FieldDescriptorProto {
 enum Label : int32_t;
-}  // namespace perfetto_pbzero_enum_FieldDescriptorProto 
+}  // namespace perfetto_pbzero_enum_FieldDescriptorProto
+using FieldDescriptorProto_Label = perfetto_pbzero_enum_FieldDescriptorProto::Label;
 namespace perfetto_pbzero_enum_FieldDescriptorProto {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_FieldDescriptorProto 
+}  // namespace perfetto_pbzero_enum_FieldDescriptorProto
+using FieldDescriptorProto_Type = perfetto_pbzero_enum_FieldDescriptorProto::Type;
 
 namespace perfetto_pbzero_enum_FieldDescriptorProto {
 enum Type : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/gpu_counter_descriptor.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/gpu_counter_descriptor.pbzero.h
index 9bdb17e..80e5fda 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/gpu_counter_descriptor.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/gpu_counter_descriptor.pbzero.h
@@ -20,10 +20,12 @@
 class GpuCounterDescriptor_GpuCounterSpec;
 namespace perfetto_pbzero_enum_GpuCounterDescriptor {
 enum GpuCounterGroup : int32_t;
-}  // namespace perfetto_pbzero_enum_GpuCounterDescriptor 
+}  // namespace perfetto_pbzero_enum_GpuCounterDescriptor
+using GpuCounterDescriptor_GpuCounterGroup = perfetto_pbzero_enum_GpuCounterDescriptor::GpuCounterGroup;
 namespace perfetto_pbzero_enum_GpuCounterDescriptor {
 enum MeasureUnit : int32_t;
-}  // namespace perfetto_pbzero_enum_GpuCounterDescriptor 
+}  // namespace perfetto_pbzero_enum_GpuCounterDescriptor
+using GpuCounterDescriptor_MeasureUnit = perfetto_pbzero_enum_GpuCounterDescriptor::MeasureUnit;
 
 namespace perfetto_pbzero_enum_GpuCounterDescriptor {
 enum GpuCounterGroup : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/observable_events.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/observable_events.pbzero.h
index 5eaa1a8..98926f5 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/observable_events.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/observable_events.pbzero.h
@@ -19,7 +19,8 @@
 class ObservableEvents_DataSourceInstanceStateChange;
 namespace perfetto_pbzero_enum_ObservableEvents {
 enum DataSourceInstanceState : int32_t;
-}  // namespace perfetto_pbzero_enum_ObservableEvents 
+}  // namespace perfetto_pbzero_enum_ObservableEvents
+using ObservableEvents_DataSourceInstanceState = perfetto_pbzero_enum_ObservableEvents::DataSourceInstanceState;
 
 namespace perfetto_pbzero_enum_ObservableEvents {
 enum Type : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/perf_events.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/perf_events.pbzero.h
index fbb08e6..4e06943 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/perf_events.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/perf_events.pbzero.h
@@ -21,10 +21,12 @@
 class PerfEvents_Tracepoint;
 namespace perfetto_pbzero_enum_PerfEvents {
 enum Counter : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfEvents 
+}  // namespace perfetto_pbzero_enum_PerfEvents
+using PerfEvents_Counter = perfetto_pbzero_enum_PerfEvents::Counter;
 namespace perfetto_pbzero_enum_PerfEvents {
 enum PerfClock : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfEvents 
+}  // namespace perfetto_pbzero_enum_PerfEvents
+using PerfEvents_PerfClock = perfetto_pbzero_enum_PerfEvents::PerfClock;
 
 namespace perfetto_pbzero_enum_PerfEvents {
 enum Counter : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/trace_stats.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/trace_stats.pbzero.h
index 07b5288..2260eba 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/trace_stats.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/trace_stats.pbzero.h
@@ -20,7 +20,8 @@
 class TraceStats_FilterStats;
 namespace perfetto_pbzero_enum_TraceStats {
 enum FinalFlushOutcome : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceStats 
+}  // namespace perfetto_pbzero_enum_TraceStats
+using TraceStats_FinalFlushOutcome = perfetto_pbzero_enum_TraceStats::FinalFlushOutcome;
 
 namespace perfetto_pbzero_enum_TraceStats {
 enum FinalFlushOutcome : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/tracing_service_capabilities.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/tracing_service_capabilities.pbzero.h
index 0e51e3c..ee22f96 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/tracing_service_capabilities.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/common/tracing_service_capabilities.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ObservableEvents {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_ObservableEvents 
+}  // namespace perfetto_pbzero_enum_ObservableEvents
+using ObservableEvents_Type = perfetto_pbzero_enum_ObservableEvents::Type;
 
 class TracingServiceCapabilities_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/3, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
  public:
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/chrome/chrome_config.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/chrome/chrome_config.pbzero.h
index 2b4d581..2c16311 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/chrome/chrome_config.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/chrome/chrome_config.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ChromeConfig {
 enum ClientPriority : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeConfig 
+}  // namespace perfetto_pbzero_enum_ChromeConfig
+using ChromeConfig_ClientPriority = perfetto_pbzero_enum_ChromeConfig::ClientPriority;
 
 namespace perfetto_pbzero_enum_ChromeConfig {
 enum ClientPriority : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.gen.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.gen.cc
index a4ab426..e4746d9 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.gen.cc
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.gen.cc
@@ -8,6 +8,7 @@
 #pragma GCC diagnostic ignored "-Wfloat-equal"
 #endif
 #include "protos/perfetto/config/data_source_config.gen.h"
+#include "protos/perfetto/config/system_info/system_info.gen.h"
 #include "protos/perfetto/config/test_config.gen.h"
 #include "protos/perfetto/config/interceptor_config.gen.h"
 #include "protos/perfetto/config/interceptors/console_config.gen.h"
@@ -50,6 +51,7 @@
    && android_polled_state_config_ == other.android_polled_state_config_
    && android_system_property_config_ == other.android_system_property_config_
    && statsd_tracing_config_ == other.statsd_tracing_config_
+   && system_info_config_ == other.system_info_config_
    && chrome_config_ == other.chrome_config_
    && interceptor_config_ == other.interceptor_config_
    && legacy_config_ == other.legacy_config_
@@ -138,6 +140,9 @@
       case 117 /* statsd_tracing_config */:
         statsd_tracing_config_ = field.as_std_string();
         break;
+      case 119 /* system_info_config */:
+        (*system_info_config_).ParseFromArray(field.data(), field.size());
+        break;
       case 101 /* chrome_config */:
         (*chrome_config_).ParseFromArray(field.data(), field.size());
         break;
@@ -291,6 +296,11 @@
     msg->AppendString(117, statsd_tracing_config_);
   }
 
+  // Field 119: system_info_config
+  if (_has_field_[119]) {
+    (*system_info_config_).Serialize(msg->BeginNestedMessage<::protozero::Message>(119));
+  }
+
   // Field 101: chrome_config
   if (_has_field_[101]) {
     (*chrome_config_).Serialize(msg->BeginNestedMessage<::protozero::Message>(101));
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.gen.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.gen.h
index 6927e20..b455b39 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.gen.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.gen.h
@@ -20,6 +20,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 enum DataSourceConfig_SessionInitiator : int;
 enum ChromeConfig_ClientPriority : int;
 }  // namespace perfetto
@@ -70,6 +71,7 @@
     kAndroidPolledStateConfigFieldNumber = 114,
     kAndroidSystemPropertyConfigFieldNumber = 118,
     kStatsdTracingConfigFieldNumber = 117,
+    kSystemInfoConfigFieldNumber = 119,
     kChromeConfigFieldNumber = 101,
     kInterceptorConfigFieldNumber = 115,
     kLegacyConfigFieldNumber = 1000,
@@ -169,6 +171,10 @@
   const std::string& statsd_tracing_config_raw() const { return statsd_tracing_config_; }
   void set_statsd_tracing_config_raw(const std::string& raw) { statsd_tracing_config_ = raw; _has_field_.set(117); }
 
+  bool has_system_info_config() const { return _has_field_[119]; }
+  const SystemInfoConfig& system_info_config() const { return *system_info_config_; }
+  SystemInfoConfig* mutable_system_info_config() { _has_field_.set(119); return system_info_config_.get(); }
+
   bool has_chrome_config() const { return _has_field_[101]; }
   const ChromeConfig& chrome_config() const { return *chrome_config_; }
   ChromeConfig* mutable_chrome_config() { _has_field_.set(101); return chrome_config_.get(); }
@@ -210,6 +216,7 @@
   std::string android_polled_state_config_;  // [lazy=true]
   std::string android_system_property_config_;  // [lazy=true]
   std::string statsd_tracing_config_;  // [lazy=true]
+  ::protozero::CopyablePtr<SystemInfoConfig> system_info_config_;
   ::protozero::CopyablePtr<ChromeConfig> chrome_config_;
   ::protozero::CopyablePtr<InterceptorConfig> interceptor_config_;
   std::string legacy_config_{};
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.pbzero.h
index 43796fa..63c1783 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/data_source_config.pbzero.h
@@ -33,12 +33,14 @@
 class ProcessStatsConfig;
 class StatsdTracingConfig;
 class SysStatsConfig;
+class SystemInfoConfig;
 class TestConfig;
 class TrackEventConfig;
 class VulkanMemoryConfig;
 namespace perfetto_pbzero_enum_DataSourceConfig {
 enum SessionInitiator : int32_t;
-}  // namespace perfetto_pbzero_enum_DataSourceConfig 
+}  // namespace perfetto_pbzero_enum_DataSourceConfig
+using DataSourceConfig_SessionInitiator = perfetto_pbzero_enum_DataSourceConfig::SessionInitiator;
 
 namespace perfetto_pbzero_enum_DataSourceConfig {
 enum SessionInitiator : int32_t {
@@ -65,7 +67,7 @@
   return "PBZERO_UNKNOWN_ENUM_VALUE";
 }
 
-class DataSourceConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/118, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+class DataSourceConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/119, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
  public:
   DataSourceConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit DataSourceConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -118,6 +120,8 @@
   ::protozero::ConstBytes android_system_property_config() const { return at<118>().as_bytes(); }
   bool has_statsd_tracing_config() const { return at<117>().valid(); }
   ::protozero::ConstBytes statsd_tracing_config() const { return at<117>().as_bytes(); }
+  bool has_system_info_config() const { return at<119>().valid(); }
+  ::protozero::ConstBytes system_info_config() const { return at<119>().as_bytes(); }
   bool has_chrome_config() const { return at<101>().valid(); }
   ::protozero::ConstBytes chrome_config() const { return at<101>().as_bytes(); }
   bool has_interceptor_config() const { return at<115>().valid(); }
@@ -154,6 +158,7 @@
     kAndroidPolledStateConfigFieldNumber = 114,
     kAndroidSystemPropertyConfigFieldNumber = 118,
     kStatsdTracingConfigFieldNumber = 117,
+    kSystemInfoConfigFieldNumber = 119,
     kChromeConfigFieldNumber = 101,
     kInterceptorConfigFieldNumber = 115,
     kLegacyConfigFieldNumber = 1000,
@@ -775,6 +780,27 @@
   }
 
 
+  using FieldMetadata_SystemInfoConfig =
+    ::protozero::proto_utils::FieldMetadata<
+      119,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      SystemInfoConfig,
+      DataSourceConfig>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_SystemInfoConfig kSystemInfoConfig() { return {}; }
+  template <typename T = SystemInfoConfig> T* set_system_info_config() {
+    return BeginNestedMessage<T>(119);
+  }
+
+
   using FieldMetadata_ChromeConfig =
     ::protozero::proto_utils::FieldMetadata<
       101,
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.gen.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.gen.cc
index 0c3faba..b231592 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.gen.cc
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.gen.cc
@@ -32,13 +32,15 @@
    && ksyms_mem_policy_ == other.ksyms_mem_policy_
    && initialize_ksyms_synchronously_for_testing_ == other.initialize_ksyms_synchronously_for_testing_
    && throttle_rss_stat_ == other.throttle_rss_stat_
-   && disable_generic_events_ == other.disable_generic_events_;
+   && disable_generic_events_ == other.disable_generic_events_
+   && syscall_events_ == other.syscall_events_;
 }
 
 bool FtraceConfig::ParseFromArray(const void* raw, size_t size) {
   ftrace_events_.clear();
   atrace_categories_.clear();
   atrace_apps_.clear();
+  syscall_events_.clear();
   unknown_fields_.clear();
   bool packed_error = false;
 
@@ -84,6 +86,10 @@
       case 16 /* disable_generic_events */:
         field.get(&disable_generic_events_);
         break;
+      case 18 /* syscall_events */:
+        syscall_events_.emplace_back();
+        field.get(&syscall_events_.back());
+        break;
       default:
         field.SerializeAndAppendTo(&unknown_fields_);
         break;
@@ -160,6 +166,11 @@
     msg->AppendTinyVarInt(16, disable_generic_events_);
   }
 
+  // Field 18: syscall_events
+  for (auto& it : syscall_events_) {
+    msg->AppendString(18, it);
+  }
+
   msg->AppendRawProtoBytes(unknown_fields_.data(), unknown_fields_.size());
 }
 
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.gen.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.gen.h
index 5ec2736..6bba7ea 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.gen.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.gen.h
@@ -56,6 +56,7 @@
     kInitializeKsymsSynchronouslyForTestingFieldNumber = 14,
     kThrottleRssStatFieldNumber = 15,
     kDisableGenericEventsFieldNumber = 16,
+    kSyscallEventsFieldNumber = 18,
   };
 
   FtraceConfig();
@@ -125,6 +126,13 @@
   bool disable_generic_events() const { return disable_generic_events_; }
   void set_disable_generic_events(bool value) { disable_generic_events_ = value; _has_field_.set(16); }
 
+  const std::vector<std::string>& syscall_events() const { return syscall_events_; }
+  std::vector<std::string>* mutable_syscall_events() { return &syscall_events_; }
+  int syscall_events_size() const { return static_cast<int>(syscall_events_.size()); }
+  void clear_syscall_events() { syscall_events_.clear(); }
+  void add_syscall_events(std::string value) { syscall_events_.emplace_back(value); }
+  std::string* add_syscall_events() { syscall_events_.emplace_back(); return &syscall_events_.back(); }
+
  private:
   std::vector<std::string> ftrace_events_;
   std::vector<std::string> atrace_categories_;
@@ -137,12 +145,13 @@
   bool initialize_ksyms_synchronously_for_testing_{};
   bool throttle_rss_stat_{};
   bool disable_generic_events_{};
+  std::vector<std::string> syscall_events_;
 
   // Allows to preserve unknown protobuf fields for compatibility
   // with future versions of .proto files.
   std::string unknown_fields_;
 
-  std::bitset<18> _has_field_{};
+  std::bitset<19> _has_field_{};
 };
 
 
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.pbzero.h
index 7695ead..001000b 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/ftrace/ftrace_config.pbzero.h
@@ -19,7 +19,8 @@
 class FtraceConfig_CompactSchedConfig;
 namespace perfetto_pbzero_enum_FtraceConfig {
 enum KsymsMemPolicy : int32_t;
-}  // namespace perfetto_pbzero_enum_FtraceConfig 
+}  // namespace perfetto_pbzero_enum_FtraceConfig
+using FtraceConfig_KsymsMemPolicy = perfetto_pbzero_enum_FtraceConfig::KsymsMemPolicy;
 
 namespace perfetto_pbzero_enum_FtraceConfig {
 enum KsymsMemPolicy : int32_t {
@@ -50,7 +51,7 @@
   return "PBZERO_UNKNOWN_ENUM_VALUE";
 }
 
-class FtraceConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/17, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
+class FtraceConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/18, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
  public:
   FtraceConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit FtraceConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -77,6 +78,8 @@
   bool throttle_rss_stat() const { return at<15>().as_bool(); }
   bool has_disable_generic_events() const { return at<16>().valid(); }
   bool disable_generic_events() const { return at<16>().as_bool(); }
+  bool has_syscall_events() const { return at<18>().valid(); }
+  ::protozero::RepeatedFieldIterator<::protozero::ConstChars> syscall_events() const { return GetRepeated<::protozero::ConstChars>(18); }
 };
 
 class FtraceConfig : public ::protozero::Message {
@@ -94,6 +97,7 @@
     kInitializeKsymsSynchronouslyForTestingFieldNumber = 14,
     kThrottleRssStatFieldNumber = 15,
     kDisableGenericEventsFieldNumber = 16,
+    kSyscallEventsFieldNumber = 18,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.FtraceConfig"; }
 
@@ -395,6 +399,37 @@
       ::protozero::proto_utils::ProtoSchemaType::kBool>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_SyscallEvents =
+    ::protozero::proto_utils::FieldMetadata<
+      18,
+      ::protozero::proto_utils::RepetitionType::kRepeatedNotPacked,
+      ::protozero::proto_utils::ProtoSchemaType::kString,
+      std::string,
+      FtraceConfig>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_SyscallEvents kSyscallEvents() { return {}; }
+  void add_syscall_events(const char* data, size_t size) {
+    AppendBytes(FieldMetadata_SyscallEvents::kFieldId, data, size);
+  }
+  void add_syscall_events(::protozero::ConstChars chars) {
+    AppendBytes(FieldMetadata_SyscallEvents::kFieldId, chars.data, chars.size);
+  }
+  void add_syscall_events(std::string value) {
+    static constexpr uint32_t field_id = FieldMetadata_SyscallEvents::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kString>
+        ::Append(*this, field_id, value);
+  }
 };
 
 class FtraceConfig_CompactSchedConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/1, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/interceptors/console_config.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/interceptors/console_config.pbzero.h
index 0d6028c..377c495 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/interceptors/console_config.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/interceptors/console_config.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ConsoleConfig {
 enum Output : int32_t;
-}  // namespace perfetto_pbzero_enum_ConsoleConfig 
+}  // namespace perfetto_pbzero_enum_ConsoleConfig
+using ConsoleConfig_Output = perfetto_pbzero_enum_ConsoleConfig::Output;
 
 namespace perfetto_pbzero_enum_ConsoleConfig {
 enum Output : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/power/android_power_config.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/power/android_power_config.pbzero.h
index 540fa40..c88391f 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/power/android_power_config.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/power/android_power_config.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_AndroidPowerConfig {
 enum BatteryCounters : int32_t;
-}  // namespace perfetto_pbzero_enum_AndroidPowerConfig 
+}  // namespace perfetto_pbzero_enum_AndroidPowerConfig
+using AndroidPowerConfig_BatteryCounters = perfetto_pbzero_enum_AndroidPowerConfig::BatteryCounters;
 
 namespace perfetto_pbzero_enum_AndroidPowerConfig {
 enum BatteryCounters : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/process_stats/process_stats_config.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/process_stats/process_stats_config.pbzero.h
index 0bf3b09..0228928 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/process_stats/process_stats_config.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/process_stats/process_stats_config.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ProcessStatsConfig {
 enum Quirks : int32_t;
-}  // namespace perfetto_pbzero_enum_ProcessStatsConfig 
+}  // namespace perfetto_pbzero_enum_ProcessStatsConfig
+using ProcessStatsConfig_Quirks = perfetto_pbzero_enum_ProcessStatsConfig::Quirks;
 
 namespace perfetto_pbzero_enum_ProcessStatsConfig {
 enum Quirks : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/profiling/perf_event_config.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/profiling/perf_event_config.pbzero.h
index dd05f4e..b9558f3 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/profiling/perf_event_config.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/profiling/perf_event_config.pbzero.h
@@ -21,7 +21,8 @@
 class PerfEvents_Timebase;
 namespace perfetto_pbzero_enum_PerfEventConfig {
 enum UnwindMode : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfEventConfig 
+}  // namespace perfetto_pbzero_enum_PerfEventConfig
+using PerfEventConfig_UnwindMode = perfetto_pbzero_enum_PerfEventConfig::UnwindMode;
 
 namespace perfetto_pbzero_enum_PerfEventConfig {
 enum UnwindMode : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/stress_test_config.gen.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/stress_test_config.gen.cc
index 278d092..2103f31 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/stress_test_config.gen.cc
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/stress_test_config.gen.cc
@@ -10,6 +10,7 @@
 #include "protos/perfetto/config/stress_test_config.gen.h"
 #include "protos/perfetto/config/trace_config.gen.h"
 #include "protos/perfetto/config/data_source_config.gen.h"
+#include "protos/perfetto/config/system_info/system_info.gen.h"
 #include "protos/perfetto/config/track_event/track_event_config.gen.h"
 #include "protos/perfetto/config/test_config.gen.h"
 #include "protos/perfetto/config/sys_stats/sys_stats_config.gen.h"
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/stress_test_config.gen.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/stress_test_config.gen.h
index 00bb6ad..a763691 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/stress_test_config.gen.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/stress_test_config.gen.h
@@ -35,6 +35,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class TraceConfig_BufferConfig;
 enum TraceConfig_LockdownModeOperation : int;
 enum TraceConfig_CompressionType : int;
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.gen.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.gen.cc
index c9b6eb6..5ea33e3 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.gen.cc
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.gen.cc
@@ -30,7 +30,8 @@
    && stat_period_ms_ == other.stat_period_ms_
    && stat_counters_ == other.stat_counters_
    && devfreq_period_ms_ == other.devfreq_period_ms_
-   && cpufreq_period_ms_ == other.cpufreq_period_ms_;
+   && cpufreq_period_ms_ == other.cpufreq_period_ms_
+   && buddyinfo_period_ms_ == other.buddyinfo_period_ms_;
 }
 
 bool SysStatsConfig::ParseFromArray(const void* raw, size_t size) {
@@ -73,6 +74,9 @@
       case 8 /* cpufreq_period_ms */:
         field.get(&cpufreq_period_ms_);
         break;
+      case 9 /* buddyinfo_period_ms */:
+        field.get(&buddyinfo_period_ms_);
+        break;
       default:
         field.SerializeAndAppendTo(&unknown_fields_);
         break;
@@ -134,6 +138,11 @@
     msg->AppendVarInt(8, cpufreq_period_ms_);
   }
 
+  // Field 9: buddyinfo_period_ms
+  if (_has_field_[9]) {
+    msg->AppendVarInt(9, buddyinfo_period_ms_);
+  }
+
   msg->AppendRawProtoBytes(unknown_fields_.data(), unknown_fields_.size());
 }
 
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.gen.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.gen.h
index 2627fc9..cd5d2c7 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.gen.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.gen.h
@@ -57,6 +57,7 @@
     kStatCountersFieldNumber = 6,
     kDevfreqPeriodMsFieldNumber = 7,
     kCpufreqPeriodMsFieldNumber = 8,
+    kBuddyinfoPeriodMsFieldNumber = 9,
   };
 
   SysStatsConfig();
@@ -114,6 +115,10 @@
   uint32_t cpufreq_period_ms() const { return cpufreq_period_ms_; }
   void set_cpufreq_period_ms(uint32_t value) { cpufreq_period_ms_ = value; _has_field_.set(8); }
 
+  bool has_buddyinfo_period_ms() const { return _has_field_[9]; }
+  uint32_t buddyinfo_period_ms() const { return buddyinfo_period_ms_; }
+  void set_buddyinfo_period_ms(uint32_t value) { buddyinfo_period_ms_ = value; _has_field_.set(9); }
+
  private:
   uint32_t meminfo_period_ms_{};
   std::vector<MeminfoCounters> meminfo_counters_;
@@ -123,12 +128,13 @@
   std::vector<SysStatsConfig_StatCounters> stat_counters_;
   uint32_t devfreq_period_ms_{};
   uint32_t cpufreq_period_ms_{};
+  uint32_t buddyinfo_period_ms_{};
 
   // Allows to preserve unknown protobuf fields for compatibility
   // with future versions of .proto files.
   std::string unknown_fields_;
 
-  std::bitset<9> _has_field_{};
+  std::bitset<10> _has_field_{};
 };
 
 }  // namespace perfetto
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.pbzero.h
index 2b2fb48..0def29b 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/sys_stats/sys_stats_config.pbzero.h
@@ -19,7 +19,8 @@
 enum MeminfoCounters : int32_t;
 namespace perfetto_pbzero_enum_SysStatsConfig {
 enum StatCounters : int32_t;
-}  // namespace perfetto_pbzero_enum_SysStatsConfig 
+}  // namespace perfetto_pbzero_enum_SysStatsConfig
+using SysStatsConfig_StatCounters = perfetto_pbzero_enum_SysStatsConfig::StatCounters;
 enum VmstatCounters : int32_t;
 
 namespace perfetto_pbzero_enum_SysStatsConfig {
@@ -59,7 +60,7 @@
   return "PBZERO_UNKNOWN_ENUM_VALUE";
 }
 
-class SysStatsConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/8, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
+class SysStatsConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/9, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
  public:
   SysStatsConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit SysStatsConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -80,6 +81,8 @@
   uint32_t devfreq_period_ms() const { return at<7>().as_uint32(); }
   bool has_cpufreq_period_ms() const { return at<8>().valid(); }
   uint32_t cpufreq_period_ms() const { return at<8>().as_uint32(); }
+  bool has_buddyinfo_period_ms() const { return at<9>().valid(); }
+  uint32_t buddyinfo_period_ms() const { return at<9>().as_uint32(); }
 };
 
 class SysStatsConfig : public ::protozero::Message {
@@ -94,6 +97,7 @@
     kStatCountersFieldNumber = 6,
     kDevfreqPeriodMsFieldNumber = 7,
     kCpufreqPeriodMsFieldNumber = 8,
+    kBuddyinfoPeriodMsFieldNumber = 9,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.SysStatsConfig"; }
 
@@ -307,6 +311,31 @@
       ::protozero::proto_utils::ProtoSchemaType::kUint32>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_BuddyinfoPeriodMs =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      SysStatsConfig>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_BuddyinfoPeriodMs kBuddyinfoPeriodMs() { return {}; }
+  void set_buddyinfo_period_ms(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_BuddyinfoPeriodMs::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
 };
 
 } // Namespace.
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.gen.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.gen.cc
new file mode 100644
index 0000000..81fa79e
--- /dev/null
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.gen.cc
@@ -0,0 +1,66 @@
+#include "perfetto/protozero/message.h"
+#include "perfetto/protozero/packed_repeated_fields.h"
+#include "perfetto/protozero/proto_decoder.h"
+#include "perfetto/protozero/scattered_heap_buffer.h"
+// DO NOT EDIT. Autogenerated by Perfetto cppgen_plugin
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wfloat-equal"
+#endif
+#include "protos/perfetto/config/system_info/system_info.gen.h"
+
+namespace perfetto {
+namespace protos {
+namespace gen {
+
+SystemInfoConfig::SystemInfoConfig() = default;
+SystemInfoConfig::~SystemInfoConfig() = default;
+SystemInfoConfig::SystemInfoConfig(const SystemInfoConfig&) = default;
+SystemInfoConfig& SystemInfoConfig::operator=(const SystemInfoConfig&) = default;
+SystemInfoConfig::SystemInfoConfig(SystemInfoConfig&&) noexcept = default;
+SystemInfoConfig& SystemInfoConfig::operator=(SystemInfoConfig&&) = default;
+
+bool SystemInfoConfig::operator==(const SystemInfoConfig& other) const {
+  return unknown_fields_ == other.unknown_fields_;
+}
+
+bool SystemInfoConfig::ParseFromArray(const void* raw, size_t size) {
+  unknown_fields_.clear();
+  bool packed_error = false;
+
+  ::protozero::ProtoDecoder dec(raw, size);
+  for (auto field = dec.ReadField(); field.valid(); field = dec.ReadField()) {
+    if (field.id() < _has_field_.size()) {
+      _has_field_.set(field.id());
+    }
+    switch (field.id()) {
+      default:
+        field.SerializeAndAppendTo(&unknown_fields_);
+        break;
+    }
+  }
+  return !packed_error && !dec.bytes_left();
+}
+
+std::string SystemInfoConfig::SerializeAsString() const {
+  ::protozero::HeapBuffered<::protozero::Message> msg;
+  Serialize(msg.get());
+  return msg.SerializeAsString();
+}
+
+std::vector<uint8_t> SystemInfoConfig::SerializeAsArray() const {
+  ::protozero::HeapBuffered<::protozero::Message> msg;
+  Serialize(msg.get());
+  return msg.SerializeAsArray();
+}
+
+void SystemInfoConfig::Serialize(::protozero::Message* msg) const {
+  msg->AppendRawProtoBytes(unknown_fields_.data(), unknown_fields_.size());
+}
+
+}  // namespace perfetto
+}  // namespace protos
+}  // namespace gen
+#if defined(__GNUC__) || defined(__clang__)
+#pragma GCC diagnostic pop
+#endif
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.gen.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.gen.h
new file mode 100644
index 0000000..419326f
--- /dev/null
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.gen.h
@@ -0,0 +1,63 @@
+// DO NOT EDIT. Autogenerated by Perfetto cppgen_plugin
+#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_CPP_H_
+#define PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_CPP_H_
+
+#include <stdint.h>
+#include <bitset>
+#include <vector>
+#include <string>
+#include <type_traits>
+
+#include "perfetto/protozero/cpp_message_obj.h"
+#include "perfetto/protozero/copyable_ptr.h"
+#include "perfetto/base/export.h"
+
+namespace perfetto {
+namespace protos {
+namespace gen {
+class SystemInfoConfig;
+}  // namespace perfetto
+}  // namespace protos
+}  // namespace gen
+
+namespace protozero {
+class Message;
+}  // namespace protozero
+
+namespace perfetto {
+namespace protos {
+namespace gen {
+
+class PERFETTO_EXPORT_COMPONENT SystemInfoConfig : public ::protozero::CppMessageObj {
+ public:
+  enum FieldNumbers {
+  };
+
+  SystemInfoConfig();
+  ~SystemInfoConfig() override;
+  SystemInfoConfig(SystemInfoConfig&&) noexcept;
+  SystemInfoConfig& operator=(SystemInfoConfig&&);
+  SystemInfoConfig(const SystemInfoConfig&);
+  SystemInfoConfig& operator=(const SystemInfoConfig&);
+  bool operator==(const SystemInfoConfig&) const;
+  bool operator!=(const SystemInfoConfig& other) const { return !(*this == other); }
+
+  bool ParseFromArray(const void*, size_t) override;
+  std::string SerializeAsString() const override;
+  std::vector<uint8_t> SerializeAsArray() const override;
+  void Serialize(::protozero::Message*) const;
+
+ private:
+
+  // Allows to preserve unknown protobuf fields for compatibility
+  // with future versions of .proto files.
+  std::string unknown_fields_;
+
+  std::bitset<2> _has_field_{};
+};
+
+}  // namespace perfetto
+}  // namespace protos
+}  // namespace gen
+
+#endif  // PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_CPP_H_
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.pbzero.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.pbzero.cc
new file mode 100644
index 0000000..4b4f59d
--- /dev/null
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.pbzero.cc
@@ -0,0 +1 @@
+// Intentionally empty (crbug.com/998165)
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.pbzero.h
new file mode 100644
index 0000000..9d7c13a
--- /dev/null
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/system_info/system_info.pbzero.h
@@ -0,0 +1,37 @@
+// Autogenerated by the ProtoZero compiler plugin. DO NOT EDIT.
+
+#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_H_
+#define PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_SYSTEM_INFO_SYSTEM_INFO_PROTO_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "perfetto/protozero/field_writer.h"
+#include "perfetto/protozero/message.h"
+#include "perfetto/protozero/packed_repeated_fields.h"
+#include "perfetto/protozero/proto_decoder.h"
+#include "perfetto/protozero/proto_utils.h"
+
+namespace perfetto {
+namespace protos {
+namespace pbzero {
+
+
+class SystemInfoConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/0, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  SystemInfoConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit SystemInfoConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit SystemInfoConfig_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+};
+
+class SystemInfoConfig : public ::protozero::Message {
+ public:
+  using Decoder = SystemInfoConfig_Decoder;
+  static constexpr const char* GetName() { return ".perfetto.protos.SystemInfoConfig"; }
+
+};
+
+} // Namespace.
+} // Namespace.
+} // Namespace.
+#endif  // Include guard.
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.gen.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.gen.cc
index d4b7952..e79a1b9 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.gen.cc
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.gen.cc
@@ -9,6 +9,7 @@
 #endif
 #include "protos/perfetto/config/trace_config.gen.h"
 #include "protos/perfetto/config/data_source_config.gen.h"
+#include "protos/perfetto/config/system_info/system_info.gen.h"
 #include "protos/perfetto/config/track_event/track_event_config.gen.h"
 #include "protos/perfetto/config/test_config.gen.h"
 #include "protos/perfetto/config/sys_stats/sys_stats_config.gen.h"
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.gen.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.gen.h
index aacbf88..f3eab89 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.gen.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.gen.h
@@ -33,6 +33,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class TraceConfig_BufferConfig;
 enum TraceConfig_LockdownModeOperation : int;
 enum TraceConfig_CompressionType : int;
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.pbzero.h
index d9f8fff..573a826 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/config/trace_config.pbzero.h
@@ -33,19 +33,24 @@
 enum BuiltinClock : int32_t;
 namespace perfetto_pbzero_enum_TraceConfig_BufferConfig {
 enum FillPolicy : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig_BufferConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig_BufferConfig
+using TraceConfig_BufferConfig_FillPolicy = perfetto_pbzero_enum_TraceConfig_BufferConfig::FillPolicy;
 namespace perfetto_pbzero_enum_TraceConfig {
 enum CompressionType : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig
+using TraceConfig_CompressionType = perfetto_pbzero_enum_TraceConfig::CompressionType;
 namespace perfetto_pbzero_enum_TraceConfig {
 enum LockdownModeOperation : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig
+using TraceConfig_LockdownModeOperation = perfetto_pbzero_enum_TraceConfig::LockdownModeOperation;
 namespace perfetto_pbzero_enum_TraceConfig {
 enum StatsdLogging : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig
+using TraceConfig_StatsdLogging = perfetto_pbzero_enum_TraceConfig::StatsdLogging;
 namespace perfetto_pbzero_enum_TraceConfig_TriggerConfig {
 enum TriggerMode : int32_t;
-}  // namespace perfetto_pbzero_enum_TraceConfig_TriggerConfig 
+}  // namespace perfetto_pbzero_enum_TraceConfig_TriggerConfig
+using TraceConfig_TriggerConfig_TriggerMode = perfetto_pbzero_enum_TraceConfig_TriggerConfig::TriggerMode;
 
 namespace perfetto_pbzero_enum_TraceConfig {
 enum LockdownModeOperation : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/consumer_port.gen.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/consumer_port.gen.cc
index 0f17129..68e450a 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/consumer_port.gen.cc
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/consumer_port.gen.cc
@@ -10,6 +10,7 @@
 #include "protos/perfetto/ipc/consumer_port.gen.h"
 #include "protos/perfetto/config/trace_config.gen.h"
 #include "protos/perfetto/config/data_source_config.gen.h"
+#include "protos/perfetto/config/system_info/system_info.gen.h"
 #include "protos/perfetto/config/track_event/track_event_config.gen.h"
 #include "protos/perfetto/config/test_config.gen.h"
 #include "protos/perfetto/config/sys_stats/sys_stats_config.gen.h"
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/consumer_port.gen.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/consumer_port.gen.h
index 584de95..af6ed8c 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/consumer_port.gen.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/consumer_port.gen.h
@@ -55,6 +55,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class TraceConfig_BufferConfig;
 class AttachRequest;
 class DetachResponse;
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/producer_port.gen.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/producer_port.gen.cc
index 36e976b..08e7b78 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/producer_port.gen.cc
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/producer_port.gen.cc
@@ -13,6 +13,7 @@
 #include "protos/perfetto/common/gpu_counter_descriptor.gen.h"
 #include "protos/perfetto/common/ftrace_descriptor.gen.h"
 #include "protos/perfetto/config/data_source_config.gen.h"
+#include "protos/perfetto/config/system_info/system_info.gen.h"
 #include "protos/perfetto/config/track_event/track_event_config.gen.h"
 #include "protos/perfetto/config/test_config.gen.h"
 #include "protos/perfetto/config/sys_stats/sys_stats_config.gen.h"
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/producer_port.gen.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/producer_port.gen.h
index 3e8afa0..9ada6bd 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/producer_port.gen.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/ipc/producer_port.gen.h
@@ -27,6 +27,7 @@
 class TestConfig_DummyFields;
 class InterceptorConfig;
 class ChromeConfig;
+class SystemInfoConfig;
 class GetAsyncCommandResponse_SetupDataSource;
 class GetAsyncCommandResponse_SetupTracing;
 class GetAsyncCommandRequest;
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/camera_event.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/camera_event.pbzero.h
index f9f90e3..8475559 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/camera_event.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/camera_event.pbzero.h
@@ -22,7 +22,8 @@
 class AndroidCameraSessionStats_CameraGraph_CameraNode;
 namespace perfetto_pbzero_enum_AndroidCameraFrameEvent {
 enum CaptureResultStatus : int32_t;
-}  // namespace perfetto_pbzero_enum_AndroidCameraFrameEvent 
+}  // namespace perfetto_pbzero_enum_AndroidCameraFrameEvent
+using AndroidCameraFrameEvent_CaptureResultStatus = perfetto_pbzero_enum_AndroidCameraFrameEvent::CaptureResultStatus;
 
 namespace perfetto_pbzero_enum_AndroidCameraFrameEvent {
 enum CaptureResultStatus : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/frame_timeline_event.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/frame_timeline_event.pbzero.h
index 8fb5be9..54f9fb6 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/frame_timeline_event.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/frame_timeline_event.pbzero.h
@@ -23,10 +23,12 @@
 class FrameTimelineEvent_FrameEnd;
 namespace perfetto_pbzero_enum_FrameTimelineEvent {
 enum PredictionType : int32_t;
-}  // namespace perfetto_pbzero_enum_FrameTimelineEvent 
+}  // namespace perfetto_pbzero_enum_FrameTimelineEvent
+using FrameTimelineEvent_PredictionType = perfetto_pbzero_enum_FrameTimelineEvent::PredictionType;
 namespace perfetto_pbzero_enum_FrameTimelineEvent {
 enum PresentType : int32_t;
-}  // namespace perfetto_pbzero_enum_FrameTimelineEvent 
+}  // namespace perfetto_pbzero_enum_FrameTimelineEvent
+using FrameTimelineEvent_PresentType = perfetto_pbzero_enum_FrameTimelineEvent::PresentType;
 
 namespace perfetto_pbzero_enum_FrameTimelineEvent {
 enum JankType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/graphics_frame_event.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/graphics_frame_event.pbzero.h
index 3427fc5..8d318ca 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/graphics_frame_event.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/android/graphics_frame_event.pbzero.h
@@ -19,7 +19,8 @@
 class GraphicsFrameEvent_BufferEvent;
 namespace perfetto_pbzero_enum_GraphicsFrameEvent {
 enum BufferEventType : int32_t;
-}  // namespace perfetto_pbzero_enum_GraphicsFrameEvent 
+}  // namespace perfetto_pbzero_enum_GraphicsFrameEvent
+using GraphicsFrameEvent_BufferEventType = perfetto_pbzero_enum_GraphicsFrameEvent::BufferEventType;
 
 namespace perfetto_pbzero_enum_GraphicsFrameEvent {
 enum BufferEventType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/chrome/chrome_metadata.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/chrome/chrome_metadata.pbzero.h
index 911cfb5..7fb1ec4 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/chrome/chrome_metadata.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/chrome/chrome_metadata.pbzero.h
@@ -22,10 +22,12 @@
 class BackgroundTracingMetadata_TriggerRule_NamedRule;
 namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule_NamedRule {
 enum EventType : int32_t;
-}  // namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule_NamedRule 
+}  // namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule_NamedRule
+using BackgroundTracingMetadata_TriggerRule_NamedRule_EventType = perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule_NamedRule::EventType;
 namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule {
 enum TriggerType : int32_t;
-}  // namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule 
+}  // namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule
+using BackgroundTracingMetadata_TriggerRule_TriggerType = perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule::TriggerType;
 
 namespace perfetto_pbzero_enum_BackgroundTracingMetadata_TriggerRule {
 enum TriggerType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/chrome/chrome_trace_event.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/chrome/chrome_trace_event.pbzero.h
index bb384e0..81a3bfa 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/chrome/chrome_trace_event.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/chrome/chrome_trace_event.pbzero.h
@@ -24,10 +24,12 @@
 class ChromeTracedValue;
 namespace perfetto_pbzero_enum_ChromeLegacyJsonTrace {
 enum TraceType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeLegacyJsonTrace 
+}  // namespace perfetto_pbzero_enum_ChromeLegacyJsonTrace
+using ChromeLegacyJsonTrace_TraceType = perfetto_pbzero_enum_ChromeLegacyJsonTrace::TraceType;
 namespace perfetto_pbzero_enum_ChromeTracedValue {
 enum NestedType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeTracedValue 
+}  // namespace perfetto_pbzero_enum_ChromeTracedValue
+using ChromeTracedValue_NestedType = perfetto_pbzero_enum_ChromeTracedValue::NestedType;
 
 namespace perfetto_pbzero_enum_ChromeLegacyJsonTrace {
 enum TraceType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/filesystem/inode_file_map.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/filesystem/inode_file_map.pbzero.h
index 00dd63e..e0ff783 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/filesystem/inode_file_map.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/filesystem/inode_file_map.pbzero.h
@@ -19,7 +19,8 @@
 class InodeFileMap_Entry;
 namespace perfetto_pbzero_enum_InodeFileMap_Entry {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_InodeFileMap_Entry 
+}  // namespace perfetto_pbzero_enum_InodeFileMap_Entry
+using InodeFileMap_Entry_Type = perfetto_pbzero_enum_InodeFileMap_Entry::Type;
 
 namespace perfetto_pbzero_enum_InodeFileMap_Entry {
 enum Type : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/ftrace_event.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/ftrace_event.pbzero.h
index bd8a609..c76b47e 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/ftrace_event.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/ftrace_event.pbzero.h
@@ -87,6 +87,9 @@
 class DrmSchedProcessJobFtraceEvent;
 class DrmVblankEventDeliveredFtraceEvent;
 class DrmVblankEventFtraceEvent;
+class DsiCmdFifoStatusFtraceEvent;
+class DsiRxFtraceEvent;
+class DsiTxFtraceEvent;
 class Ext4AllocDaBlocksFtraceEvent;
 class Ext4AllocateBlocksFtraceEvent;
 class Ext4AllocateInodeFtraceEvent;
@@ -410,6 +413,12 @@
 class TrapRegFtraceEvent;
 class UfshcdClkGatingFtraceEvent;
 class UfshcdCommandFtraceEvent;
+class V4l2DqbufFtraceEvent;
+class V4l2QbufFtraceEvent;
+class Vb2V4l2BufDoneFtraceEvent;
+class Vb2V4l2BufQueueFtraceEvent;
+class Vb2V4l2DqbufFtraceEvent;
+class Vb2V4l2QbufFtraceEvent;
 class VgicUpdateIrqPendingFtraceEvent;
 class WakeupSourceActivateFtraceEvent;
 class WakeupSourceDeactivateFtraceEvent;
@@ -419,7 +428,7 @@
 class WorkqueueQueueWorkFtraceEvent;
 class ZeroFtraceEvent;
 
-class FtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/421, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+class FtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/430, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
  public:
   FtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit FtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -1232,6 +1241,24 @@
   ::protozero::ConstBytes f2fs_iostat_latency() const { return at<420>().as_bytes(); }
   bool has_sched_cpu_util_cfs() const { return at<421>().valid(); }
   ::protozero::ConstBytes sched_cpu_util_cfs() const { return at<421>().as_bytes(); }
+  bool has_v4l2_qbuf() const { return at<422>().valid(); }
+  ::protozero::ConstBytes v4l2_qbuf() const { return at<422>().as_bytes(); }
+  bool has_v4l2_dqbuf() const { return at<423>().valid(); }
+  ::protozero::ConstBytes v4l2_dqbuf() const { return at<423>().as_bytes(); }
+  bool has_vb2_v4l2_buf_queue() const { return at<424>().valid(); }
+  ::protozero::ConstBytes vb2_v4l2_buf_queue() const { return at<424>().as_bytes(); }
+  bool has_vb2_v4l2_buf_done() const { return at<425>().valid(); }
+  ::protozero::ConstBytes vb2_v4l2_buf_done() const { return at<425>().as_bytes(); }
+  bool has_vb2_v4l2_qbuf() const { return at<426>().valid(); }
+  ::protozero::ConstBytes vb2_v4l2_qbuf() const { return at<426>().as_bytes(); }
+  bool has_vb2_v4l2_dqbuf() const { return at<427>().valid(); }
+  ::protozero::ConstBytes vb2_v4l2_dqbuf() const { return at<427>().as_bytes(); }
+  bool has_dsi_cmd_fifo_status() const { return at<428>().valid(); }
+  ::protozero::ConstBytes dsi_cmd_fifo_status() const { return at<428>().as_bytes(); }
+  bool has_dsi_rx() const { return at<429>().valid(); }
+  ::protozero::ConstBytes dsi_rx() const { return at<429>().as_bytes(); }
+  bool has_dsi_tx() const { return at<430>().valid(); }
+  ::protozero::ConstBytes dsi_tx() const { return at<430>().as_bytes(); }
 };
 
 class FtraceEvent : public ::protozero::Message {
@@ -1642,6 +1669,15 @@
     kF2fsIostatFieldNumber = 419,
     kF2fsIostatLatencyFieldNumber = 420,
     kSchedCpuUtilCfsFieldNumber = 421,
+    kV4l2QbufFieldNumber = 422,
+    kV4l2DqbufFieldNumber = 423,
+    kVb2V4l2BufQueueFieldNumber = 424,
+    kVb2V4l2BufDoneFieldNumber = 425,
+    kVb2V4l2QbufFieldNumber = 426,
+    kVb2V4l2DqbufFieldNumber = 427,
+    kDsiCmdFifoStatusFieldNumber = 428,
+    kDsiRxFieldNumber = 429,
+    kDsiTxFieldNumber = 430,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.FtraceEvent"; }
 
@@ -10137,6 +10173,195 @@
     return BeginNestedMessage<T>(421);
   }
 
+
+  using FieldMetadata_V4l2Qbuf =
+    ::protozero::proto_utils::FieldMetadata<
+      422,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      V4l2QbufFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_V4l2Qbuf kV4l2Qbuf() { return {}; }
+  template <typename T = V4l2QbufFtraceEvent> T* set_v4l2_qbuf() {
+    return BeginNestedMessage<T>(422);
+  }
+
+
+  using FieldMetadata_V4l2Dqbuf =
+    ::protozero::proto_utils::FieldMetadata<
+      423,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      V4l2DqbufFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_V4l2Dqbuf kV4l2Dqbuf() { return {}; }
+  template <typename T = V4l2DqbufFtraceEvent> T* set_v4l2_dqbuf() {
+    return BeginNestedMessage<T>(423);
+  }
+
+
+  using FieldMetadata_Vb2V4l2BufQueue =
+    ::protozero::proto_utils::FieldMetadata<
+      424,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      Vb2V4l2BufQueueFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Vb2V4l2BufQueue kVb2V4l2BufQueue() { return {}; }
+  template <typename T = Vb2V4l2BufQueueFtraceEvent> T* set_vb2_v4l2_buf_queue() {
+    return BeginNestedMessage<T>(424);
+  }
+
+
+  using FieldMetadata_Vb2V4l2BufDone =
+    ::protozero::proto_utils::FieldMetadata<
+      425,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      Vb2V4l2BufDoneFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Vb2V4l2BufDone kVb2V4l2BufDone() { return {}; }
+  template <typename T = Vb2V4l2BufDoneFtraceEvent> T* set_vb2_v4l2_buf_done() {
+    return BeginNestedMessage<T>(425);
+  }
+
+
+  using FieldMetadata_Vb2V4l2Qbuf =
+    ::protozero::proto_utils::FieldMetadata<
+      426,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      Vb2V4l2QbufFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Vb2V4l2Qbuf kVb2V4l2Qbuf() { return {}; }
+  template <typename T = Vb2V4l2QbufFtraceEvent> T* set_vb2_v4l2_qbuf() {
+    return BeginNestedMessage<T>(426);
+  }
+
+
+  using FieldMetadata_Vb2V4l2Dqbuf =
+    ::protozero::proto_utils::FieldMetadata<
+      427,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      Vb2V4l2DqbufFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Vb2V4l2Dqbuf kVb2V4l2Dqbuf() { return {}; }
+  template <typename T = Vb2V4l2DqbufFtraceEvent> T* set_vb2_v4l2_dqbuf() {
+    return BeginNestedMessage<T>(427);
+  }
+
+
+  using FieldMetadata_DsiCmdFifoStatus =
+    ::protozero::proto_utils::FieldMetadata<
+      428,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      DsiCmdFifoStatusFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_DsiCmdFifoStatus kDsiCmdFifoStatus() { return {}; }
+  template <typename T = DsiCmdFifoStatusFtraceEvent> T* set_dsi_cmd_fifo_status() {
+    return BeginNestedMessage<T>(428);
+  }
+
+
+  using FieldMetadata_DsiRx =
+    ::protozero::proto_utils::FieldMetadata<
+      429,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      DsiRxFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_DsiRx kDsiRx() { return {}; }
+  template <typename T = DsiRxFtraceEvent> T* set_dsi_rx() {
+    return BeginNestedMessage<T>(429);
+  }
+
+
+  using FieldMetadata_DsiTx =
+    ::protozero::proto_utils::FieldMetadata<
+      430,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      DsiTxFtraceEvent,
+      FtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_DsiTx kDsiTx() { return {}; }
+  template <typename T = DsiTxFtraceEvent> T* set_dsi_tx() {
+    return BeginNestedMessage<T>(430);
+  }
+
 };
 
 } // Namespace.
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.pbzero.h
index 11fce59..7264c5f 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/ftrace_stats.pbzero.h
@@ -19,7 +19,8 @@
 class FtraceCpuStats;
 namespace perfetto_pbzero_enum_FtraceStats {
 enum Phase : int32_t;
-}  // namespace perfetto_pbzero_enum_FtraceStats 
+}  // namespace perfetto_pbzero_enum_FtraceStats
+using FtraceStats_Phase = perfetto_pbzero_enum_FtraceStats::Phase;
 
 namespace perfetto_pbzero_enum_FtraceStats {
 enum Phase : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/panel.pbzero.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/panel.pbzero.cc
new file mode 100644
index 0000000..4b4f59d
--- /dev/null
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/panel.pbzero.cc
@@ -0,0 +1 @@
+// Intentionally empty (crbug.com/998165)
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/panel.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/panel.pbzero.h
new file mode 100644
index 0000000..d2f96eb
--- /dev/null
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/panel.pbzero.h
@@ -0,0 +1,267 @@
+// Autogenerated by the ProtoZero compiler plugin. DO NOT EDIT.
+
+#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_TRACE_FTRACE_PANEL_PROTO_H_
+#define PERFETTO_PROTOS_PROTOS_PERFETTO_TRACE_FTRACE_PANEL_PROTO_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "perfetto/protozero/field_writer.h"
+#include "perfetto/protozero/message.h"
+#include "perfetto/protozero/packed_repeated_fields.h"
+#include "perfetto/protozero/proto_decoder.h"
+#include "perfetto/protozero/proto_utils.h"
+
+namespace perfetto {
+namespace protos {
+namespace pbzero {
+
+
+class DsiTxFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/3, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  DsiTxFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit DsiTxFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit DsiTxFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_last() const { return at<1>().valid(); }
+  uint32_t last() const { return at<1>().as_uint32(); }
+  bool has_tx_buf() const { return at<2>().valid(); }
+  uint32_t tx_buf() const { return at<2>().as_uint32(); }
+  bool has_type() const { return at<3>().valid(); }
+  uint32_t type() const { return at<3>().as_uint32(); }
+};
+
+class DsiTxFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = DsiTxFtraceEvent_Decoder;
+  enum : int32_t {
+    kLastFieldNumber = 1,
+    kTxBufFieldNumber = 2,
+    kTypeFieldNumber = 3,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.DsiTxFtraceEvent"; }
+
+
+  using FieldMetadata_Last =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiTxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Last kLast() { return {}; }
+  void set_last(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Last::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TxBuf =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiTxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TxBuf kTxBuf() { return {}; }
+  void set_tx_buf(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TxBuf::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Type =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiTxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Type kType() { return {}; }
+  void set_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Type::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class DsiRxFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/2, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  DsiRxFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit DsiRxFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit DsiRxFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_cmd() const { return at<1>().valid(); }
+  uint32_t cmd() const { return at<1>().as_uint32(); }
+  bool has_rx_buf() const { return at<2>().valid(); }
+  uint32_t rx_buf() const { return at<2>().as_uint32(); }
+};
+
+class DsiRxFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = DsiRxFtraceEvent_Decoder;
+  enum : int32_t {
+    kCmdFieldNumber = 1,
+    kRxBufFieldNumber = 2,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.DsiRxFtraceEvent"; }
+
+
+  using FieldMetadata_Cmd =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiRxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Cmd kCmd() { return {}; }
+  void set_cmd(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Cmd::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_RxBuf =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiRxFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_RxBuf kRxBuf() { return {}; }
+  void set_rx_buf(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_RxBuf::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class DsiCmdFifoStatusFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/2, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  DsiCmdFifoStatusFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit DsiCmdFifoStatusFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit DsiCmdFifoStatusFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_header() const { return at<1>().valid(); }
+  uint32_t header() const { return at<1>().as_uint32(); }
+  bool has_payload() const { return at<2>().valid(); }
+  uint32_t payload() const { return at<2>().as_uint32(); }
+};
+
+class DsiCmdFifoStatusFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = DsiCmdFifoStatusFtraceEvent_Decoder;
+  enum : int32_t {
+    kHeaderFieldNumber = 1,
+    kPayloadFieldNumber = 2,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.DsiCmdFifoStatusFtraceEvent"; }
+
+
+  using FieldMetadata_Header =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiCmdFifoStatusFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Header kHeader() { return {}; }
+  void set_header(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Header::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Payload =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      DsiCmdFifoStatusFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Payload kPayload() { return {}; }
+  void set_payload(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Payload::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+} // Namespace.
+} // Namespace.
+} // Namespace.
+#endif  // Include guard.
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/v4l2.pbzero.cc b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/v4l2.pbzero.cc
new file mode 100644
index 0000000..4b4f59d
--- /dev/null
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/v4l2.pbzero.cc
@@ -0,0 +1 @@
+// Intentionally empty (crbug.com/998165)
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/v4l2.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/v4l2.pbzero.h
new file mode 100644
index 0000000..c959c7b
--- /dev/null
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/ftrace/v4l2.pbzero.h
@@ -0,0 +1,2807 @@
+// Autogenerated by the ProtoZero compiler plugin. DO NOT EDIT.
+
+#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_TRACE_FTRACE_V4L2_PROTO_H_
+#define PERFETTO_PROTOS_PROTOS_PERFETTO_TRACE_FTRACE_V4L2_PROTO_H_
+
+#include <stddef.h>
+#include <stdint.h>
+
+#include "perfetto/protozero/field_writer.h"
+#include "perfetto/protozero/message.h"
+#include "perfetto/protozero/packed_repeated_fields.h"
+#include "perfetto/protozero/proto_decoder.h"
+#include "perfetto/protozero/proto_utils.h"
+
+namespace perfetto {
+namespace protos {
+namespace pbzero {
+
+
+class Vb2V4l2DqbufFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/15, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  Vb2V4l2DqbufFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit Vb2V4l2DqbufFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit Vb2V4l2DqbufFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_field() const { return at<1>().valid(); }
+  uint32_t field() const { return at<1>().as_uint32(); }
+  bool has_flags() const { return at<2>().valid(); }
+  uint32_t flags() const { return at<2>().as_uint32(); }
+  bool has_minor() const { return at<3>().valid(); }
+  int32_t minor() const { return at<3>().as_int32(); }
+  bool has_sequence() const { return at<4>().valid(); }
+  uint32_t sequence() const { return at<4>().as_uint32(); }
+  bool has_timecode_flags() const { return at<5>().valid(); }
+  uint32_t timecode_flags() const { return at<5>().as_uint32(); }
+  bool has_timecode_frames() const { return at<6>().valid(); }
+  uint32_t timecode_frames() const { return at<6>().as_uint32(); }
+  bool has_timecode_hours() const { return at<7>().valid(); }
+  uint32_t timecode_hours() const { return at<7>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<8>().valid(); }
+  uint32_t timecode_minutes() const { return at<8>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<9>().valid(); }
+  uint32_t timecode_seconds() const { return at<9>().as_uint32(); }
+  bool has_timecode_type() const { return at<10>().valid(); }
+  uint32_t timecode_type() const { return at<10>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<11>().valid(); }
+  uint32_t timecode_userbits0() const { return at<11>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<12>().valid(); }
+  uint32_t timecode_userbits1() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<13>().valid(); }
+  uint32_t timecode_userbits2() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<14>().valid(); }
+  uint32_t timecode_userbits3() const { return at<14>().as_uint32(); }
+  bool has_timestamp() const { return at<15>().valid(); }
+  int64_t timestamp() const { return at<15>().as_int64(); }
+};
+
+class Vb2V4l2DqbufFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = Vb2V4l2DqbufFtraceEvent_Decoder;
+  enum : int32_t {
+    kFieldFieldNumber = 1,
+    kFlagsFieldNumber = 2,
+    kMinorFieldNumber = 3,
+    kSequenceFieldNumber = 4,
+    kTimecodeFlagsFieldNumber = 5,
+    kTimecodeFramesFieldNumber = 6,
+    kTimecodeHoursFieldNumber = 7,
+    kTimecodeMinutesFieldNumber = 8,
+    kTimecodeSecondsFieldNumber = 9,
+    kTimecodeTypeFieldNumber = 10,
+    kTimecodeUserbits0FieldNumber = 11,
+    kTimecodeUserbits1FieldNumber = 12,
+    kTimecodeUserbits2FieldNumber = 13,
+    kTimecodeUserbits3FieldNumber = 14,
+    kTimestampFieldNumber = 15,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.Vb2V4l2DqbufFtraceEvent"; }
+
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      Vb2V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class Vb2V4l2QbufFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/15, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  Vb2V4l2QbufFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit Vb2V4l2QbufFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit Vb2V4l2QbufFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_field() const { return at<1>().valid(); }
+  uint32_t field() const { return at<1>().as_uint32(); }
+  bool has_flags() const { return at<2>().valid(); }
+  uint32_t flags() const { return at<2>().as_uint32(); }
+  bool has_minor() const { return at<3>().valid(); }
+  int32_t minor() const { return at<3>().as_int32(); }
+  bool has_sequence() const { return at<4>().valid(); }
+  uint32_t sequence() const { return at<4>().as_uint32(); }
+  bool has_timecode_flags() const { return at<5>().valid(); }
+  uint32_t timecode_flags() const { return at<5>().as_uint32(); }
+  bool has_timecode_frames() const { return at<6>().valid(); }
+  uint32_t timecode_frames() const { return at<6>().as_uint32(); }
+  bool has_timecode_hours() const { return at<7>().valid(); }
+  uint32_t timecode_hours() const { return at<7>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<8>().valid(); }
+  uint32_t timecode_minutes() const { return at<8>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<9>().valid(); }
+  uint32_t timecode_seconds() const { return at<9>().as_uint32(); }
+  bool has_timecode_type() const { return at<10>().valid(); }
+  uint32_t timecode_type() const { return at<10>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<11>().valid(); }
+  uint32_t timecode_userbits0() const { return at<11>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<12>().valid(); }
+  uint32_t timecode_userbits1() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<13>().valid(); }
+  uint32_t timecode_userbits2() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<14>().valid(); }
+  uint32_t timecode_userbits3() const { return at<14>().as_uint32(); }
+  bool has_timestamp() const { return at<15>().valid(); }
+  int64_t timestamp() const { return at<15>().as_int64(); }
+};
+
+class Vb2V4l2QbufFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = Vb2V4l2QbufFtraceEvent_Decoder;
+  enum : int32_t {
+    kFieldFieldNumber = 1,
+    kFlagsFieldNumber = 2,
+    kMinorFieldNumber = 3,
+    kSequenceFieldNumber = 4,
+    kTimecodeFlagsFieldNumber = 5,
+    kTimecodeFramesFieldNumber = 6,
+    kTimecodeHoursFieldNumber = 7,
+    kTimecodeMinutesFieldNumber = 8,
+    kTimecodeSecondsFieldNumber = 9,
+    kTimecodeTypeFieldNumber = 10,
+    kTimecodeUserbits0FieldNumber = 11,
+    kTimecodeUserbits1FieldNumber = 12,
+    kTimecodeUserbits2FieldNumber = 13,
+    kTimecodeUserbits3FieldNumber = 14,
+    kTimestampFieldNumber = 15,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.Vb2V4l2QbufFtraceEvent"; }
+
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      Vb2V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class Vb2V4l2BufDoneFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/15, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  Vb2V4l2BufDoneFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit Vb2V4l2BufDoneFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit Vb2V4l2BufDoneFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_field() const { return at<1>().valid(); }
+  uint32_t field() const { return at<1>().as_uint32(); }
+  bool has_flags() const { return at<2>().valid(); }
+  uint32_t flags() const { return at<2>().as_uint32(); }
+  bool has_minor() const { return at<3>().valid(); }
+  int32_t minor() const { return at<3>().as_int32(); }
+  bool has_sequence() const { return at<4>().valid(); }
+  uint32_t sequence() const { return at<4>().as_uint32(); }
+  bool has_timecode_flags() const { return at<5>().valid(); }
+  uint32_t timecode_flags() const { return at<5>().as_uint32(); }
+  bool has_timecode_frames() const { return at<6>().valid(); }
+  uint32_t timecode_frames() const { return at<6>().as_uint32(); }
+  bool has_timecode_hours() const { return at<7>().valid(); }
+  uint32_t timecode_hours() const { return at<7>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<8>().valid(); }
+  uint32_t timecode_minutes() const { return at<8>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<9>().valid(); }
+  uint32_t timecode_seconds() const { return at<9>().as_uint32(); }
+  bool has_timecode_type() const { return at<10>().valid(); }
+  uint32_t timecode_type() const { return at<10>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<11>().valid(); }
+  uint32_t timecode_userbits0() const { return at<11>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<12>().valid(); }
+  uint32_t timecode_userbits1() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<13>().valid(); }
+  uint32_t timecode_userbits2() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<14>().valid(); }
+  uint32_t timecode_userbits3() const { return at<14>().as_uint32(); }
+  bool has_timestamp() const { return at<15>().valid(); }
+  int64_t timestamp() const { return at<15>().as_int64(); }
+};
+
+class Vb2V4l2BufDoneFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = Vb2V4l2BufDoneFtraceEvent_Decoder;
+  enum : int32_t {
+    kFieldFieldNumber = 1,
+    kFlagsFieldNumber = 2,
+    kMinorFieldNumber = 3,
+    kSequenceFieldNumber = 4,
+    kTimecodeFlagsFieldNumber = 5,
+    kTimecodeFramesFieldNumber = 6,
+    kTimecodeHoursFieldNumber = 7,
+    kTimecodeMinutesFieldNumber = 8,
+    kTimecodeSecondsFieldNumber = 9,
+    kTimecodeTypeFieldNumber = 10,
+    kTimecodeUserbits0FieldNumber = 11,
+    kTimecodeUserbits1FieldNumber = 12,
+    kTimecodeUserbits2FieldNumber = 13,
+    kTimecodeUserbits3FieldNumber = 14,
+    kTimestampFieldNumber = 15,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.Vb2V4l2BufDoneFtraceEvent"; }
+
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      Vb2V4l2BufDoneFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class Vb2V4l2BufQueueFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/15, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  Vb2V4l2BufQueueFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit Vb2V4l2BufQueueFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit Vb2V4l2BufQueueFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_field() const { return at<1>().valid(); }
+  uint32_t field() const { return at<1>().as_uint32(); }
+  bool has_flags() const { return at<2>().valid(); }
+  uint32_t flags() const { return at<2>().as_uint32(); }
+  bool has_minor() const { return at<3>().valid(); }
+  int32_t minor() const { return at<3>().as_int32(); }
+  bool has_sequence() const { return at<4>().valid(); }
+  uint32_t sequence() const { return at<4>().as_uint32(); }
+  bool has_timecode_flags() const { return at<5>().valid(); }
+  uint32_t timecode_flags() const { return at<5>().as_uint32(); }
+  bool has_timecode_frames() const { return at<6>().valid(); }
+  uint32_t timecode_frames() const { return at<6>().as_uint32(); }
+  bool has_timecode_hours() const { return at<7>().valid(); }
+  uint32_t timecode_hours() const { return at<7>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<8>().valid(); }
+  uint32_t timecode_minutes() const { return at<8>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<9>().valid(); }
+  uint32_t timecode_seconds() const { return at<9>().as_uint32(); }
+  bool has_timecode_type() const { return at<10>().valid(); }
+  uint32_t timecode_type() const { return at<10>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<11>().valid(); }
+  uint32_t timecode_userbits0() const { return at<11>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<12>().valid(); }
+  uint32_t timecode_userbits1() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<13>().valid(); }
+  uint32_t timecode_userbits2() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<14>().valid(); }
+  uint32_t timecode_userbits3() const { return at<14>().as_uint32(); }
+  bool has_timestamp() const { return at<15>().valid(); }
+  int64_t timestamp() const { return at<15>().as_int64(); }
+};
+
+class Vb2V4l2BufQueueFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = Vb2V4l2BufQueueFtraceEvent_Decoder;
+  enum : int32_t {
+    kFieldFieldNumber = 1,
+    kFlagsFieldNumber = 2,
+    kMinorFieldNumber = 3,
+    kSequenceFieldNumber = 4,
+    kTimecodeFlagsFieldNumber = 5,
+    kTimecodeFramesFieldNumber = 6,
+    kTimecodeHoursFieldNumber = 7,
+    kTimecodeMinutesFieldNumber = 8,
+    kTimecodeSecondsFieldNumber = 9,
+    kTimecodeTypeFieldNumber = 10,
+    kTimecodeUserbits0FieldNumber = 11,
+    kTimecodeUserbits1FieldNumber = 12,
+    kTimecodeUserbits2FieldNumber = 13,
+    kTimecodeUserbits3FieldNumber = 14,
+    kTimestampFieldNumber = 15,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.Vb2V4l2BufQueueFtraceEvent"; }
+
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      Vb2V4l2BufQueueFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class V4l2DqbufFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/18, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  V4l2DqbufFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit V4l2DqbufFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit V4l2DqbufFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_bytesused() const { return at<1>().valid(); }
+  uint32_t bytesused() const { return at<1>().as_uint32(); }
+  bool has_field() const { return at<2>().valid(); }
+  uint32_t field() const { return at<2>().as_uint32(); }
+  bool has_flags() const { return at<3>().valid(); }
+  uint32_t flags() const { return at<3>().as_uint32(); }
+  bool has_index() const { return at<4>().valid(); }
+  uint32_t index() const { return at<4>().as_uint32(); }
+  bool has_minor() const { return at<5>().valid(); }
+  int32_t minor() const { return at<5>().as_int32(); }
+  bool has_sequence() const { return at<6>().valid(); }
+  uint32_t sequence() const { return at<6>().as_uint32(); }
+  bool has_timecode_flags() const { return at<7>().valid(); }
+  uint32_t timecode_flags() const { return at<7>().as_uint32(); }
+  bool has_timecode_frames() const { return at<8>().valid(); }
+  uint32_t timecode_frames() const { return at<8>().as_uint32(); }
+  bool has_timecode_hours() const { return at<9>().valid(); }
+  uint32_t timecode_hours() const { return at<9>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<10>().valid(); }
+  uint32_t timecode_minutes() const { return at<10>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<11>().valid(); }
+  uint32_t timecode_seconds() const { return at<11>().as_uint32(); }
+  bool has_timecode_type() const { return at<12>().valid(); }
+  uint32_t timecode_type() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<13>().valid(); }
+  uint32_t timecode_userbits0() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<14>().valid(); }
+  uint32_t timecode_userbits1() const { return at<14>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<15>().valid(); }
+  uint32_t timecode_userbits2() const { return at<15>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<16>().valid(); }
+  uint32_t timecode_userbits3() const { return at<16>().as_uint32(); }
+  bool has_timestamp() const { return at<17>().valid(); }
+  int64_t timestamp() const { return at<17>().as_int64(); }
+  bool has_type() const { return at<18>().valid(); }
+  uint32_t type() const { return at<18>().as_uint32(); }
+};
+
+class V4l2DqbufFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = V4l2DqbufFtraceEvent_Decoder;
+  enum : int32_t {
+    kBytesusedFieldNumber = 1,
+    kFieldFieldNumber = 2,
+    kFlagsFieldNumber = 3,
+    kIndexFieldNumber = 4,
+    kMinorFieldNumber = 5,
+    kSequenceFieldNumber = 6,
+    kTimecodeFlagsFieldNumber = 7,
+    kTimecodeFramesFieldNumber = 8,
+    kTimecodeHoursFieldNumber = 9,
+    kTimecodeMinutesFieldNumber = 10,
+    kTimecodeSecondsFieldNumber = 11,
+    kTimecodeTypeFieldNumber = 12,
+    kTimecodeUserbits0FieldNumber = 13,
+    kTimecodeUserbits1FieldNumber = 14,
+    kTimecodeUserbits2FieldNumber = 15,
+    kTimecodeUserbits3FieldNumber = 16,
+    kTimestampFieldNumber = 17,
+    kTypeFieldNumber = 18,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.V4l2DqbufFtraceEvent"; }
+
+
+  using FieldMetadata_Bytesused =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Bytesused kBytesused() { return {}; }
+  void set_bytesused(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Bytesused::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Index =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Index kIndex() { return {}; }
+  void set_index(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Index::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      16,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      17,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Type =
+    ::protozero::proto_utils::FieldMetadata<
+      18,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2DqbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Type kType() { return {}; }
+  void set_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Type::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+class V4l2QbufFtraceEvent_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/18, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+ public:
+  V4l2QbufFtraceEvent_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit V4l2QbufFtraceEvent_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit V4l2QbufFtraceEvent_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_bytesused() const { return at<1>().valid(); }
+  uint32_t bytesused() const { return at<1>().as_uint32(); }
+  bool has_field() const { return at<2>().valid(); }
+  uint32_t field() const { return at<2>().as_uint32(); }
+  bool has_flags() const { return at<3>().valid(); }
+  uint32_t flags() const { return at<3>().as_uint32(); }
+  bool has_index() const { return at<4>().valid(); }
+  uint32_t index() const { return at<4>().as_uint32(); }
+  bool has_minor() const { return at<5>().valid(); }
+  int32_t minor() const { return at<5>().as_int32(); }
+  bool has_sequence() const { return at<6>().valid(); }
+  uint32_t sequence() const { return at<6>().as_uint32(); }
+  bool has_timecode_flags() const { return at<7>().valid(); }
+  uint32_t timecode_flags() const { return at<7>().as_uint32(); }
+  bool has_timecode_frames() const { return at<8>().valid(); }
+  uint32_t timecode_frames() const { return at<8>().as_uint32(); }
+  bool has_timecode_hours() const { return at<9>().valid(); }
+  uint32_t timecode_hours() const { return at<9>().as_uint32(); }
+  bool has_timecode_minutes() const { return at<10>().valid(); }
+  uint32_t timecode_minutes() const { return at<10>().as_uint32(); }
+  bool has_timecode_seconds() const { return at<11>().valid(); }
+  uint32_t timecode_seconds() const { return at<11>().as_uint32(); }
+  bool has_timecode_type() const { return at<12>().valid(); }
+  uint32_t timecode_type() const { return at<12>().as_uint32(); }
+  bool has_timecode_userbits0() const { return at<13>().valid(); }
+  uint32_t timecode_userbits0() const { return at<13>().as_uint32(); }
+  bool has_timecode_userbits1() const { return at<14>().valid(); }
+  uint32_t timecode_userbits1() const { return at<14>().as_uint32(); }
+  bool has_timecode_userbits2() const { return at<15>().valid(); }
+  uint32_t timecode_userbits2() const { return at<15>().as_uint32(); }
+  bool has_timecode_userbits3() const { return at<16>().valid(); }
+  uint32_t timecode_userbits3() const { return at<16>().as_uint32(); }
+  bool has_timestamp() const { return at<17>().valid(); }
+  int64_t timestamp() const { return at<17>().as_int64(); }
+  bool has_type() const { return at<18>().valid(); }
+  uint32_t type() const { return at<18>().as_uint32(); }
+};
+
+class V4l2QbufFtraceEvent : public ::protozero::Message {
+ public:
+  using Decoder = V4l2QbufFtraceEvent_Decoder;
+  enum : int32_t {
+    kBytesusedFieldNumber = 1,
+    kFieldFieldNumber = 2,
+    kFlagsFieldNumber = 3,
+    kIndexFieldNumber = 4,
+    kMinorFieldNumber = 5,
+    kSequenceFieldNumber = 6,
+    kTimecodeFlagsFieldNumber = 7,
+    kTimecodeFramesFieldNumber = 8,
+    kTimecodeHoursFieldNumber = 9,
+    kTimecodeMinutesFieldNumber = 10,
+    kTimecodeSecondsFieldNumber = 11,
+    kTimecodeTypeFieldNumber = 12,
+    kTimecodeUserbits0FieldNumber = 13,
+    kTimecodeUserbits1FieldNumber = 14,
+    kTimecodeUserbits2FieldNumber = 15,
+    kTimecodeUserbits3FieldNumber = 16,
+    kTimestampFieldNumber = 17,
+    kTypeFieldNumber = 18,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.V4l2QbufFtraceEvent"; }
+
+
+  using FieldMetadata_Bytesused =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Bytesused kBytesused() { return {}; }
+  void set_bytesused(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Bytesused::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Field =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Field kField() { return {}; }
+  void set_field(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Field::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Flags =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Flags kFlags() { return {}; }
+  void set_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Flags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Index =
+    ::protozero::proto_utils::FieldMetadata<
+      4,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Index kIndex() { return {}; }
+  void set_index(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Index::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Minor =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt32,
+      int32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Minor kMinor() { return {}; }
+  void set_minor(int32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Minor::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Sequence =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Sequence kSequence() { return {}; }
+  void set_sequence(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Sequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFlags =
+    ::protozero::proto_utils::FieldMetadata<
+      7,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFlags kTimecodeFlags() { return {}; }
+  void set_timecode_flags(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFlags::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeFrames =
+    ::protozero::proto_utils::FieldMetadata<
+      8,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeFrames kTimecodeFrames() { return {}; }
+  void set_timecode_frames(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeFrames::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeHours =
+    ::protozero::proto_utils::FieldMetadata<
+      9,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeHours kTimecodeHours() { return {}; }
+  void set_timecode_hours(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeHours::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeMinutes =
+    ::protozero::proto_utils::FieldMetadata<
+      10,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeMinutes kTimecodeMinutes() { return {}; }
+  void set_timecode_minutes(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeMinutes::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeSeconds =
+    ::protozero::proto_utils::FieldMetadata<
+      11,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeSeconds kTimecodeSeconds() { return {}; }
+  void set_timecode_seconds(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeSeconds::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeType =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeType kTimecodeType() { return {}; }
+  void set_timecode_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeType::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits0 =
+    ::protozero::proto_utils::FieldMetadata<
+      13,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits0 kTimecodeUserbits0() { return {}; }
+  void set_timecode_userbits0(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits0::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits1 =
+    ::protozero::proto_utils::FieldMetadata<
+      14,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits1 kTimecodeUserbits1() { return {}; }
+  void set_timecode_userbits1(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits1::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits2 =
+    ::protozero::proto_utils::FieldMetadata<
+      15,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits2 kTimecodeUserbits2() { return {}; }
+  void set_timecode_userbits2(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits2::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_TimecodeUserbits3 =
+    ::protozero::proto_utils::FieldMetadata<
+      16,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_TimecodeUserbits3 kTimecodeUserbits3() { return {}; }
+  void set_timecode_userbits3(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_TimecodeUserbits3::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Timestamp =
+    ::protozero::proto_utils::FieldMetadata<
+      17,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kInt64,
+      int64_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Timestamp kTimestamp() { return {}; }
+  void set_timestamp(int64_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Timestamp::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kInt64>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Type =
+    ::protozero::proto_utils::FieldMetadata<
+      18,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      V4l2QbufFtraceEvent>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Type kType() { return {}; }
+  void set_type(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_Type::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
+};
+
+} // Namespace.
+} // Namespace.
+} // Namespace.
+#endif  // Include guard.
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/gpu_log.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/gpu_log.pbzero.h
index 051894e..f896ecb 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/gpu_log.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/gpu_log.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_GpuLog {
 enum Severity : int32_t;
-}  // namespace perfetto_pbzero_enum_GpuLog 
+}  // namespace perfetto_pbzero_enum_GpuLog
+using GpuLog_Severity = perfetto_pbzero_enum_GpuLog::Severity;
 
 namespace perfetto_pbzero_enum_GpuLog {
 enum Severity : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/gpu_render_stage_event.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/gpu_render_stage_event.pbzero.h
index 3f35b5c..1f7d219 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/gpu_render_stage_event.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/gpu_render_stage_event.pbzero.h
@@ -22,10 +22,12 @@
 class GpuRenderStageEvent_Specifications_Description;
 namespace perfetto_pbzero_enum_InternedGpuRenderStageSpecification {
 enum RenderStageCategory : int32_t;
-}  // namespace perfetto_pbzero_enum_InternedGpuRenderStageSpecification 
+}  // namespace perfetto_pbzero_enum_InternedGpuRenderStageSpecification
+using InternedGpuRenderStageSpecification_RenderStageCategory = perfetto_pbzero_enum_InternedGpuRenderStageSpecification::RenderStageCategory;
 namespace perfetto_pbzero_enum_InternedGraphicsContext {
 enum Api : int32_t;
-}  // namespace perfetto_pbzero_enum_InternedGraphicsContext 
+}  // namespace perfetto_pbzero_enum_InternedGraphicsContext
+using InternedGraphicsContext_Api = perfetto_pbzero_enum_InternedGraphicsContext::Api;
 
 namespace perfetto_pbzero_enum_InternedGpuRenderStageSpecification {
 enum RenderStageCategory : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/vulkan_memory_event.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/vulkan_memory_event.pbzero.h
index e711b4c..f16bfbf 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/vulkan_memory_event.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/gpu/vulkan_memory_event.pbzero.h
@@ -19,13 +19,16 @@
 class VulkanMemoryEventAnnotation;
 namespace perfetto_pbzero_enum_VulkanMemoryEvent {
 enum AllocationScope : int32_t;
-}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent 
+}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent
+using VulkanMemoryEvent_AllocationScope = perfetto_pbzero_enum_VulkanMemoryEvent::AllocationScope;
 namespace perfetto_pbzero_enum_VulkanMemoryEvent {
 enum Operation : int32_t;
-}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent 
+}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent
+using VulkanMemoryEvent_Operation = perfetto_pbzero_enum_VulkanMemoryEvent::Operation;
 namespace perfetto_pbzero_enum_VulkanMemoryEvent {
 enum Source : int32_t;
-}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent 
+}  // namespace perfetto_pbzero_enum_VulkanMemoryEvent
+using VulkanMemoryEvent_Source = perfetto_pbzero_enum_VulkanMemoryEvent::Source;
 
 namespace perfetto_pbzero_enum_VulkanMemoryEvent {
 enum Source : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/memory_graph.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/memory_graph.pbzero.h
index 2c96f8f..3136ca1 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/memory_graph.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/memory_graph.pbzero.h
@@ -22,10 +22,12 @@
 class MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry;
 namespace perfetto_pbzero_enum_MemoryTrackerSnapshot {
 enum LevelOfDetail : int32_t;
-}  // namespace perfetto_pbzero_enum_MemoryTrackerSnapshot 
+}  // namespace perfetto_pbzero_enum_MemoryTrackerSnapshot
+using MemoryTrackerSnapshot_LevelOfDetail = perfetto_pbzero_enum_MemoryTrackerSnapshot::LevelOfDetail;
 namespace perfetto_pbzero_enum_MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry {
 enum Units : int32_t;
-}  // namespace perfetto_pbzero_enum_MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry 
+}  // namespace perfetto_pbzero_enum_MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry
+using MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry_Units = perfetto_pbzero_enum_MemoryTrackerSnapshot_ProcessSnapshot_MemoryNode_MemoryNodeEntry::Units;
 
 namespace perfetto_pbzero_enum_MemoryTrackerSnapshot {
 enum LevelOfDetail : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/power/battery_counters.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/power/battery_counters.pbzero.h
index 3dbf5d4..c0d9fcb 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/power/battery_counters.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/power/battery_counters.pbzero.h
@@ -17,7 +17,7 @@
 namespace pbzero {
 
 
-class BatteryCounters_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/4, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+class BatteryCounters_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/5, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
  public:
   BatteryCounters_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit BatteryCounters_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -30,6 +30,8 @@
   int64_t current_ua() const { return at<3>().as_int64(); }
   bool has_current_avg_ua() const { return at<4>().valid(); }
   int64_t current_avg_ua() const { return at<4>().as_int64(); }
+  bool has_name() const { return at<5>().valid(); }
+  ::protozero::ConstChars name() const { return at<5>().as_string(); }
 };
 
 class BatteryCounters : public ::protozero::Message {
@@ -40,6 +42,7 @@
     kCapacityPercentFieldNumber = 2,
     kCurrentUaFieldNumber = 3,
     kCurrentAvgUaFieldNumber = 4,
+    kNameFieldNumber = 5,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.BatteryCounters"; }
 
@@ -143,6 +146,37 @@
       ::protozero::proto_utils::ProtoSchemaType::kInt64>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_Name =
+    ::protozero::proto_utils::FieldMetadata<
+      5,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kString,
+      std::string,
+      BatteryCounters>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Name kName() { return {}; }
+  void set_name(const char* data, size_t size) {
+    AppendBytes(FieldMetadata_Name::kFieldId, data, size);
+  }
+  void set_name(::protozero::ConstChars chars) {
+    AppendBytes(FieldMetadata_Name::kFieldId, chars.data, chars.size);
+  }
+  void set_name(std::string value) {
+    static constexpr uint32_t field_id = FieldMetadata_Name::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kString>
+        ::Append(*this, field_id, value);
+  }
 };
 
 } // Namespace.
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/profiling/heap_graph.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/profiling/heap_graph.pbzero.h
index c7697b0..5140b56 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/profiling/heap_graph.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/profiling/heap_graph.pbzero.h
@@ -23,10 +23,12 @@
 class InternedString;
 namespace perfetto_pbzero_enum_HeapGraphRoot {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_HeapGraphRoot 
+}  // namespace perfetto_pbzero_enum_HeapGraphRoot
+using HeapGraphRoot_Type = perfetto_pbzero_enum_HeapGraphRoot::Type;
 namespace perfetto_pbzero_enum_HeapGraphType {
 enum Kind : int32_t;
-}  // namespace perfetto_pbzero_enum_HeapGraphType 
+}  // namespace perfetto_pbzero_enum_HeapGraphType
+using HeapGraphType_Kind = perfetto_pbzero_enum_HeapGraphType::Kind;
 
 namespace perfetto_pbzero_enum_HeapGraphType {
 enum Kind : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/profiling/profile_packet.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/profiling/profile_packet.pbzero.h
index dfe4d53..d76eac7 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/profiling/profile_packet.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/profiling/profile_packet.pbzero.h
@@ -29,19 +29,24 @@
 class ProfilePacket_ProcessStats;
 namespace perfetto_pbzero_enum_PerfSample_ProducerEvent {
 enum DataSourceStopReason : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfSample_ProducerEvent 
+}  // namespace perfetto_pbzero_enum_PerfSample_ProducerEvent
+using PerfSample_ProducerEvent_DataSourceStopReason = perfetto_pbzero_enum_PerfSample_ProducerEvent::DataSourceStopReason;
 namespace perfetto_pbzero_enum_PerfSample {
 enum SampleSkipReason : int32_t;
-}  // namespace perfetto_pbzero_enum_PerfSample 
+}  // namespace perfetto_pbzero_enum_PerfSample
+using PerfSample_SampleSkipReason = perfetto_pbzero_enum_PerfSample::SampleSkipReason;
 namespace perfetto_pbzero_enum_ProfilePacket_ProcessHeapSamples {
 enum ClientError : int32_t;
-}  // namespace perfetto_pbzero_enum_ProfilePacket_ProcessHeapSamples 
+}  // namespace perfetto_pbzero_enum_ProfilePacket_ProcessHeapSamples
+using ProfilePacket_ProcessHeapSamples_ClientError = perfetto_pbzero_enum_ProfilePacket_ProcessHeapSamples::ClientError;
 namespace perfetto_pbzero_enum_Profiling {
 enum CpuMode : int32_t;
-}  // namespace perfetto_pbzero_enum_Profiling 
+}  // namespace perfetto_pbzero_enum_Profiling
+using Profiling_CpuMode = perfetto_pbzero_enum_Profiling::CpuMode;
 namespace perfetto_pbzero_enum_Profiling {
 enum StackUnwindError : int32_t;
-}  // namespace perfetto_pbzero_enum_Profiling 
+}  // namespace perfetto_pbzero_enum_Profiling
+using Profiling_StackUnwindError = perfetto_pbzero_enum_Profiling::StackUnwindError;
 
 namespace perfetto_pbzero_enum_PerfSample {
 enum SampleSkipReason : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/sys_stats/sys_stats.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/sys_stats/sys_stats.pbzero.h
index a5cfcb3..eabccfb 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/sys_stats/sys_stats.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/sys_stats/sys_stats.pbzero.h
@@ -16,6 +16,7 @@
 namespace protos {
 namespace pbzero {
 
+class SysStats_BuddyInfo;
 class SysStats_CpuTimes;
 class SysStats_DevfreqValue;
 class SysStats_InterruptCount;
@@ -24,7 +25,7 @@
 enum MeminfoCounters : int32_t;
 enum VmstatCounters : int32_t;
 
-class SysStats_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/11, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
+class SysStats_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/12, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
  public:
   SysStats_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit SysStats_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -51,6 +52,8 @@
   ::protozero::RepeatedFieldIterator<::protozero::ConstBytes> devfreq() const { return GetRepeated<::protozero::ConstBytes>(10); }
   bool has_cpufreq_khz() const { return at<11>().valid(); }
   ::protozero::RepeatedFieldIterator<uint32_t> cpufreq_khz() const { return GetRepeated<uint32_t>(11); }
+  bool has_buddy_info() const { return at<12>().valid(); }
+  ::protozero::RepeatedFieldIterator<::protozero::ConstBytes> buddy_info() const { return GetRepeated<::protozero::ConstBytes>(12); }
 };
 
 class SysStats : public ::protozero::Message {
@@ -68,6 +71,7 @@
     kCollectionEndTimestampFieldNumber = 9,
     kDevfreqFieldNumber = 10,
     kCpufreqKhzFieldNumber = 11,
+    kBuddyInfoFieldNumber = 12,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.SysStats"; }
 
@@ -76,6 +80,7 @@
   using CpuTimes = ::perfetto::protos::pbzero::SysStats_CpuTimes;
   using InterruptCount = ::perfetto::protos::pbzero::SysStats_InterruptCount;
   using DevfreqValue = ::perfetto::protos::pbzero::SysStats_DevfreqValue;
+  using BuddyInfo = ::perfetto::protos::pbzero::SysStats_BuddyInfo;
 
   using FieldMetadata_Meminfo =
     ::protozero::proto_utils::FieldMetadata<
@@ -327,6 +332,139 @@
       ::protozero::proto_utils::ProtoSchemaType::kUint32>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_BuddyInfo =
+    ::protozero::proto_utils::FieldMetadata<
+      12,
+      ::protozero::proto_utils::RepetitionType::kRepeatedNotPacked,
+      ::protozero::proto_utils::ProtoSchemaType::kMessage,
+      SysStats_BuddyInfo,
+      SysStats>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_BuddyInfo kBuddyInfo() { return {}; }
+  template <typename T = SysStats_BuddyInfo> T* add_buddy_info() {
+    return BeginNestedMessage<T>(12);
+  }
+
+};
+
+class SysStats_BuddyInfo_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/3, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
+ public:
+  SysStats_BuddyInfo_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
+  explicit SysStats_BuddyInfo_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
+  explicit SysStats_BuddyInfo_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
+  bool has_node() const { return at<1>().valid(); }
+  ::protozero::ConstChars node() const { return at<1>().as_string(); }
+  bool has_zone() const { return at<2>().valid(); }
+  ::protozero::ConstChars zone() const { return at<2>().as_string(); }
+  bool has_order_pages() const { return at<3>().valid(); }
+  ::protozero::RepeatedFieldIterator<uint32_t> order_pages() const { return GetRepeated<uint32_t>(3); }
+};
+
+class SysStats_BuddyInfo : public ::protozero::Message {
+ public:
+  using Decoder = SysStats_BuddyInfo_Decoder;
+  enum : int32_t {
+    kNodeFieldNumber = 1,
+    kZoneFieldNumber = 2,
+    kOrderPagesFieldNumber = 3,
+  };
+  static constexpr const char* GetName() { return ".perfetto.protos.SysStats.BuddyInfo"; }
+
+
+  using FieldMetadata_Node =
+    ::protozero::proto_utils::FieldMetadata<
+      1,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kString,
+      std::string,
+      SysStats_BuddyInfo>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Node kNode() { return {}; }
+  void set_node(const char* data, size_t size) {
+    AppendBytes(FieldMetadata_Node::kFieldId, data, size);
+  }
+  void set_node(::protozero::ConstChars chars) {
+    AppendBytes(FieldMetadata_Node::kFieldId, chars.data, chars.size);
+  }
+  void set_node(std::string value) {
+    static constexpr uint32_t field_id = FieldMetadata_Node::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kString>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_Zone =
+    ::protozero::proto_utils::FieldMetadata<
+      2,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kString,
+      std::string,
+      SysStats_BuddyInfo>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_Zone kZone() { return {}; }
+  void set_zone(const char* data, size_t size) {
+    AppendBytes(FieldMetadata_Zone::kFieldId, data, size);
+  }
+  void set_zone(::protozero::ConstChars chars) {
+    AppendBytes(FieldMetadata_Zone::kFieldId, chars.data, chars.size);
+  }
+  void set_zone(std::string value) {
+    static constexpr uint32_t field_id = FieldMetadata_Zone::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kString>
+        ::Append(*this, field_id, value);
+  }
+
+  using FieldMetadata_OrderPages =
+    ::protozero::proto_utils::FieldMetadata<
+      3,
+      ::protozero::proto_utils::RepetitionType::kRepeatedNotPacked,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      SysStats_BuddyInfo>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_OrderPages kOrderPages() { return {}; }
+  void add_order_pages(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_OrderPages::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
 };
 
 class SysStats_DevfreqValue_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/2, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/system_info.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/system_info.pbzero.h
index b37f28e..2fc3463 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/system_info.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/system_info.pbzero.h
@@ -18,7 +18,7 @@
 
 class Utsname;
 
-class SystemInfo_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/5, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
+class SystemInfo_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/6, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
  public:
   SystemInfo_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
   explicit SystemInfo_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
@@ -33,6 +33,8 @@
   ::protozero::ConstChars tracing_service_version() const { return at<4>().as_string(); }
   bool has_android_sdk_version() const { return at<5>().valid(); }
   uint64_t android_sdk_version() const { return at<5>().as_uint64(); }
+  bool has_page_size() const { return at<6>().valid(); }
+  uint32_t page_size() const { return at<6>().as_uint32(); }
 };
 
 class SystemInfo : public ::protozero::Message {
@@ -44,6 +46,7 @@
     kHzFieldNumber = 3,
     kTracingServiceVersionFieldNumber = 4,
     kAndroidSdkVersionFieldNumber = 5,
+    kPageSizeFieldNumber = 6,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.SystemInfo"; }
 
@@ -180,6 +183,31 @@
       ::protozero::proto_utils::ProtoSchemaType::kUint64>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_PageSize =
+    ::protozero::proto_utils::FieldMetadata<
+      6,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kUint32,
+      uint32_t,
+      SystemInfo>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_PageSize kPageSize() { return {}; }
+  void set_page_size(uint32_t value) {
+    static constexpr uint32_t field_id = FieldMetadata_PageSize::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kUint32>
+        ::Append(*this, field_id, value);
+  }
 };
 
 class Utsname_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/4, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/trace_packet.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/trace_packet.pbzero.h
index 2768a83..e11824e 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/trace_packet.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/trace_packet.pbzero.h
@@ -242,6 +242,8 @@
   ::protozero::ConstBytes trace_packet_defaults() const { return at<59>().as_bytes(); }
   bool has_previous_packet_dropped() const { return at<42>().valid(); }
   bool previous_packet_dropped() const { return at<42>().as_bool(); }
+  bool has_first_packet_on_sequence() const { return at<87>().valid(); }
+  bool first_packet_on_sequence() const { return at<87>().as_bool(); }
 };
 
 class TracePacket : public ::protozero::Message {
@@ -315,6 +317,7 @@
     kIncrementalStateClearedFieldNumber = 41,
     kTracePacketDefaultsFieldNumber = 59,
     kPreviousPacketDroppedFieldNumber = 42,
+    kFirstPacketOnSequenceFieldNumber = 87,
   };
   static constexpr const char* GetName() { return ".perfetto.protos.TracePacket"; }
 
@@ -1785,6 +1788,31 @@
       ::protozero::proto_utils::ProtoSchemaType::kBool>
         ::Append(*this, field_id, value);
   }
+
+  using FieldMetadata_FirstPacketOnSequence =
+    ::protozero::proto_utils::FieldMetadata<
+      87,
+      ::protozero::proto_utils::RepetitionType::kNotRepeated,
+      ::protozero::proto_utils::ProtoSchemaType::kBool,
+      bool,
+      TracePacket>;
+
+  // Ceci n'est pas une pipe.
+  // This is actually a variable of FieldMetadataHelper<FieldMetadata<...>>
+  // type (and users are expected to use it as such, hence kCamelCase name).
+  // It is declared as a function to keep protozero bindings header-only as
+  // inline constexpr variables are not available until C++17 (while inline
+  // functions are).
+  // TODO(altimin): Use inline variable instead after adopting C++17.
+  static constexpr FieldMetadata_FirstPacketOnSequence kFirstPacketOnSequence() { return {}; }
+  void set_first_packet_on_sequence(bool value) {
+    static constexpr uint32_t field_id = FieldMetadata_FirstPacketOnSequence::kFieldId;
+    // Call the appropriate protozero::Message::Append(field_id, ...)
+    // method based on the type of the field.
+    ::protozero::internal::FieldWriter<
+      ::protozero::proto_utils::ProtoSchemaType::kBool>
+        ::Append(*this, field_id, value);
+  }
 };
 
 } // Namespace.
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_application_state_info.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_application_state_info.pbzero.h
index f6f7290..c429d84 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_application_state_info.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_application_state_info.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ChromeApplicationStateInfo {
 enum ChromeApplicationState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeApplicationStateInfo 
+}  // namespace perfetto_pbzero_enum_ChromeApplicationStateInfo
+using ChromeApplicationStateInfo_ChromeApplicationState = perfetto_pbzero_enum_ChromeApplicationStateInfo::ChromeApplicationState;
 
 namespace perfetto_pbzero_enum_ChromeApplicationStateInfo {
 enum ChromeApplicationState : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.pbzero.h
index dcf0a3a..b08de0e 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_compositor_scheduler_state.pbzero.h
@@ -28,32 +28,41 @@
 class SourceLocation;
 namespace perfetto_pbzero_enum_BeginFrameArgs {
 enum BeginFrameArgsType : int32_t;
-}  // namespace perfetto_pbzero_enum_BeginFrameArgs 
+}  // namespace perfetto_pbzero_enum_BeginFrameArgs
+using BeginFrameArgs_BeginFrameArgsType = perfetto_pbzero_enum_BeginFrameArgs::BeginFrameArgsType;
 namespace perfetto_pbzero_enum_BeginImplFrameArgs {
 enum State : int32_t;
-}  // namespace perfetto_pbzero_enum_BeginImplFrameArgs 
+}  // namespace perfetto_pbzero_enum_BeginImplFrameArgs
+using BeginImplFrameArgs_State = perfetto_pbzero_enum_BeginImplFrameArgs::State;
 enum ChromeCompositorSchedulerAction : int32_t;
 namespace perfetto_pbzero_enum_ChromeCompositorSchedulerState {
 enum BeginImplFrameDeadlineMode : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorSchedulerState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorSchedulerState
+using ChromeCompositorSchedulerState_BeginImplFrameDeadlineMode = perfetto_pbzero_enum_ChromeCompositorSchedulerState::BeginImplFrameDeadlineMode;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState {
 enum BeginImplFrameState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState
+using ChromeCompositorStateMachine_MajorState_BeginImplFrameState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState::BeginImplFrameState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState {
 enum BeginMainFrameState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState
+using ChromeCompositorStateMachine_MajorState_BeginMainFrameState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState::BeginMainFrameState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState {
 enum ForcedRedrawOnTimeoutState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState
+using ChromeCompositorStateMachine_MajorState_ForcedRedrawOnTimeoutState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState::ForcedRedrawOnTimeoutState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState {
 enum LayerTreeFrameSinkState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState
+using ChromeCompositorStateMachine_MajorState_LayerTreeFrameSinkState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MajorState::LayerTreeFrameSinkState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState {
 enum ScrollHandlerState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState
+using ChromeCompositorStateMachine_MinorState_ScrollHandlerState = perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState::ScrollHandlerState;
 namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState {
 enum TreePriority : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState 
+}  // namespace perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState
+using ChromeCompositorStateMachine_MinorState_TreePriority = perfetto_pbzero_enum_ChromeCompositorStateMachine_MinorState::TreePriority;
 
 enum ChromeCompositorSchedulerAction : int32_t {
   CC_SCHEDULER_ACTION_UNSPECIFIED = 0,
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_frame_reporter.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_frame_reporter.pbzero.h
index d7f05f2..640e998 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_frame_reporter.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_frame_reporter.pbzero.h
@@ -18,16 +18,20 @@
 
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum FrameDropReason : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeFrameReporter 
+}  // namespace perfetto_pbzero_enum_ChromeFrameReporter
+using ChromeFrameReporter_FrameDropReason = perfetto_pbzero_enum_ChromeFrameReporter::FrameDropReason;
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum FrameType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeFrameReporter 
+}  // namespace perfetto_pbzero_enum_ChromeFrameReporter
+using ChromeFrameReporter_FrameType = perfetto_pbzero_enum_ChromeFrameReporter::FrameType;
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum ScrollState : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeFrameReporter 
+}  // namespace perfetto_pbzero_enum_ChromeFrameReporter
+using ChromeFrameReporter_ScrollState = perfetto_pbzero_enum_ChromeFrameReporter::ScrollState;
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum State : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeFrameReporter 
+}  // namespace perfetto_pbzero_enum_ChromeFrameReporter
+using ChromeFrameReporter_State = perfetto_pbzero_enum_ChromeFrameReporter::State;
 
 namespace perfetto_pbzero_enum_ChromeFrameReporter {
 enum State : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_latency_info.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_latency_info.pbzero.h
index 4b2df33..b5eaf2e 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_latency_info.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_latency_info.pbzero.h
@@ -19,10 +19,12 @@
 class ChromeLatencyInfo_ComponentInfo;
 namespace perfetto_pbzero_enum_ChromeLatencyInfo {
 enum LatencyComponentType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeLatencyInfo 
+}  // namespace perfetto_pbzero_enum_ChromeLatencyInfo
+using ChromeLatencyInfo_LatencyComponentType = perfetto_pbzero_enum_ChromeLatencyInfo::LatencyComponentType;
 namespace perfetto_pbzero_enum_ChromeLatencyInfo {
 enum Step : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeLatencyInfo 
+}  // namespace perfetto_pbzero_enum_ChromeLatencyInfo
+using ChromeLatencyInfo_Step = perfetto_pbzero_enum_ChromeLatencyInfo::Step;
 
 namespace perfetto_pbzero_enum_ChromeLatencyInfo {
 enum Step : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_legacy_ipc.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_legacy_ipc.pbzero.h
index c36d114..43ede72 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_legacy_ipc.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_legacy_ipc.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ChromeLegacyIpc {
 enum MessageClass : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeLegacyIpc 
+}  // namespace perfetto_pbzero_enum_ChromeLegacyIpc
+using ChromeLegacyIpc_MessageClass = perfetto_pbzero_enum_ChromeLegacyIpc::MessageClass;
 
 namespace perfetto_pbzero_enum_ChromeLegacyIpc {
 enum MessageClass : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_process_descriptor.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_process_descriptor.pbzero.h
index 2c5d4f2..ab172ba 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_process_descriptor.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_process_descriptor.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ChromeProcessDescriptor {
 enum ProcessType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeProcessDescriptor 
+}  // namespace perfetto_pbzero_enum_ChromeProcessDescriptor
+using ChromeProcessDescriptor_ProcessType = perfetto_pbzero_enum_ChromeProcessDescriptor::ProcessType;
 
 namespace perfetto_pbzero_enum_ChromeProcessDescriptor {
 enum ProcessType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_thread_descriptor.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_thread_descriptor.pbzero.h
index 5c3651a..ee8df1f 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_thread_descriptor.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/chrome_thread_descriptor.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ChromeThreadDescriptor {
 enum ThreadType : int32_t;
-}  // namespace perfetto_pbzero_enum_ChromeThreadDescriptor 
+}  // namespace perfetto_pbzero_enum_ChromeThreadDescriptor
+using ChromeThreadDescriptor_ThreadType = perfetto_pbzero_enum_ChromeThreadDescriptor::ThreadType;
 
 namespace perfetto_pbzero_enum_ChromeThreadDescriptor {
 enum ThreadType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/counter_descriptor.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/counter_descriptor.pbzero.h
index 750c1b4..1ae8152 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/counter_descriptor.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/counter_descriptor.pbzero.h
@@ -18,10 +18,12 @@
 
 namespace perfetto_pbzero_enum_CounterDescriptor {
 enum BuiltinCounterType : int32_t;
-}  // namespace perfetto_pbzero_enum_CounterDescriptor 
+}  // namespace perfetto_pbzero_enum_CounterDescriptor
+using CounterDescriptor_BuiltinCounterType = perfetto_pbzero_enum_CounterDescriptor::BuiltinCounterType;
 namespace perfetto_pbzero_enum_CounterDescriptor {
 enum Unit : int32_t;
-}  // namespace perfetto_pbzero_enum_CounterDescriptor 
+}  // namespace perfetto_pbzero_enum_CounterDescriptor
+using CounterDescriptor_Unit = perfetto_pbzero_enum_CounterDescriptor::Unit;
 
 namespace perfetto_pbzero_enum_CounterDescriptor {
 enum BuiltinCounterType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/debug_annotation.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/debug_annotation.pbzero.h
index 30df3b9..a5e7c18 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/debug_annotation.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/debug_annotation.pbzero.h
@@ -20,7 +20,8 @@
 class DebugAnnotation_NestedValue;
 namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue {
 enum NestedType : int32_t;
-}  // namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue 
+}  // namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue
+using DebugAnnotation_NestedValue_NestedType = perfetto_pbzero_enum_DebugAnnotation_NestedValue::NestedType;
 
 namespace perfetto_pbzero_enum_DebugAnnotation_NestedValue {
 enum NestedType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/process_descriptor.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/process_descriptor.pbzero.h
index 3017320..83ed69b 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/process_descriptor.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/process_descriptor.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ProcessDescriptor {
 enum ChromeProcessType : int32_t;
-}  // namespace perfetto_pbzero_enum_ProcessDescriptor 
+}  // namespace perfetto_pbzero_enum_ProcessDescriptor
+using ProcessDescriptor_ChromeProcessType = perfetto_pbzero_enum_ProcessDescriptor::ChromeProcessType;
 
 namespace perfetto_pbzero_enum_ProcessDescriptor {
 enum ChromeProcessType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/thread_descriptor.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/thread_descriptor.pbzero.h
index 665fd37..2ea1169 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/thread_descriptor.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/thread_descriptor.pbzero.h
@@ -18,7 +18,8 @@
 
 namespace perfetto_pbzero_enum_ThreadDescriptor {
 enum ChromeThreadType : int32_t;
-}  // namespace perfetto_pbzero_enum_ThreadDescriptor 
+}  // namespace perfetto_pbzero_enum_ThreadDescriptor
+using ThreadDescriptor_ChromeThreadType = perfetto_pbzero_enum_ThreadDescriptor::ChromeThreadType;
 
 namespace perfetto_pbzero_enum_ThreadDescriptor {
 enum ChromeThreadType : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/track_event.pbzero.h b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/track_event.pbzero.h
index bde7f30..2e5f0d3 100644
--- a/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/track_event.pbzero.h
+++ b/chroot/build/arm-generic/usr/include/perfetto/protos/perfetto/trace/track_event/track_event.pbzero.h
@@ -36,13 +36,16 @@
 class TrackEvent_LegacyEvent;
 namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent {
 enum FlowDirection : int32_t;
-}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent 
+}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent
+using TrackEvent_LegacyEvent_FlowDirection = perfetto_pbzero_enum_TrackEvent_LegacyEvent::FlowDirection;
 namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent {
 enum InstantEventScope : int32_t;
-}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent 
+}  // namespace perfetto_pbzero_enum_TrackEvent_LegacyEvent
+using TrackEvent_LegacyEvent_InstantEventScope = perfetto_pbzero_enum_TrackEvent_LegacyEvent::InstantEventScope;
 namespace perfetto_pbzero_enum_TrackEvent {
 enum Type : int32_t;
-}  // namespace perfetto_pbzero_enum_TrackEvent 
+}  // namespace perfetto_pbzero_enum_TrackEvent
+using TrackEvent_Type = perfetto_pbzero_enum_TrackEvent::Type;
 
 namespace perfetto_pbzero_enum_TrackEvent {
 enum Type : int32_t {
diff --git a/chroot/build/arm-generic/usr/include/runtime_probe/proto_bindings/runtime_probe.pb.h b/chroot/build/arm-generic/usr/include/runtime_probe/proto_bindings/runtime_probe.pb.h
index 570b483..88c3ced 100644
--- a/chroot/build/arm-generic/usr/include/runtime_probe/proto_bindings/runtime_probe.pb.h
+++ b/chroot/build/arm-generic/usr/include/runtime_probe/proto_bindings/runtime_probe.pb.h
@@ -1292,6 +1292,7 @@
     kSerialNumberFieldNumber = 4,
     kPathFieldNumber = 13,
     kTechnologyFieldNumber = 15,
+    kChemistryFieldNumber = 16,
     kIndexFieldNumber = 1,
     kChargeFullDesignFieldNumber = 5,
     kChargeFullFieldNumber = 6,
@@ -1373,6 +1374,20 @@
   std::string* _internal_mutable_technology();
   public:
 
+  // string chemistry = 16;
+  void clear_chemistry();
+  const std::string& chemistry() const;
+  template <typename ArgT0 = const std::string&, typename... ArgT>
+  void set_chemistry(ArgT0&& arg0, ArgT... args);
+  std::string* mutable_chemistry();
+  PROTOBUF_NODISCARD std::string* release_chemistry();
+  void set_allocated_chemistry(std::string* chemistry);
+  private:
+  const std::string& _internal_chemistry() const;
+  inline PROTOBUF_ALWAYS_INLINE void _internal_set_chemistry(const std::string& value);
+  std::string* _internal_mutable_chemistry();
+  public:
+
   // int32 index = 1;
   void clear_index();
   int32_t index() const;
@@ -1475,6 +1490,7 @@
   ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr serial_number_;
   ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr path_;
   ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr technology_;
+  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr chemistry_;
   int32_t index_;
   int32_t charge_full_design_;
   int32_t charge_full_;
@@ -7094,6 +7110,57 @@
   // @@protoc_insertion_point(field_set_allocated:runtime_probe.Battery.Fields.technology)
 }
 
+// string chemistry = 16;
+inline void Battery_Fields::clear_chemistry() {
+  chemistry_.ClearToEmpty();
+}
+inline const std::string& Battery_Fields::chemistry() const {
+  // @@protoc_insertion_point(field_get:runtime_probe.Battery.Fields.chemistry)
+  return _internal_chemistry();
+}
+template <typename ArgT0, typename... ArgT>
+inline PROTOBUF_ALWAYS_INLINE
+void Battery_Fields::set_chemistry(ArgT0&& arg0, ArgT... args) {
+ 
+ chemistry_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
+  // @@protoc_insertion_point(field_set:runtime_probe.Battery.Fields.chemistry)
+}
+inline std::string* Battery_Fields::mutable_chemistry() {
+  std::string* _s = _internal_mutable_chemistry();
+  // @@protoc_insertion_point(field_mutable:runtime_probe.Battery.Fields.chemistry)
+  return _s;
+}
+inline const std::string& Battery_Fields::_internal_chemistry() const {
+  return chemistry_.Get();
+}
+inline void Battery_Fields::_internal_set_chemistry(const std::string& value) {
+  
+  chemistry_.Set(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, value, GetArenaForAllocation());
+}
+inline std::string* Battery_Fields::_internal_mutable_chemistry() {
+  
+  return chemistry_.Mutable(::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::EmptyDefault{}, GetArenaForAllocation());
+}
+inline std::string* Battery_Fields::release_chemistry() {
+  // @@protoc_insertion_point(field_release:runtime_probe.Battery.Fields.chemistry)
+  return chemistry_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArenaForAllocation());
+}
+inline void Battery_Fields::set_allocated_chemistry(std::string* chemistry) {
+  if (chemistry != nullptr) {
+    
+  } else {
+    
+  }
+  chemistry_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), chemistry,
+      GetArenaForAllocation());
+#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
+  if (chemistry_.IsDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited())) {
+    chemistry_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), "", GetArenaForAllocation());
+  }
+#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
+  // @@protoc_insertion_point(field_set_allocated:runtime_probe.Battery.Fields.chemistry)
+}
+
 // -------------------------------------------------------------------
 
 // Battery
diff --git a/chroot/build/arm-generic/usr/lib/cros_rust_registry/store/cargo-lock-7.1.0/.cargo-checksum.json b/chroot/build/arm-generic/usr/lib/cros_rust_registry/store/cargo-lock-7.1.0/.cargo-checksum.json
index 482257f..20484b7 100644
--- a/chroot/build/arm-generic/usr/lib/cros_rust_registry/store/cargo-lock-7.1.0/.cargo-checksum.json
+++ b/chroot/build/arm-generic/usr/lib/cros_rust_registry/store/cargo-lock-7.1.0/.cargo-checksum.json
@@ -1,8 +1,8 @@
 {
-	"package": "316f28ed4feda5d58e436485cd730fba0b0dcd888bb50edd0527a30087e27d0f",
+	"package": "1aeb6750c649b378eb474d926d18bfc8acbb6946d4062ad62a93783dd4c9719e",
 	"files": {
 		"Cargo.toml.orig": "4b150b0f1207ca84209cc5651c4d85cff3e8fbb123b1071cdf0da0f55f6f792c",
-		"Cargo.lock": "7137f480305d319c406407e58840162a4beee1af1ddfbb90a27129af670cfb00",
+		"Cargo.lock": "69213e0e8b88b78a3238659d59afae9991f540deb3d07d349c4bdc34070b1b5d",
 		"tests/lockfile.rs": "53ee50f094faa1274d6a4b6953ed270216a062dbb712f582c76ebabb5adffb4a",
 		"tests/examples/Cargo.lock.v3": "a00f206d76efdb60a9197b457728d3ba91c9051145821330c781b564ac6078ff",
 		"tests/examples/Cargo.lock": "a00f206d76efdb60a9197b457728d3ba91c9051145821330c781b564ac6078ff",
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/console-1.0-py3.6.egg-info/SOURCES.txt b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/console-1.0-py3.6.egg-info/SOURCES.txt
index d443df7..eafad4c 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/console-1.0-py3.6.egg-info/SOURCES.txt
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/console-1.0-py3.6.egg-info/SOURCES.txt
@@ -5433,6 +5433,7 @@
 zephyr/dts/bindings/battery/panasonic,ap19a5k.yaml
 zephyr/dts/bindings/battery/powertech,batgqa05l22.yaml
 zephyr/dts/bindings/battery/smp,atlxdy9k.yaml
+zephyr/dts/bindings/battery/smp,c31n1915.yaml
 zephyr/dts/bindings/battery/smp,c31n2005.yaml
 zephyr/dts/bindings/battery/smp,coslight_gh02047xl.yaml
 zephyr/dts/bindings/battery/smp,cosxdy9k.yaml
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/ec3po-1.0.0rc1-py3.6.egg-info/SOURCES.txt b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/ec3po-1.0.0rc1-py3.6.egg-info/SOURCES.txt
index 1b1305f..7e227cd 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/ec3po-1.0.0rc1-py3.6.egg-info/SOURCES.txt
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/ec3po-1.0.0rc1-py3.6.egg-info/SOURCES.txt
@@ -5432,6 +5432,7 @@
 zephyr/dts/bindings/battery/panasonic,ap19a5k.yaml
 zephyr/dts/bindings/battery/powertech,batgqa05l22.yaml
 zephyr/dts/bindings/battery/smp,atlxdy9k.yaml
+zephyr/dts/bindings/battery/smp,c31n1915.yaml
 zephyr/dts/bindings/battery/smp,c31n2005.yaml
 zephyr/dts/bindings/battery/smp,coslight_gh02047xl.yaml
 zephyr/dts/bindings/battery/smp,cosxdy9k.yaml
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/ecusb-1.0-py3.6.egg-info/SOURCES.txt b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/ecusb-1.0-py3.6.egg-info/SOURCES.txt
index 54b9170..c4c15aa 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/ecusb-1.0-py3.6.egg-info/SOURCES.txt
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/ecusb-1.0-py3.6.egg-info/SOURCES.txt
@@ -5432,6 +5432,7 @@
 zephyr/dts/bindings/battery/panasonic,ap19a5k.yaml
 zephyr/dts/bindings/battery/powertech,batgqa05l22.yaml
 zephyr/dts/bindings/battery/smp,atlxdy9k.yaml
+zephyr/dts/bindings/battery/smp,c31n1915.yaml
 zephyr/dts/bindings/battery/smp,c31n2005.yaml
 zephyr/dts/bindings/battery/smp,coslight_gh02047xl.yaml
 zephyr/dts/bindings/battery/smp,cosxdy9k.yaml
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/powerlog-1.0-py3.6.egg-info/SOURCES.txt b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/powerlog-1.0-py3.6.egg-info/SOURCES.txt
index 1415553..8ba472c 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/powerlog-1.0-py3.6.egg-info/SOURCES.txt
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/powerlog-1.0-py3.6.egg-info/SOURCES.txt
@@ -5433,6 +5433,7 @@
 zephyr/dts/bindings/battery/panasonic,ap19a5k.yaml
 zephyr/dts/bindings/battery/powertech,batgqa05l22.yaml
 zephyr/dts/bindings/battery/smp,atlxdy9k.yaml
+zephyr/dts/bindings/battery/smp,c31n1915.yaml
 zephyr/dts/bindings/battery/smp,c31n2005.yaml
 zephyr/dts/bindings/battery/smp,coslight_gh02047xl.yaml
 zephyr/dts/bindings/battery/smp,cosxdy9k.yaml
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/pycparser/lextab.py b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/pycparser/lextab.py
index 831234d..373e713 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/pycparser/lextab.py
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/pycparser/lextab.py
@@ -1,6 +1,6 @@
 # lextab.py. This file automatically created by PLY (version 3.10). Don't edit!
 _tabversion   = '3.10'
-_lextokens    = set(('SEMI', 'TIMESEQUAL', 'FLOAT_CONST', 'RETURN', 'CONTINUE', 'OREQUAL', 'RSHIFTEQUAL', 'UNSIGNED', 'TYPEID', 'SIZEOF', 'PLUSPLUS', 'MINUSMINUS', 'CHAR', 'AND', 'LAND', 'INT', 'INT_CONST_CHAR', 'STRING_LITERAL', 'RPAREN', 'TYPEDEF', '_BOOL', 'GT', 'DEFAULT', 'MINUSEQUAL', 'INT_CONST_BIN', 'IF', 'RESTRICT', 'VOID', 'MINUS', 'FOR', 'CONST', 'DOUBLE', 'EQUALS', 'EQ', 'SHORT', 'RBRACE', 'MODEQUAL', 'DIVEQUAL', 'STRUCT', 'LOR', 'PPPRAGMA', 'CASE', 'WSTRING_LITERAL', 'COLON', 'LSHIFT', 'ARROW', '__INT128', 'BREAK', 'UNION', 'LT', 'ENUM', 'INT_CONST_DEC', 'PLUSEQUAL', 'GOTO', '_COMPLEX', 'GE', 'INT_CONST_HEX', 'RBRACKET', 'ID', 'FLOAT', 'LNOT', 'EXTERN', 'WHILE', 'PLUS', 'REGISTER', 'HEX_FLOAT_CONST', 'SIGNED', 'LBRACKET', 'STATIC', 'ELSE', 'AUTO', 'TIMES', 'COMMA', 'INT_CONST_OCT', 'CHAR_CONST', 'ANDEQUAL', 'ELLIPSIS', 'LE', 'LPAREN', 'PERIOD', 'LSHIFTEQUAL', 'INLINE', 'CONDOP', 'PPHASH', 'XOREQUAL', 'RSHIFT', 'VOLATILE', 'OR', 'MOD', 'DIVIDE', 'OFFSETOF', 'DO', 'NE', 'NOT', 'LBRACE', 'WCHAR_CONST', 'PPPRAGMASTR', 'SWITCH', 'LONG', 'XOR'))
+_lextokens    = set(('ELSE', 'DO', 'INLINE', 'COLON', 'LSHIFT', 'PLUSPLUS', 'OFFSETOF', 'PPPRAGMA', 'ID', 'UNSIGNED', 'RSHIFT', 'PLUSEQUAL', 'LNOT', 'INT_CONST_BIN', 'LSHIFTEQUAL', 'PERIOD', 'TIMESEQUAL', 'COMMA', 'RPAREN', 'IF', 'ANDEQUAL', 'ENUM', 'NOT', 'AND', 'SIZEOF', 'WSTRING_LITERAL', 'XOREQUAL', 'LPAREN', 'EQ', 'INT', 'LONG', 'BREAK', 'INT_CONST_HEX', 'GOTO', 'STATIC', 'OR', 'INT_CONST_OCT', 'OREQUAL', 'ELLIPSIS', 'MOD', 'WHILE', 'AUTO', 'LE', 'RSHIFTEQUAL', 'VOLATILE', 'HEX_FLOAT_CONST', 'TYPEDEF', 'PLUS', 'RETURN', 'PPHASH', 'MODEQUAL', '_COMPLEX', 'EXTERN', 'CONTINUE', 'CONDOP', 'TYPEID', 'DOUBLE', 'CHAR', 'LBRACE', 'RBRACKET', 'SHORT', 'FLOAT', 'LAND', 'LT', 'GT', '_BOOL', 'UNION', 'ARROW', 'XOR', 'CASE', 'DIVEQUAL', 'SEMI', 'FOR', 'PPPRAGMASTR', 'INT_CONST_CHAR', 'WCHAR_CONST', 'INT_CONST_DEC', 'LBRACKET', 'CONST', '__INT128', 'DIVIDE', 'EQUALS', 'TIMES', 'STRING_LITERAL', 'RESTRICT', 'GE', 'MINUSEQUAL', 'NE', 'MINUSMINUS', 'SIGNED', 'VOID', 'LOR', 'STRUCT', 'MINUS', 'RBRACE', 'CHAR_CONST', 'REGISTER', 'FLOAT_CONST', 'SWITCH', 'DEFAULT'))
 _lexreflags   = 64
 _lexliterals  = ''
 _lexstateinfo = {'INITIAL': 'inclusive', 'ppline': 'exclusive', 'pppragma': 'exclusive'}
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/aleena_r0_inas.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/aleena_r0_inas.xml
index 7d4e57c..937149a 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/aleena_r0_inas.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/aleena_r0_inas.xml
@@ -1,655 +1,655 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:22 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:48 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp3300_a_mv</name>
     <doc>Bus Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_a" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_a" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_a_mw</name>
     <doc>Power of 'pp3300_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_a" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_a" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_a_ma</name>
     <doc>Current of 'pp3300_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_a" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_a" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_a" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_a" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_a_ez_config</name>
     <doc>Good default config for 'pp3300_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_a" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_a">
     </params>
   </control>
   <control>
     <name>pp3300_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp5000_a_mv</name>
     <doc>Bus Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp5000_a" nom="5.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_a_mw</name>
     <doc>Power of 'pp5000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp5000_a" nom="5.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_a" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_a_ma</name>
     <doc>Current of 'pp5000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp5000_a" nom="5.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_a" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp5000_a" nom="5.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_a_ez_config</name>
     <doc>Good default config for 'pp5000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp5000_a" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="5.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_a">
     </params>
   </control>
   <control>
     <name>pp5000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp5000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp5000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1800_a_mv</name>
     <doc>Bus Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp1800_a" nom="1.8" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_a" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_a_mw</name>
     <doc>Power of 'pp1800_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp1800_a" nom="1.8" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_a" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_a_ma</name>
     <doc>Current of 'pp1800_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp1800_a" nom="1.8" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_a" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp1800_a" nom="1.8" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_a" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_a_ez_config</name>
     <doc>Good default config for 'pp1800_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp1800_a" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="1.8" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_a">
     </params>
   </control>
   <control>
     <name>pp1800_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mv</name>
     <doc>Bus Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp1200_vddq" nom="1.2" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.2" base_name="pp1200_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mw</name>
     <doc>Power of 'pp1200_vddq' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp1200_vddq" nom="1.2" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="1.2" base_name="pp1200_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ma</name>
     <doc>Current of 'pp1200_vddq' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp1200_vddq" nom="1.2" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="1.2" base_name="pp1200_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shuntmv</name>
     <doc>Shunt Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp1200_vddq" nom="1.2" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.2" base_name="pp1200_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ez_config</name>
     <doc>Good default config for 'pp1200_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp1200_vddq" nom="1.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="1.2" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_vddq">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_nb_mv</name>
     <doc>Bus Voltage of 'ppvar_vddcr_nb' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="ppvar_vddcr_nb" nom="0.875" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="0.875" base_name="ppvar_vddcr_nb" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_nb_mw</name>
     <doc>Power of 'ppvar_vddcr_nb' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="ppvar_vddcr_nb" nom="0.875" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="0.875" base_name="ppvar_vddcr_nb" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_nb_ma</name>
     <doc>Current of 'ppvar_vddcr_nb' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="ppvar_vddcr_nb" nom="0.875" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="0.875" base_name="ppvar_vddcr_nb" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_nb_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vddcr_nb' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="ppvar_vddcr_nb" nom="0.875" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="0.875" base_name="ppvar_vddcr_nb" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_nb_ez_config</name>
     <doc>Good default config for 'ppvar_vddcr_nb' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_vddcr_nb" nom="0.875">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="0.875" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vddcr_nb">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_nb_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_nb_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_nb_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_nb_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_mv</name>
     <doc>Bus Voltage of 'ppvar_vddcr' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="ppvar_vddcr" nom="0.85" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="0.85" base_name="ppvar_vddcr" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_mw</name>
     <doc>Power of 'ppvar_vddcr' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="ppvar_vddcr" nom="0.85" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="0.85" base_name="ppvar_vddcr" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_ma</name>
     <doc>Current of 'ppvar_vddcr' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="ppvar_vddcr" nom="0.85" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="0.85" base_name="ppvar_vddcr" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vddcr' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="ppvar_vddcr" nom="0.85" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="0.85" base_name="ppvar_vddcr" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_ez_config</name>
     <doc>Good default config for 'ppvar_vddcr' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_vddcr" nom="0.85">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="0.85" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vddcr">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vddcr_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_tcpc_mv</name>
     <doc>Bus Voltage of 'pp3300_tcpc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_tcpc" nom="3.3" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_tcpc" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_tcpc_mw</name>
     <doc>Power of 'pp3300_tcpc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_tcpc" nom="3.3" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_tcpc" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_tcpc_ma</name>
     <doc>Current of 'pp3300_tcpc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_tcpc" nom="3.3" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_tcpc" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_tcpc_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_tcpc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_tcpc" nom="3.3" tags="shunt_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_tcpc" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_tcpc_ez_config</name>
     <doc>Good default config for 'pp3300_tcpc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp3300_tcpc" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_tcpc">
     </params>
   </control>
   <control>
     <name>pp3300_tcpc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_tcpc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_tcpc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_tcpc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_ec_a_mv</name>
     <doc>Bus Voltage of 'pp3300_ec_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_ec_a" nom="3.3" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ec_a" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_ec_a_mw</name>
     <doc>Power of 'pp3300_ec_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_ec_a" nom="3.3" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ec_a" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_ec_a_ma</name>
     <doc>Current of 'pp3300_ec_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_ec_a" nom="3.3" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ec_a" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_ec_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_ec_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_ec_a" nom="3.3" tags="shunt_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_ec_a" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_ec_a_ez_config</name>
     <doc>Good default config for 'pp3300_ec_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp3300_ec_a" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ec_a">
     </params>
   </control>
   <control>
     <name>pp3300_ec_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_ec_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_ec_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp950_a_mv</name>
     <doc>Bus Voltage of 'pp950_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp950_a" nom="0.95" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="0.95" base_name="pp950_a" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp950_a_mw</name>
     <doc>Power of 'pp950_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp950_a" nom="0.95" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="0.95" base_name="pp950_a" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp950_a_ma</name>
     <doc>Current of 'pp950_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp950_a" nom="0.95" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="0.95" base_name="pp950_a" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp950_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp950_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp950_a" nom="0.95" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="0.95" base_name="pp950_a" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp950_a_ez_config</name>
     <doc>Good default config for 'pp950_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp950_a" nom="0.95">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="0.95" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp950_a">
     </params>
   </control>
   <control>
     <name>pp950_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp950_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp950_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp950_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mw</name>
     <doc>Power of 'pp3300_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_wlan" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ma</name>
     <doc>Current of 'pp3300_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_wlan" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_edp_mv</name>
     <doc>Bus Voltage of 'pp3300_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_edp" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_edp" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_mw</name>
     <doc>Power of 'pp3300_edp' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_edp" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_edp" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_ma</name>
     <doc>Current of 'pp3300_edp' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_edp" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_edp" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_edp" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_edp" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_ez_config</name>
     <doc>Good default config for 'pp3300_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_edp" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_edp">
     </params>
   </control>
   <control>
     <name>pp3300_edp_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_edp_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_edp_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp950_vddp_s0_mv</name>
     <doc>Bus Voltage of 'pp950_vddp_s0' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp950_vddp_s0" nom="0.95" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="0.95" base_name="pp950_vddp_s0" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp950_vddp_s0_mw</name>
     <doc>Power of 'pp950_vddp_s0' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp950_vddp_s0" nom="0.95" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="0.95" base_name="pp950_vddp_s0" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp950_vddp_s0_ma</name>
     <doc>Current of 'pp950_vddp_s0' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp950_vddp_s0" nom="0.95" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="0.95" base_name="pp950_vddp_s0" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp950_vddp_s0_shuntmv</name>
     <doc>Shunt Voltage of 'pp950_vddp_s0' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp950_vddp_s0" nom="0.95" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="0.95" base_name="pp950_vddp_s0" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp950_vddp_s0_ez_config</name>
     <doc>Good default config for 'pp950_vddp_s0' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp950_vddp_s0" nom="0.95">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="0.95" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp950_vddp_s0">
     </params>
   </control>
   <control>
     <name>pp950_vddp_s0_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp950_vddp_s0_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp950_vddp_s0_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp950_vddp_s0_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev0.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev0.xml
index 2b7b353..de8d359 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev0.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev0.xml
@@ -1,853 +1,853 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:35 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:16:01 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>ppvar_vbus_in_mv</name>
     <doc>Bus Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_vbus_in" nom="20.0" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mw</name>
     <doc>Power of 'ppvar_vbus_in' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_vbus_in" nom="20.0" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ma</name>
     <doc>Current of 'ppvar_vbus_in' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_vbus_in" nom="20.0" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_vbus_in" nom="20.0" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ez_config</name>
     <doc>Good default config for 'ppvar_vbus_in' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="ppvar_vbus_in" nom="20.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="20.0" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vbus_in">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_batt_mv</name>
     <doc>Bus Voltage of 'ppvar_batt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="ppvar_batt" nom="8.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_batt" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_batt_mw</name>
     <doc>Power of 'ppvar_batt' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="ppvar_batt" nom="8.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_batt" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_batt_ma</name>
     <doc>Current of 'ppvar_batt' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="ppvar_batt" nom="8.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_batt" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_batt_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_batt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="ppvar_batt" nom="8.8" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_batt" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_batt_ez_config</name>
     <doc>Good default config for 'ppvar_batt' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_batt" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="8.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_batt">
     </params>
   </control>
   <control>
     <name>ppvar_batt_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_batt_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_batt_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_batt_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_g_mv</name>
     <doc>Bus Voltage of 'pp4200_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp4200_g" nom="4.2" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_g" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_g_mw</name>
     <doc>Power of 'pp4200_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp4200_g" nom="4.2" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_g" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_g_ma</name>
     <doc>Current of 'pp4200_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp4200_g" nom="4.2" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_g" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp4200_g" nom="4.2" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_g" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_g_ez_config</name>
     <doc>Good default config for 'pp4200_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp4200_g" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="4.2" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_g">
     </params>
   </control>
   <control>
     <name>pp4200_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp4200_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp4200_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_bl" nom="8.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mw</name>
     <doc>Power of 'ppvar_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_bl" nom="8.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ma</name>
     <doc>Current of 'ppvar_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_bl" nom="8.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_bl" nom="8.8" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ez_config</name>
     <doc>Good default config for 'ppvar_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_bl" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="8.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_g_mv</name>
     <doc>Bus Voltage of 'pp3300_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_g" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_g_mw</name>
     <doc>Power of 'pp3300_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_g" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_g_ma</name>
     <doc>Current of 'pp3300_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_g" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_g" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_g_ez_config</name>
     <doc>Good default config for 'pp3300_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_g" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_g">
     </params>
   </control>
   <control>
     <name>pp3300_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp5000_a_mv</name>
     <doc>Bus Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp5000_a" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_mw</name>
     <doc>Power of 'pp5000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp5000_a" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_ma</name>
     <doc>Current of 'pp5000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp5000_a" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp5000_a" nom="5.0" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_ez_config</name>
     <doc>Good default config for 'pp5000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_a" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_a">
     </params>
   </control>
   <control>
     <name>pp5000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp5000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_mv</name>
     <doc>Bus Voltage of 'pp3300_h1_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_h1_g" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_h1_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_mw</name>
     <doc>Power of 'pp3300_h1_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_h1_g" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_h1_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_ma</name>
     <doc>Current of 'pp3300_h1_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_h1_g" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_h1_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_h1_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_h1_g" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_h1_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_ez_config</name>
     <doc>Good default config for 'pp3300_h1_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_h1_g" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_h1_g">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_sys_mv</name>
     <doc>Bus Voltage of 'ppvar_sys' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="ppvar_sys" nom="8.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_sys" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_mw</name>
     <doc>Power of 'ppvar_sys' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="ppvar_sys" nom="8.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_sys" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_ma</name>
     <doc>Current of 'ppvar_sys' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="ppvar_sys" nom="8.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_sys" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sys' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="ppvar_sys" nom="8.8" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_sys" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_ez_config</name>
     <doc>Good default config for 'ppvar_sys' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_sys" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="8.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sys">
     </params>
   </control>
   <control>
     <name>ppvar_sys_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sys_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sys_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_mv</name>
     <doc>Bus Voltage of 'pp1800_vio18_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp1800_vio18_u" nom="1.8" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_vio18_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_mw</name>
     <doc>Power of 'pp1800_vio18_u' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp1800_vio18_u" nom="1.8" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_vio18_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_ma</name>
     <doc>Current of 'pp1800_vio18_u' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp1800_vio18_u" nom="1.8" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_vio18_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_vio18_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp1800_vio18_u" nom="1.8" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_vio18_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_ez_config</name>
     <doc>Good default config for 'pp1800_vio18_u' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp1800_vio18_u" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="1.8" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_vio18_u">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_ts_mv</name>
     <doc>Bus Voltage of 'pp3300_ts' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_ts" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ts" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ts_mw</name>
     <doc>Power of 'pp3300_ts' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_ts" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ts" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ts_ma</name>
     <doc>Current of 'pp3300_ts' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_ts" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ts" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ts_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_ts' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_ts" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_ts" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ts_ez_config</name>
     <doc>Good default config for 'pp3300_ts' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_ts" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ts">
     </params>
   </control>
   <control>
     <name>pp3300_ts_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_ts_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ts_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_mv</name>
     <doc>Bus Voltage of 'pp1800_h1_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp1800_h1_g" nom="1.8" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_h1_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_mw</name>
     <doc>Power of 'pp1800_h1_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp1800_h1_g" nom="1.8" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_h1_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_ma</name>
     <doc>Current of 'pp1800_h1_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp1800_h1_g" nom="1.8" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_h1_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_h1_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp1800_h1_g" nom="1.8" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_h1_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_ez_config</name>
     <doc>Good default config for 'pp1800_h1_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp1800_h1_g" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="1.8" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_h1_g">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_mv</name>
     <doc>Bus Voltage of 'pp1800_ec_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp1800_ec_vcc" nom="1.8" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_ec_vcc" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_mw</name>
     <doc>Power of 'pp1800_ec_vcc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp1800_ec_vcc" nom="1.8" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_ec_vcc" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_ma</name>
     <doc>Current of 'pp1800_ec_vcc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp1800_ec_vcc" nom="1.8" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_ec_vcc" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_ec_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp1800_ec_vcc" nom="1.8" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_ec_vcc" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_ez_config</name>
     <doc>Good default config for 'pp1800_ec_vcc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp1800_ec_vcc" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="1.8" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_ec_vcc">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mw</name>
     <doc>Power of 'pp3300_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_wlan" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ma</name>
     <doc>Current of 'pp3300_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_wlan" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_u_mv</name>
     <doc>Bus Voltage of 'pp3300_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_u" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_u_mw</name>
     <doc>Power of 'pp3300_u' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_u" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_u_ma</name>
     <doc>Current of 'pp3300_u' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_u" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_u_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_u" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_u_ez_config</name>
     <doc>Good default config for 'pp3300_u' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_u" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_u">
     </params>
   </control>
   <control>
     <name>pp3300_u_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_u_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_u_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_u_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_u_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_u_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_mv</name>
     <doc>Bus Voltage of 'pp3300_ec_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_ec_g" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ec_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_mw</name>
     <doc>Power of 'pp3300_ec_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_ec_g" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ec_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_ma</name>
     <doc>Current of 'pp3300_ec_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_ec_g" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ec_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_ec_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_ec_g" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_ec_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_ez_config</name>
     <doc>Good default config for 'pp3300_ec_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_ec_g" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ec_g">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev0_mod.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev0_mod.xml
index 16479ab..e9598c6 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev0_mod.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev0_mod.xml
@@ -1,853 +1,853 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:33 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:59 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>ppvar_vbus_in_mv</name>
     <doc>Bus Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_vbus_in" nom="20.0" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mw</name>
     <doc>Power of 'ppvar_vbus_in' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_vbus_in" nom="20.0" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ma</name>
     <doc>Current of 'ppvar_vbus_in' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_vbus_in" nom="20.0" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_vbus_in" nom="20.0" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ez_config</name>
     <doc>Good default config for 'ppvar_vbus_in' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="ppvar_vbus_in" nom="20.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="20.0" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vbus_in">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_batt_mv</name>
     <doc>Bus Voltage of 'ppvar_batt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="ppvar_batt" nom="8.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_batt" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_batt_mw</name>
     <doc>Power of 'ppvar_batt' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="ppvar_batt" nom="8.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_batt" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_batt_ma</name>
     <doc>Current of 'ppvar_batt' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="ppvar_batt" nom="8.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_batt" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_batt_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_batt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="ppvar_batt" nom="8.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_batt" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_batt_ez_config</name>
     <doc>Good default config for 'ppvar_batt' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_batt" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="8.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_batt">
     </params>
   </control>
   <control>
     <name>ppvar_batt_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_batt_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_batt_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_batt_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_g_mv</name>
     <doc>Bus Voltage of 'pp4200_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp4200_g" nom="4.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_g_mw</name>
     <doc>Power of 'pp4200_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp4200_g" nom="4.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_g_ma</name>
     <doc>Current of 'pp4200_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp4200_g" nom="4.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp4200_g" nom="4.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_g_ez_config</name>
     <doc>Good default config for 'pp4200_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp4200_g" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="4.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_g">
     </params>
   </control>
   <control>
     <name>pp4200_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp4200_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp4200_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_bl" nom="8.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mw</name>
     <doc>Power of 'ppvar_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_bl" nom="8.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ma</name>
     <doc>Current of 'ppvar_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_bl" nom="8.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_bl" nom="8.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ez_config</name>
     <doc>Good default config for 'ppvar_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_bl" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="8.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_g_mv</name>
     <doc>Bus Voltage of 'pp3300_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_g" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_g_mw</name>
     <doc>Power of 'pp3300_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_g" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_g_ma</name>
     <doc>Current of 'pp3300_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_g" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_g" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_g_ez_config</name>
     <doc>Good default config for 'pp3300_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_g" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_g">
     </params>
   </control>
   <control>
     <name>pp3300_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp5000_a_mv</name>
     <doc>Bus Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp5000_a" nom="5.0" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp5000_a_mw</name>
     <doc>Power of 'pp5000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp5000_a" nom="5.0" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp5000_a_ma</name>
     <doc>Current of 'pp5000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp5000_a" nom="5.0" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp5000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp5000_a" nom="5.0" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp5000_a_ez_config</name>
     <doc>Good default config for 'pp5000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp5000_a" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="5.0" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_a">
     </params>
   </control>
   <control>
     <name>pp5000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp5000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_mv</name>
     <doc>Bus Voltage of 'pp3300_h1_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_h1_g" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_h1_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_mw</name>
     <doc>Power of 'pp3300_h1_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_h1_g" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_h1_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_ma</name>
     <doc>Current of 'pp3300_h1_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_h1_g" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_h1_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_h1_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_h1_g" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_h1_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_ez_config</name>
     <doc>Good default config for 'pp3300_h1_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_h1_g" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_h1_g">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_h1_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_sys_mv</name>
     <doc>Bus Voltage of 'ppvar_sys' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="ppvar_sys" nom="8.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_sys" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_mw</name>
     <doc>Power of 'ppvar_sys' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="ppvar_sys" nom="8.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_sys" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_ma</name>
     <doc>Current of 'ppvar_sys' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="ppvar_sys" nom="8.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_sys" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sys' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="ppvar_sys" nom="8.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_sys" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_ez_config</name>
     <doc>Good default config for 'ppvar_sys' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_sys" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="8.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sys">
     </params>
   </control>
   <control>
     <name>ppvar_sys_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sys_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sys_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_mv</name>
     <doc>Bus Voltage of 'pp1800_vio18_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp1800_vio18_u" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_vio18_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_mw</name>
     <doc>Power of 'pp1800_vio18_u' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp1800_vio18_u" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_vio18_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_ma</name>
     <doc>Current of 'pp1800_vio18_u' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp1800_vio18_u" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_vio18_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_vio18_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp1800_vio18_u" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_vio18_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_ez_config</name>
     <doc>Good default config for 'pp1800_vio18_u' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_vio18_u" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_vio18_u">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_vio18_u_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_ts_mv</name>
     <doc>Bus Voltage of 'pp3300_ts' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_ts" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ts" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_mw</name>
     <doc>Power of 'pp3300_ts' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_ts" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ts" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_ma</name>
     <doc>Current of 'pp3300_ts' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_ts" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ts" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_ts' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_ts" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_ts" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_ez_config</name>
     <doc>Good default config for 'pp3300_ts' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_ts" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ts">
     </params>
   </control>
   <control>
     <name>pp3300_ts_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_ts_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ts_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_mv</name>
     <doc>Bus Voltage of 'pp1800_h1_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp1800_h1_g" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_h1_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_mw</name>
     <doc>Power of 'pp1800_h1_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp1800_h1_g" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_h1_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_ma</name>
     <doc>Current of 'pp1800_h1_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp1800_h1_g" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_h1_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_h1_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp1800_h1_g" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_h1_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_ez_config</name>
     <doc>Good default config for 'pp1800_h1_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_h1_g" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_h1_g">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_h1_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_mv</name>
     <doc>Bus Voltage of 'pp1800_ec_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp1800_ec_vcc" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_ec_vcc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_mw</name>
     <doc>Power of 'pp1800_ec_vcc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp1800_ec_vcc" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_ec_vcc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_ma</name>
     <doc>Current of 'pp1800_ec_vcc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp1800_ec_vcc" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_ec_vcc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_ec_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp1800_ec_vcc" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_ec_vcc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_ez_config</name>
     <doc>Good default config for 'pp1800_ec_vcc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_ec_vcc" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_ec_vcc">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_ec_vcc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mw</name>
     <doc>Power of 'pp3300_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_wlan" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ma</name>
     <doc>Current of 'pp3300_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_wlan" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_u_mv</name>
     <doc>Bus Voltage of 'pp3300_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_u" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_u_mw</name>
     <doc>Power of 'pp3300_u' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_u" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_u_ma</name>
     <doc>Current of 'pp3300_u' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_u" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_u_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_u" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_u" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_u_ez_config</name>
     <doc>Good default config for 'pp3300_u' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_u" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_u">
     </params>
   </control>
   <control>
     <name>pp3300_u_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_u_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_u_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_u_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_u_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_u_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_mv</name>
     <doc>Bus Voltage of 'pp3300_ec_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_ec_g" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ec_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_mw</name>
     <doc>Power of 'pp3300_ec_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_ec_g" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ec_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_ma</name>
     <doc>Current of 'pp3300_ec_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_ec_g" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ec_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_ec_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_ec_g" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_ec_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_ez_config</name>
     <doc>Good default config for 'pp3300_ec_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_ec_g" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ec_g">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_g_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev1.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev1.xml
index 17c9c11..4ccf5b8 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev1.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev1.xml
@@ -1,853 +1,853 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:31 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:56 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>ppvar_vbus_in_mv</name>
     <doc>Bus Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_vbus_in" nom="20.0" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mw</name>
     <doc>Power of 'ppvar_vbus_in' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_vbus_in" nom="20.0" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ma</name>
     <doc>Current of 'ppvar_vbus_in' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_vbus_in" nom="20.0" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_vbus_in" nom="20.0" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ez_config</name>
     <doc>Good default config for 'ppvar_vbus_in' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="ppvar_vbus_in" nom="20.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="20.0" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vbus_in">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_batt_mv</name>
     <doc>Bus Voltage of 'ppvar_batt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="ppvar_batt" nom="8.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_batt" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_batt_mw</name>
     <doc>Power of 'ppvar_batt' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="ppvar_batt" nom="8.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_batt" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_batt_ma</name>
     <doc>Current of 'ppvar_batt' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="ppvar_batt" nom="8.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_batt" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_batt_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_batt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="ppvar_batt" nom="8.8" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_batt" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_batt_ez_config</name>
     <doc>Good default config for 'ppvar_batt' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_batt" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="8.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_batt">
     </params>
   </control>
   <control>
     <name>ppvar_batt_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_batt_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_batt_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_batt_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_g_mv</name>
     <doc>Bus Voltage of 'pp4200_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp4200_g" nom="4.2" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_g" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_g_mw</name>
     <doc>Power of 'pp4200_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp4200_g" nom="4.2" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_g" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_g_ma</name>
     <doc>Current of 'pp4200_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp4200_g" nom="4.2" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_g" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp4200_g" nom="4.2" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_g" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_g_ez_config</name>
     <doc>Good default config for 'pp4200_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp4200_g" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="4.2" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_g">
     </params>
   </control>
   <control>
     <name>pp4200_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp4200_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp4200_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_bl" nom="8.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mw</name>
     <doc>Power of 'ppvar_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_bl" nom="8.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ma</name>
     <doc>Current of 'ppvar_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_bl" nom="8.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_bl" nom="8.8" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ez_config</name>
     <doc>Good default config for 'ppvar_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_bl" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="8.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_g_mv</name>
     <doc>Bus Voltage of 'pp3300_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_g" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_g_mw</name>
     <doc>Power of 'pp3300_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_g" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_g_ma</name>
     <doc>Current of 'pp3300_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_g" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_g" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_g" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_g_ez_config</name>
     <doc>Good default config for 'pp3300_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_g" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_g">
     </params>
   </control>
   <control>
     <name>pp3300_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp5000_a_mv</name>
     <doc>Bus Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp5000_a" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_mw</name>
     <doc>Power of 'pp5000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp5000_a" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_ma</name>
     <doc>Current of 'pp5000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp5000_a" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp5000_a" nom="5.0" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_ez_config</name>
     <doc>Good default config for 'pp5000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_a" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_a">
     </params>
   </control>
   <control>
     <name>pp5000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp5000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_mv</name>
     <doc>Bus Voltage of 'pp4200_gpu' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp4200_gpu" nom="4.2" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_gpu" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_mw</name>
     <doc>Power of 'pp4200_gpu' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp4200_gpu" nom="4.2" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_gpu" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_ma</name>
     <doc>Current of 'pp4200_gpu' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp4200_gpu" nom="4.2" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_gpu" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_gpu' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp4200_gpu" nom="4.2" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_gpu" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_ez_config</name>
     <doc>Good default config for 'pp4200_gpu' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp4200_gpu" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="4.2" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_gpu">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_sys_mv</name>
     <doc>Bus Voltage of 'ppvar_sys' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="ppvar_sys" nom="8.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_sys" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_mw</name>
     <doc>Power of 'ppvar_sys' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="ppvar_sys" nom="8.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_sys" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_ma</name>
     <doc>Current of 'ppvar_sys' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="ppvar_sys" nom="8.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_sys" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sys' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="ppvar_sys" nom="8.8" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_sys" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_ez_config</name>
     <doc>Good default config for 'ppvar_sys' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_sys" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="8.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sys">
     </params>
   </control>
   <control>
     <name>ppvar_sys_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sys_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sys_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_core_mv</name>
     <doc>Bus Voltage of 'pp4200_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp4200_core" nom="4.2" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_core" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_core_mw</name>
     <doc>Power of 'pp4200_core' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp4200_core" nom="4.2" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_core" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_core_ma</name>
     <doc>Current of 'pp4200_core' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp4200_core" nom="4.2" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_core" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_core_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp4200_core" nom="4.2" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_core" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_core_ez_config</name>
     <doc>Good default config for 'pp4200_core' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp4200_core" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="4.2" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_core">
     </params>
   </control>
   <control>
     <name>pp4200_core_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_core_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp4200_core_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp4200_core_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_ts_mv</name>
     <doc>Bus Voltage of 'pp3300_ts' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_ts" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ts" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ts_mw</name>
     <doc>Power of 'pp3300_ts' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_ts" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ts" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ts_ma</name>
     <doc>Current of 'pp3300_ts' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_ts" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ts" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ts_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_ts' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_ts" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_ts" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_ts_ez_config</name>
     <doc>Good default config for 'pp3300_ts' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_ts" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ts">
     </params>
   </control>
   <control>
     <name>pp3300_ts_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_ts_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ts_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_bc_mv</name>
     <doc>Bus Voltage of 'pp4200_bc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp4200_bc" nom="4.2" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_bc" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_bc_mw</name>
     <doc>Power of 'pp4200_bc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp4200_bc" nom="4.2" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_bc" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_bc_ma</name>
     <doc>Current of 'pp4200_bc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp4200_bc" nom="4.2" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_bc" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_bc_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_bc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp4200_bc" nom="4.2" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_bc" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_bc_ez_config</name>
     <doc>Good default config for 'pp4200_bc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp4200_bc" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="4.2" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_bc">
     </params>
   </control>
   <control>
     <name>pp4200_bc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_bc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp4200_bc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp4200_bc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_lc_mv</name>
     <doc>Bus Voltage of 'pp4200_lc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp4200_lc" nom="4.2" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_lc" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_lc_mw</name>
     <doc>Power of 'pp4200_lc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp4200_lc" nom="4.2" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_lc" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_lc_ma</name>
     <doc>Current of 'pp4200_lc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp4200_lc" nom="4.2" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_lc" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_lc_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_lc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp4200_lc" nom="4.2" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_lc" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp4200_lc_ez_config</name>
     <doc>Good default config for 'pp4200_lc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp4200_lc" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="4.2" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_lc">
     </params>
   </control>
   <control>
     <name>pp4200_lc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_lc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp4200_lc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp4200_lc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mw</name>
     <doc>Power of 'pp3300_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_wlan" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ma</name>
     <doc>Current of 'pp3300_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_wlan" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_hub_mv</name>
     <doc>Bus Voltage of 'pp3300_hub' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_hub" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_hub" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hub_mw</name>
     <doc>Power of 'pp3300_hub' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_hub" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_hub" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hub_ma</name>
     <doc>Current of 'pp3300_hub' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_hub" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_hub" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hub_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_hub' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_hub" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_hub" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hub_ez_config</name>
     <doc>Good default config for 'pp3300_hub' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_hub" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_hub">
     </params>
   </control>
   <control>
     <name>pp3300_hub_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_hub_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_hub_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_hub_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_hub_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_hub_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_mv</name>
     <doc>Bus Voltage of 'pp3300_lcm' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_lcm" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_lcm" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_mw</name>
     <doc>Power of 'pp3300_lcm' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_lcm" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_lcm" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_ma</name>
     <doc>Current of 'pp3300_lcm' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_lcm" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_lcm" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_lcm' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_lcm" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_lcm" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_ez_config</name>
     <doc>Good default config for 'pp3300_lcm' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_lcm" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_lcm">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev1_mod.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev1_mod.xml
index f08b871..35627af 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev1_mod.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/asurada_rev1_mod.xml
@@ -1,853 +1,853 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:32 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:58 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>ppvar_vbus_in_mv</name>
     <doc>Bus Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_vbus_in" nom="20.0" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mw</name>
     <doc>Power of 'ppvar_vbus_in' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_vbus_in" nom="20.0" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ma</name>
     <doc>Current of 'ppvar_vbus_in' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_vbus_in" nom="20.0" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_vbus_in" nom="20.0" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="20.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ez_config</name>
     <doc>Good default config for 'ppvar_vbus_in' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="ppvar_vbus_in" nom="20.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="20.0" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vbus_in">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_batt_mv</name>
     <doc>Bus Voltage of 'ppvar_batt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="ppvar_batt" nom="8.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_batt" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_batt_mw</name>
     <doc>Power of 'ppvar_batt' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="ppvar_batt" nom="8.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_batt" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_batt_ma</name>
     <doc>Current of 'ppvar_batt' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="ppvar_batt" nom="8.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_batt" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_batt_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_batt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="ppvar_batt" nom="8.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_batt" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_batt_ez_config</name>
     <doc>Good default config for 'ppvar_batt' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_batt" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="8.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_batt">
     </params>
   </control>
   <control>
     <name>ppvar_batt_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_batt_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_batt_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_batt_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_g_mv</name>
     <doc>Bus Voltage of 'pp4200_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp4200_g" nom="4.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_g_mw</name>
     <doc>Power of 'pp4200_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp4200_g" nom="4.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_g_ma</name>
     <doc>Current of 'pp4200_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp4200_g" nom="4.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp4200_g" nom="4.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_g_ez_config</name>
     <doc>Good default config for 'pp4200_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp4200_g" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="4.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_g">
     </params>
   </control>
   <control>
     <name>pp4200_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp4200_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp4200_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_bl" nom="8.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mw</name>
     <doc>Power of 'ppvar_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_bl" nom="8.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ma</name>
     <doc>Current of 'ppvar_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_bl" nom="8.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_bl" nom="8.8" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_bl" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ez_config</name>
     <doc>Good default config for 'ppvar_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_bl" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="8.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_g_mv</name>
     <doc>Bus Voltage of 'pp3300_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_g" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_g_mw</name>
     <doc>Power of 'pp3300_g' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_g" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_g_ma</name>
     <doc>Current of 'pp3300_g' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_g" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_g_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_g' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_g" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_g" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_g_ez_config</name>
     <doc>Good default config for 'pp3300_g' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_g" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_g">
     </params>
   </control>
   <control>
     <name>pp3300_g_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_g_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_g_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_g_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp5000_a_mv</name>
     <doc>Bus Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp5000_a" nom="5.0" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp5000_a_mw</name>
     <doc>Power of 'pp5000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp5000_a" nom="5.0" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp5000_a_ma</name>
     <doc>Current of 'pp5000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp5000_a" nom="5.0" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp5000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp5000_a" nom="5.0" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp5000_a_ez_config</name>
     <doc>Good default config for 'pp5000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp5000_a" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="5.0" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_a">
     </params>
   </control>
   <control>
     <name>pp5000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp5000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_mv</name>
     <doc>Bus Voltage of 'pp4200_gpu' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp4200_gpu" nom="4.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_gpu" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_mw</name>
     <doc>Power of 'pp4200_gpu' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp4200_gpu" nom="4.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_gpu" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_ma</name>
     <doc>Current of 'pp4200_gpu' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp4200_gpu" nom="4.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_gpu" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_gpu' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp4200_gpu" nom="4.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_gpu" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_ez_config</name>
     <doc>Good default config for 'pp4200_gpu' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp4200_gpu" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="4.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_gpu">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp4200_gpu_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_sys_mv</name>
     <doc>Bus Voltage of 'ppvar_sys' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="ppvar_sys" nom="8.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="8.8" base_name="ppvar_sys" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_mw</name>
     <doc>Power of 'ppvar_sys' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="ppvar_sys" nom="8.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="8.8" base_name="ppvar_sys" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_ma</name>
     <doc>Current of 'ppvar_sys' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="ppvar_sys" nom="8.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="8.8" base_name="ppvar_sys" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sys' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="ppvar_sys" nom="8.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="8.8" base_name="ppvar_sys" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_ez_config</name>
     <doc>Good default config for 'ppvar_sys' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_sys" nom="8.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="8.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sys">
     </params>
   </control>
   <control>
     <name>ppvar_sys_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sys_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sys_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_core_mv</name>
     <doc>Bus Voltage of 'pp4200_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp4200_core" nom="4.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_core_mw</name>
     <doc>Power of 'pp4200_core' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp4200_core" nom="4.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_core_ma</name>
     <doc>Current of 'pp4200_core' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp4200_core" nom="4.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_core_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp4200_core" nom="4.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_core_ez_config</name>
     <doc>Good default config for 'pp4200_core' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp4200_core" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="4.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_core">
     </params>
   </control>
   <control>
     <name>pp4200_core_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_core_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp4200_core_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp4200_core_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_ts_mv</name>
     <doc>Bus Voltage of 'pp3300_ts' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_ts" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ts" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_mw</name>
     <doc>Power of 'pp3300_ts' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_ts" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ts" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_ma</name>
     <doc>Current of 'pp3300_ts' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_ts" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ts" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_ts' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_ts" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_ts" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_ez_config</name>
     <doc>Good default config for 'pp3300_ts' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_ts" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ts">
     </params>
   </control>
   <control>
     <name>pp3300_ts_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_ts_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ts_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ts_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_bc_mv</name>
     <doc>Bus Voltage of 'pp4200_bc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp4200_bc" nom="4.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_bc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_bc_mw</name>
     <doc>Power of 'pp4200_bc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp4200_bc" nom="4.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_bc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_bc_ma</name>
     <doc>Current of 'pp4200_bc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp4200_bc" nom="4.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_bc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_bc_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_bc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp4200_bc" nom="4.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_bc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_bc_ez_config</name>
     <doc>Good default config for 'pp4200_bc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp4200_bc" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="4.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_bc">
     </params>
   </control>
   <control>
     <name>pp4200_bc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_bc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp4200_bc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp4200_bc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp4200_lc_mv</name>
     <doc>Bus Voltage of 'pp4200_lc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp4200_lc" nom="4.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="4.2" base_name="pp4200_lc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_lc_mw</name>
     <doc>Power of 'pp4200_lc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp4200_lc" nom="4.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="4.2" base_name="pp4200_lc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_lc_ma</name>
     <doc>Current of 'pp4200_lc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp4200_lc" nom="4.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="4.2" base_name="pp4200_lc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_lc_shuntmv</name>
     <doc>Shunt Voltage of 'pp4200_lc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp4200_lc" nom="4.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="4.2" base_name="pp4200_lc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp4200_lc_ez_config</name>
     <doc>Good default config for 'pp4200_lc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp4200_lc" nom="4.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="4.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp4200_lc">
     </params>
   </control>
   <control>
     <name>pp4200_lc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp4200_lc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp4200_lc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp4200_lc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_mw</name>
     <doc>Power of 'pp3300_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_wlan" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ma</name>
     <doc>Current of 'pp3300_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_wlan" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_wlan" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_hub_mv</name>
     <doc>Bus Voltage of 'pp3300_hub' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_hub" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_hub" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_hub_mw</name>
     <doc>Power of 'pp3300_hub' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_hub" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_hub" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_hub_ma</name>
     <doc>Current of 'pp3300_hub' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_hub" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_hub" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_hub_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_hub' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_hub" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_hub" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_hub_ez_config</name>
     <doc>Good default config for 'pp3300_hub' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_hub" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_hub">
     </params>
   </control>
   <control>
     <name>pp3300_hub_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_hub_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_hub_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_hub_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_hub_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_hub_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_mv</name>
     <doc>Bus Voltage of 'pp3300_lcm' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_lcm" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_lcm" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_mw</name>
     <doc>Power of 'pp3300_lcm' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_lcm" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_lcm" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_ma</name>
     <doc>Current of 'pp3300_lcm' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_lcm" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_lcm" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_lcm' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_lcm" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_lcm" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_ez_config</name>
     <doc>Good default config for 'pp3300_lcm' rail</doc>
-    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_lcm" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_lcm">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_lcm_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev0_loc.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev0_loc.xml
index b8fc095..0292bcb 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev0_loc.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev0_loc.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:19 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:45 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
@@ -22,1057 +22,1057 @@
 <control>
 <name>ppvar_vcc_mv</name>
 <doc>Bus Voltage of 'ppvar_vcc' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="ppvar_vcc" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_mw</name>
 <doc>Power of 'ppvar_vcc' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="ppvar_vcc" nom="1.0" tags="power_rail" rsense="0.002">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_ma</name>
 <doc>Current of 'ppvar_vcc' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="ppvar_vcc" nom="1.0" tags="current_rail" rsense="0.002">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_shuntmv</name>
 <doc>Shunt Voltage of 'ppvar_vcc' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="ppvar_vcc" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_ez_config</name>
 <doc>Good default config for 'ppvar_vcc' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_vcc" nom="1.0">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vcc">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>ppvar_vcc_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>ppvat_gt_mv</name>
 <doc>Bus Voltage of 'ppvat_gt' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="ppvat_gt" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvat_gt" rsense="0.002">
 </params>
 </control>
 <control>
 <name>ppvat_gt_mw</name>
 <doc>Power of 'ppvat_gt' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="ppvat_gt" nom="1.0" tags="power_rail" rsense="0.002">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvat_gt" rsense="0.002">
 </params>
 </control>
 <control>
 <name>ppvat_gt_ma</name>
 <doc>Current of 'ppvat_gt' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="ppvat_gt" nom="1.0" tags="current_rail" rsense="0.002">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvat_gt" rsense="0.002">
 </params>
 </control>
 <control>
 <name>ppvat_gt_shuntmv</name>
 <doc>Shunt Voltage of 'ppvat_gt' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="ppvat_gt" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvat_gt" rsense="0.002">
 </params>
 </control>
 <control>
 <name>ppvat_gt_ez_config</name>
 <doc>Good default config for 'ppvat_gt' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvat_gt" nom="1.0">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvat_gt">
 </params>
 </control>
 <control>
 <name>ppvat_gt_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>ppvat_gt_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>ppvat_gt_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>ppvat_gt_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>ppvat_gt_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>ppvat_gt_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>ppvar_sa_mv</name>
 <doc>Bus Voltage of 'ppvar_sa' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="ppvar_sa" nom="1.0" tags="bus_voltage_rail" rsense="0.005">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
 </params>
 </control>
 <control>
 <name>ppvar_sa_mw</name>
 <doc>Power of 'ppvar_sa' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="ppvar_sa" nom="1.0" tags="power_rail" rsense="0.005">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
 </params>
 </control>
 <control>
 <name>ppvar_sa_ma</name>
 <doc>Current of 'ppvar_sa' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="ppvar_sa" nom="1.0" tags="current_rail" rsense="0.005">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
 </params>
 </control>
 <control>
 <name>ppvar_sa_shuntmv</name>
 <doc>Shunt Voltage of 'ppvar_sa' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="ppvar_sa" nom="1.0" tags="shunt_voltage_rail" rsense="0.005">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
 </params>
 </control>
 <control>
 <name>ppvar_sa_ez_config</name>
 <doc>Good default config for 'ppvar_sa' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_sa" nom="1.0">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="1.0" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sa">
 </params>
 </control>
 <control>
 <name>ppvar_sa_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>ppvar_sa_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>ppvar_sa_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>ppvar_sa_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>ppvar_sa_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>ppvar_sa_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp975_io_mv</name>
 <doc>Bus Voltage of 'pp975_io' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp975_io" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp975_io_mw</name>
 <doc>Power of 'pp975_io' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp975_io" nom="7.7" tags="power_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp975_io_ma</name>
 <doc>Current of 'pp975_io' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp975_io" nom="7.7" tags="current_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp975_io_shuntmv</name>
 <doc>Shunt Voltage of 'pp975_io' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp975_io" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp975_io_ez_config</name>
 <doc>Good default config for 'pp975_io' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp975_io" nom="7.7">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp975_io">
 </params>
 </control>
 <control>
 <name>pp975_io_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp975_io_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp975_io_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp975_io_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp975_io_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp975_io_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp5000_a_mv</name>
 <doc>Bus Voltage of 'pp5000_a' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp5000_a" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp5000_a_mw</name>
 <doc>Power of 'pp5000_a' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp5000_a" nom="5.0" tags="power_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp5000_a_ma</name>
 <doc>Current of 'pp5000_a' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp5000_a" nom="5.0" tags="current_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp5000_a_shuntmv</name>
 <doc>Shunt Voltage of 'pp5000_a' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp5000_a" nom="5.0" tags="shunt_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp5000_a_ez_config</name>
 <doc>Good default config for 'pp5000_a' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_a" nom="5.0">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_a">
 </params>
 </control>
 <control>
 <name>pp5000_a_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp5000_a_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp5000_a_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp5000_a_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp5000_a_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp5000_a_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_mv</name>
 <doc>Bus Voltage of 'pp3300_dsw' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_dsw" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_mw</name>
 <doc>Power of 'pp3300_dsw' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_dsw" nom="3.3" tags="power_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_ma</name>
 <doc>Current of 'pp3300_dsw' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_dsw" nom="3.3" tags="current_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_shuntmv</name>
 <doc>Shunt Voltage of 'pp3300_dsw' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_dsw" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_ez_config</name>
 <doc>Good default config for 'pp3300_dsw' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dsw" nom="3.3">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dsw">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp3300_dsw_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp3300_a_mv</name>
 <doc>Bus Voltage of 'pp3300_a' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_a" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_a_mw</name>
 <doc>Power of 'pp3300_a' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_a" nom="7.7" tags="power_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_a_ma</name>
 <doc>Current of 'pp3300_a' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_a" nom="7.7" tags="current_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_a_shuntmv</name>
 <doc>Shunt Voltage of 'pp3300_a' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_a_ez_config</name>
 <doc>Good default config for 'pp3300_a' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_a" nom="7.7">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_a">
 </params>
 </control>
 <control>
 <name>pp3300_a_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp3300_a_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp3300_a_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp3300_a_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp3300_a_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp3300_a_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="70">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="70" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_mv</name>
 <doc>Bus Voltage of 'pp1800_u_dram' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp1800_u_dram" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_u_dram" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_mw</name>
 <doc>Power of 'pp1800_u_dram' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp1800_u_dram" nom="7.7" tags="power_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_u_dram" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_ma</name>
 <doc>Current of 'pp1800_u_dram' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp1800_u_dram" nom="7.7" tags="current_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_u_dram" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_shuntmv</name>
 <doc>Shunt Voltage of 'pp1800_u_dram' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp1800_u_dram" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_u_dram" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_ez_config</name>
 <doc>Good default config for 'pp1800_u_dram' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_u_dram" nom="7.7">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_u_dram">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="71">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="71" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="71">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="71" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="71">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="71" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="71">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="71" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="71">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="71" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp1800_u_dram_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="71">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="71" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_mv</name>
 <doc>Bus Voltage of 'pp1200_vddq' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp1200_vddq" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_mw</name>
 <doc>Power of 'pp1200_vddq' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp1200_vddq" nom="7.7" tags="power_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_ma</name>
 <doc>Current of 'pp1200_vddq' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp1200_vddq" nom="7.7" tags="current_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_shuntmv</name>
 <doc>Shunt Voltage of 'pp1200_vddq' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp1200_vddq" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_ez_config</name>
 <doc>Good default config for 'pp1200_vddq' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1200_vddq" nom="7.7">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_vddq">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp1200_vddq_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp1000_a_mv</name>
 <doc>Bus Voltage of 'pp1000_a' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp1000_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1000_a_mw</name>
 <doc>Power of 'pp1000_a' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp1000_a" nom="7.7" tags="power_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1000_a_ma</name>
 <doc>Current of 'pp1000_a' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp1000_a" nom="7.7" tags="current_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1000_a_shuntmv</name>
 <doc>Shunt Voltage of 'pp1000_a' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp1000_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp1000_a_ez_config</name>
 <doc>Good default config for 'pp1000_a' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1000_a" nom="7.7">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_a">
 </params>
 </control>
 <control>
 <name>pp1000_a_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp1000_a_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp1000_a_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp1000_a_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp1000_a_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp1000_a_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_mv</name>
 <doc>Bus Voltage of 'pp850_prim_core' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp850_prim_core" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_mw</name>
 <doc>Power of 'pp850_prim_core' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp850_prim_core" nom="7.7" tags="power_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_ma</name>
 <doc>Current of 'pp850_prim_core' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp850_prim_core" nom="7.7" tags="current_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_shuntmv</name>
 <doc>Shunt Voltage of 'pp850_prim_core' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp850_prim_core" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_ez_config</name>
 <doc>Good default config for 'pp850_prim_core' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp850_prim_core" nom="7.7">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp850_prim_core">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp850_prim_core_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_mv</name>
 <doc>Bus Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_dx_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_mw</name>
 <doc>Power of 'pp3300_dx_wlan' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_dx_wlan" nom="3.3" tags="power_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_ma</name>
 <doc>Current of 'pp3300_dx_wlan' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_dx_wlan" nom="3.3" tags="current_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_shuntmv</name>
 <doc>Shunt Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_dx_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_ez_config</name>
 <doc>Good default config for 'pp3300_dx_wlan' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_wlan" nom="3.3">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_wlan">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp3300_dx_wlan_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_mv</name>
 <doc>Bus Voltage of 'ppvar_bl_pwr' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="ppvar_bl_pwr" nom="7.7" tags="bus_voltage_rail" rsense="0.05">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="ppvar_bl_pwr" rsense="0.05">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_mw</name>
 <doc>Power of 'ppvar_bl_pwr' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="ppvar_bl_pwr" nom="7.7" tags="power_rail" rsense="0.05">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="ppvar_bl_pwr" rsense="0.05">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_ma</name>
 <doc>Current of 'ppvar_bl_pwr' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="ppvar_bl_pwr" nom="7.7" tags="current_rail" rsense="0.05">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="ppvar_bl_pwr" rsense="0.05">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_shuntmv</name>
 <doc>Shunt Voltage of 'ppvar_bl_pwr' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="ppvar_bl_pwr" nom="7.7" tags="shunt_voltage_rail" rsense="0.05">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="ppvar_bl_pwr" rsense="0.05">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_ez_config</name>
 <doc>Good default config for 'ppvar_bl_pwr' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.05" map="on" base_name="ppvar_bl_pwr" nom="7.7">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="7.7" rsense="0.05" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl_pwr">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="76">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="76" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="76">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="76" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="76">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="76" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="76">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="76" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="76">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="76" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>ppvar_bl_pwr_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="76">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="76" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_mv</name>
 <doc>Bus Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_dx_edp" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_mw</name>
 <doc>Power of 'pp3300_dx_edp' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_dx_edp" nom="3.3" tags="power_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_ma</name>
 <doc>Current of 'pp3300_dx_edp' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_dx_edp" nom="3.3" tags="current_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_shuntmv</name>
 <doc>Shunt Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_dx_edp" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_ez_config</name>
 <doc>Good default config for 'pp3300_dx_edp' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_edp" nom="3.3">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_edp">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="77">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="77" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="77">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="77" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="77">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="77" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="77">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="77" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="77">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="77" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp3300_dx_edp_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="77">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="77" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>pp3300_h1_mv</name>
 <doc>Bus Voltage of 'pp3300_h1' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="pp3300_h1" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp3300_h1_mw</name>
 <doc>Power of 'pp3300_h1' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="pp3300_h1" nom="3.3" tags="power_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp3300_h1_ma</name>
 <doc>Current of 'pp3300_h1' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="pp3300_h1" nom="3.3" tags="current_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp3300_h1_shuntmv</name>
 <doc>Shunt Voltage of 'pp3300_h1' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="pp3300_h1" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
 </params>
 </control>
 <control>
 <name>pp3300_h1_ez_config</name>
 <doc>Good default config for 'pp3300_h1' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_h1" nom="3.3">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_h1">
 </params>
 </control>
 <control>
 <name>pp3300_h1_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="78">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="78" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>pp3300_h1_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="78">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="78" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>pp3300_h1_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="78">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="78" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>pp3300_h1_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="78">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="78" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>pp3300_h1_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="78">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="78" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>pp3300_h1_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="78">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="78" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 <control>
 <name>vbat_mv</name>
 <doc>Bus Voltage of 'vbat' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" base_name="vbat" nom="7.7" tags="bus_voltage_rail" rsense="0.02">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="vbat" rsense="0.02">
 </params>
 </control>
 <control>
 <name>vbat_mw</name>
 <doc>Power of 'vbat' rail in milliwatts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" base_name="vbat" nom="7.7" tags="power_rail" rsense="0.02">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="vbat" rsense="0.02">
 </params>
 </control>
 <control>
 <name>vbat_ma</name>
 <doc>Current of 'vbat' rail in milliamps</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" base_name="vbat" nom="7.7" tags="current_rail" rsense="0.02">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="vbat" rsense="0.02">
 </params>
 </control>
 <control>
 <name>vbat_shuntmv</name>
 <doc>Shunt Voltage of 'vbat' rail in millivolts</doc>
-<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" base_name="vbat" nom="7.7" tags="shunt_voltage_rail" rsense="0.02">
+<params cmd="get" interface="servo" drv="ina219" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="vbat" rsense="0.02">
 </params>
 </control>
 <control>
 <name>vbat_ez_config</name>
 <doc>Good default config for 'vbat' rail</doc>
-<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="vbat" nom="7.7">
+<params cmd="set" interface="servo" drv="ina219" channel="0" subtype="ez_config" nom="7.7" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="vbat">
 </params>
 </control>
 <control>
 <name>vbat_cfg_reg</name>
 <doc>Raw register value of cfg on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" map="ina219_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="79">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="79" fmt="hex" c2d2_interface="4" offset="0" map="ina219_cfg">
 </params>
 </control>
 <control>
 <name>vbat_shv_reg</name>
 <doc>Raw register value of shv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="79">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="79" fmt="hex" c2d2_interface="4" offset="1">
 </params>
 </control>
 <control>
 <name>vbat_busv_reg</name>
 <doc>Raw register value of busv on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="79">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="79" fmt="hex" c2d2_interface="4" offset="2">
 </params>
 </control>
 <control>
 <name>vbat_pwr_reg</name>
 <doc>Raw register value of pwr on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="79">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="79" fmt="hex" c2d2_interface="4" offset="3">
 </params>
 </control>
 <control>
 <name>vbat_cur_reg</name>
 <doc>Raw register value of cur on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="79">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="79" fmt="hex" c2d2_interface="4" offset="4">
 </params>
 </control>
 <control>
 <name>vbat_cal_reg</name>
 <doc>Raw register value of cal on i2c_mux:loc0</doc>
-<params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="79">
+<params interface="2" drv="i2c_reg_drv" reg_len="2" addr="79" fmt="hex" c2d2_interface="4" offset="5">
 </params>
 </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev2.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev2.xml
index b0c4964..6ed35a3 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev2.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev2.xml
@@ -1,1879 +1,1879 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:23 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:49 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp975_io_mv</name>
     <doc>Bus Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp975_io" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_mw</name>
     <doc>Power of 'pp975_io' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp975_io" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ma</name>
     <doc>Current of 'pp975_io' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp975_io" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_shuntmv</name>
     <doc>Shunt Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp975_io" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ez_config</name>
     <doc>Good default config for 'pp975_io' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp975_io" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp975_io">
     </params>
   </control>
   <control>
     <name>pp975_io_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp975_io_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp975_io_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp975_io_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp975_io_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp975_io_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp975_io_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp975_io_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mv</name>
     <doc>Bus Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp850_prim_core" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mw</name>
     <doc>Power of 'pp850_prim_core' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp850_prim_core" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ma</name>
     <doc>Current of 'pp850_prim_core' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp850_prim_core" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shuntmv</name>
     <doc>Shunt Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp850_prim_core" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ez_config</name>
     <doc>Good default config for 'pp850_prim_core' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp850_prim_core" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp850_prim_core">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mv</name>
     <doc>Bus Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dsw" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mw</name>
     <doc>Power of 'pp3300_dsw' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dsw" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ma</name>
     <doc>Current of 'pp3300_dsw' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dsw" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dsw" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ez_config</name>
     <doc>Good default config for 'pp3300_dsw' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dsw" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dsw">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_a_mv</name>
     <doc>Bus Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_a" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_mw</name>
     <doc>Power of 'pp3300_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_a" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ma</name>
     <doc>Current of 'pp3300_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_a" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ez_config</name>
     <doc>Good default config for 'pp3300_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_a">
     </params>
   </control>
   <control>
     <name>pp3300_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_a_mv</name>
     <doc>Bus Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_mw</name>
     <doc>Power of 'pp1800_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ma</name>
     <doc>Current of 'pp1800_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ez_config</name>
     <doc>Good default config for 'pp1800_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_a">
     </params>
   </control>
   <control>
     <name>pp1800_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_u_mv</name>
     <doc>Bus Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_u" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_mw</name>
     <doc>Power of 'pp1800_u' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_u" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ma</name>
     <doc>Current of 'pp1800_u' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_u" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_u" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ez_config</name>
     <doc>Good default config for 'pp1800_u' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_u" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_u">
     </params>
   </control>
   <control>
     <name>pp1800_u_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_u_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_u_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_u_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_u_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_u_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_u_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_u_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mv</name>
     <doc>Bus Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1200_vddq" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mw</name>
     <doc>Power of 'pp1200_vddq' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1200_vddq" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ma</name>
     <doc>Current of 'pp1200_vddq' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1200_vddq" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shuntmv</name>
     <doc>Shunt Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1200_vddq" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ez_config</name>
     <doc>Good default config for 'pp1200_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1200_vddq" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_vddq">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_a_mv</name>
     <doc>Bus Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_mw</name>
     <doc>Power of 'pp1000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ma</name>
     <doc>Current of 'pp1000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ez_config</name>
     <doc>Good default config for 'pp1000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1000_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_a">
     </params>
   </control>
   <control>
     <name>pp1000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_h1_mv</name>
     <doc>Bus Voltage of 'pp3300_h1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_h1" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_mw</name>
     <doc>Power of 'pp3300_h1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_h1" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_ma</name>
     <doc>Current of 'pp3300_h1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_h1" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_h1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_h1" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_ez_config</name>
     <doc>Good default config for 'pp3300_h1' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_h1" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_h1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_h1_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_h1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_h1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_h1_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_h1_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_h1_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_bl" nom="7.7" tags="bus_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mw</name>
     <doc>Power of 'ppvar_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_bl" nom="7.7" tags="power_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ma</name>
     <doc>Current of 'ppvar_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_bl" nom="7.7" tags="current_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_bl" nom="7.7" tags="shunt_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ez_config</name>
     <doc>Good default config for 'ppvar_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.05" map="on" base_name="ppvar_bl" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.05" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_bl_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mw</name>
     <doc>Power of 'pp3300_dx_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_wlan" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ma</name>
     <doc>Current of 'pp3300_dx_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_wlan" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_dx_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_edp" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mw</name>
     <doc>Power of 'pp3300_dx_edp' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_edp" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ma</name>
     <doc>Current of 'pp3300_dx_edp' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_edp" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_edp" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ez_config</name>
     <doc>Good default config for 'pp3300_dx_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_edp" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_edp">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_touch' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_touch" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_mw</name>
     <doc>Power of 'pp3300_dx_touch' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_touch" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_ma</name>
     <doc>Current of 'pp3300_dx_touch' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_touch" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_touch' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_touch" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_ez_config</name>
     <doc>Good default config for 'pp3300_dx_touch' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dx_touch" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_touch">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_trackpad" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_mw</name>
     <doc>Power of 'pp3300_dx_trackpad' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_trackpad" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_ma</name>
     <doc>Current of 'pp3300_dx_trackpad' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_trackpad" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_trackpad" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_ez_config</name>
     <doc>Good default config for 'pp3300_dx_trackpad' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dx_trackpad" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_trackpad">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_mv</name>
     <doc>Bus Voltage of 'pp3300_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dsw_ec" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_mw</name>
     <doc>Power of 'pp3300_dsw_ec' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dsw_ec" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_ma</name>
     <doc>Current of 'pp3300_dsw_ec' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dsw_ec" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dsw_ec" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_ez_config</name>
     <doc>Good default config for 'pp3300_dsw_ec' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dsw_ec" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dsw_ec">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>vbat_mv</name>
     <doc>Bus Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="vbat" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_mw</name>
     <doc>Power of 'vbat' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="vbat" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ma</name>
     <doc>Current of 'vbat' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="vbat" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_shuntmv</name>
     <doc>Shunt Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="vbat" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ez_config</name>
     <doc>Good default config for 'vbat' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="vbat" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="vbat">
     </params>
   </control>
   <control>
     <name>vbat_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>vbat_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>vbat_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>vbat_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>vbat_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>vbat_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>vbat_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>vbat_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mv</name>
     <doc>Bus Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_vcc" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mw</name>
     <doc>Power of 'ppvar_vcc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_vcc" nom="1.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ma</name>
     <doc>Current of 'ppvar_vcc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_vcc" nom="1.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_vcc" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ez_config</name>
     <doc>Good default config for 'ppvar_vcc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_vcc" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vcc">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mv</name>
     <doc>Bus Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_sa" nom="1.0" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mw</name>
     <doc>Power of 'ppvar_sa' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_sa" nom="1.0" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ma</name>
     <doc>Current of 'ppvar_sa' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_sa" nom="1.0" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_sa" nom="1.0" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ez_config</name>
     <doc>Good default config for 'ppvar_sa' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_sa" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sa">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sa_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sa_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_sa_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_sa_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mv</name>
     <doc>Bus Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_gt" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mw</name>
     <doc>Power of 'ppvar_gt' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_gt" nom="1.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ma</name>
     <doc>Current of 'ppvar_gt' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_gt" nom="1.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_gt" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ez_config</name>
     <doc>Good default config for 'ppvar_gt' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_gt" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_gt">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_gt_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_gt_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_gt_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_gt_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_mv</name>
     <doc>Bus Voltage of 'pp1800_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_dx_trackpad" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_mw</name>
     <doc>Power of 'pp1800_dx_trackpad' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_dx_trackpad" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_ma</name>
     <doc>Current of 'pp1800_dx_trackpad' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_dx_trackpad" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_dx_trackpad" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_ez_config</name>
     <doc>Good default config for 'pp1800_dx_trackpad' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_dx_trackpad" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dx_trackpad">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="68">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="68" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_kb_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_kb_bl" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mw</name>
     <doc>Power of 'ppvar_kb_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_kb_bl" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ma</name>
     <doc>Current of 'ppvar_kb_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_kb_bl" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_kb_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_kb_bl" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ez_config</name>
     <doc>Good default config for 'ppvar_kb_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_kb_bl" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_kb_bl">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j3</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_cam' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_cam" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_mw</name>
     <doc>Power of 'pp3300_dx_cam' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_cam" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_ma</name>
     <doc>Current of 'pp3300_dx_cam' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_cam" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_cam' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_cam" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_ez_config</name>
     <doc>Good default config for 'pp3300_dx_cam' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dx_cam" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_cam">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j3</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_st_mv</name>
     <doc>Bus Voltage of 'pp1000_st' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_st" nom="1.0" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_mw</name>
     <doc>Power of 'pp1000_st' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_st" nom="1.0" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_ma</name>
     <doc>Current of 'pp1000_st' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_st" nom="1.0" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_st' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_st" nom="1.0" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_ez_config</name>
     <doc>Good default config for 'pp1000_st' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1000_st" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_st">
     </params>
   </control>
   <control>
     <name>pp1000_st_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_st_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_st_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_st_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_st_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_st_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_st_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_st_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j3</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_stg_mv</name>
     <doc>Bus Voltage of 'pp1000_stg' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_stg" nom="1.0" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_mw</name>
     <doc>Power of 'pp1000_stg' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_stg" nom="1.0" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_ma</name>
     <doc>Current of 'pp1000_stg' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_stg" nom="1.0" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_stg' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_stg" nom="1.0" tags="shunt_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_ez_config</name>
     <doc>Good default config for 'pp1000_stg' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp1000_stg" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_stg">
     </params>
   </control>
   <control>
     <name>pp1000_stg_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_stg_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_stg_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_stg_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_stg_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_stg_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_stg_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j3</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="69">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="69" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev3.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev3.xml
index ad60b6d..e111f72 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev3.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev3.xml
@@ -1,2269 +1,2269 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:29 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:55 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp975_io_mv</name>
     <doc>Bus Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp975_io" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_mw</name>
     <doc>Power of 'pp975_io' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp975_io" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ma</name>
     <doc>Current of 'pp975_io' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp975_io" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_shuntmv</name>
     <doc>Shunt Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp975_io" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ez_config</name>
     <doc>Good default config for 'pp975_io' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp975_io" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp975_io">
     </params>
   </control>
   <control>
     <name>pp975_io_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp975_io_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp975_io_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp975_io_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp975_io_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp975_io_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp975_io_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp975_io_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mv</name>
     <doc>Bus Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp850_prim_core" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mw</name>
     <doc>Power of 'pp850_prim_core' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp850_prim_core" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ma</name>
     <doc>Current of 'pp850_prim_core' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp850_prim_core" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shuntmv</name>
     <doc>Shunt Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp850_prim_core" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ez_config</name>
     <doc>Good default config for 'pp850_prim_core' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp850_prim_core" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp850_prim_core">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mv</name>
     <doc>Bus Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dsw" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mw</name>
     <doc>Power of 'pp3300_dsw' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dsw" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ma</name>
     <doc>Current of 'pp3300_dsw' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dsw" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dsw" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ez_config</name>
     <doc>Good default config for 'pp3300_dsw' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dsw" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dsw">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_a_mv</name>
     <doc>Bus Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_a" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_mw</name>
     <doc>Power of 'pp3300_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_a" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ma</name>
     <doc>Current of 'pp3300_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_a" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ez_config</name>
     <doc>Good default config for 'pp3300_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_a">
     </params>
   </control>
   <control>
     <name>pp3300_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_a_mv</name>
     <doc>Bus Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_mw</name>
     <doc>Power of 'pp1800_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ma</name>
     <doc>Current of 'pp1800_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ez_config</name>
     <doc>Good default config for 'pp1800_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_a">
     </params>
   </control>
   <control>
     <name>pp1800_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_u_mv</name>
     <doc>Bus Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_u" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_mw</name>
     <doc>Power of 'pp1800_u' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_u" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ma</name>
     <doc>Current of 'pp1800_u' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_u" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_u" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ez_config</name>
     <doc>Good default config for 'pp1800_u' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_u" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_u">
     </params>
   </control>
   <control>
     <name>pp1800_u_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_u_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_u_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_u_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_u_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_u_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_u_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_u_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mv</name>
     <doc>Bus Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1200_vddq" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mw</name>
     <doc>Power of 'pp1200_vddq' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1200_vddq" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ma</name>
     <doc>Current of 'pp1200_vddq' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1200_vddq" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shuntmv</name>
     <doc>Shunt Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1200_vddq" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ez_config</name>
     <doc>Good default config for 'pp1200_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1200_vddq" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_vddq">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_a_mv</name>
     <doc>Bus Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_mw</name>
     <doc>Power of 'pp1000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ma</name>
     <doc>Current of 'pp1000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ez_config</name>
     <doc>Good default config for 'pp1000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1000_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_a">
     </params>
   </control>
   <control>
     <name>pp1000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_h1_mv</name>
     <doc>Bus Voltage of 'pp3300_h1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_h1" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_mw</name>
     <doc>Power of 'pp3300_h1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_h1" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_ma</name>
     <doc>Current of 'pp3300_h1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_h1" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_h1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_h1" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_ez_config</name>
     <doc>Good default config for 'pp3300_h1' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_h1" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_h1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_h1_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_h1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_h1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_h1_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_h1_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_h1_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_bl" nom="7.7" tags="bus_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mw</name>
     <doc>Power of 'ppvar_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_bl" nom="7.7" tags="power_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ma</name>
     <doc>Current of 'ppvar_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_bl" nom="7.7" tags="current_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_bl" nom="7.7" tags="shunt_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ez_config</name>
     <doc>Good default config for 'ppvar_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.05" map="on" base_name="ppvar_bl" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.05" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_bl_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mw</name>
     <doc>Power of 'pp3300_dx_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_wlan" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ma</name>
     <doc>Current of 'pp3300_dx_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_wlan" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_dx_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_edp" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mw</name>
     <doc>Power of 'pp3300_dx_edp' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_edp" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ma</name>
     <doc>Current of 'pp3300_dx_edp' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_edp" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_edp" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ez_config</name>
     <doc>Good default config for 'pp3300_dx_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_edp" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_edp">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_touch' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_touch" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_mw</name>
     <doc>Power of 'pp3300_dx_touch' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_touch" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_ma</name>
     <doc>Current of 'pp3300_dx_touch' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_touch" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_touch' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_touch" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_ez_config</name>
     <doc>Good default config for 'pp3300_dx_touch' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dx_touch" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_touch">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_trackpad" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_mw</name>
     <doc>Power of 'pp3300_dx_trackpad' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_trackpad" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_ma</name>
     <doc>Current of 'pp3300_dx_trackpad' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_trackpad" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_trackpad" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_ez_config</name>
     <doc>Good default config for 'pp3300_dx_trackpad' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dx_trackpad" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_trackpad">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_mv</name>
     <doc>Bus Voltage of 'pp3300_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dsw_ec" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_mw</name>
     <doc>Power of 'pp3300_dsw_ec' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dsw_ec" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_ma</name>
     <doc>Current of 'pp3300_dsw_ec' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dsw_ec" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dsw_ec" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_ez_config</name>
     <doc>Good default config for 'pp3300_dsw_ec' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dsw_ec" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dsw_ec">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>vbat_mv</name>
     <doc>Bus Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="vbat" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_mw</name>
     <doc>Power of 'vbat' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="vbat" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ma</name>
     <doc>Current of 'vbat' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="vbat" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_shuntmv</name>
     <doc>Shunt Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="vbat" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ez_config</name>
     <doc>Good default config for 'vbat' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="vbat" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="vbat">
     </params>
   </control>
   <control>
     <name>vbat_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>vbat_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>vbat_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>vbat_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>vbat_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>vbat_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>vbat_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>vbat_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mv</name>
     <doc>Bus Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_vcc" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mw</name>
     <doc>Power of 'ppvar_vcc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_vcc" nom="1.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ma</name>
     <doc>Current of 'ppvar_vcc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_vcc" nom="1.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_vcc" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ez_config</name>
     <doc>Good default config for 'ppvar_vcc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_vcc" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vcc">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mv</name>
     <doc>Bus Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_sa" nom="1.0" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mw</name>
     <doc>Power of 'ppvar_sa' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_sa" nom="1.0" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ma</name>
     <doc>Current of 'ppvar_sa' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_sa" nom="1.0" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_sa" nom="1.0" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ez_config</name>
     <doc>Good default config for 'ppvar_sa' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_sa" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sa">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sa_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sa_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_sa_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_sa_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mv</name>
     <doc>Bus Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_gt" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mw</name>
     <doc>Power of 'ppvar_gt' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_gt" nom="1.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ma</name>
     <doc>Current of 'ppvar_gt' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_gt" nom="1.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_gt" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ez_config</name>
     <doc>Good default config for 'ppvar_gt' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_gt" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_gt">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_gt_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_gt_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_gt_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_gt_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_mv</name>
     <doc>Bus Voltage of 'pp1800_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_dx_trackpad" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_mw</name>
     <doc>Power of 'pp1800_dx_trackpad' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_dx_trackpad" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_ma</name>
     <doc>Current of 'pp1800_dx_trackpad' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_dx_trackpad" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_dx_trackpad" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_ez_config</name>
     <doc>Good default config for 'pp1800_dx_trackpad' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_dx_trackpad" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dx_trackpad">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_kb_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_kb_bl" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mw</name>
     <doc>Power of 'ppvar_kb_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_kb_bl" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ma</name>
     <doc>Current of 'ppvar_kb_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_kb_bl" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_kb_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_kb_bl" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ez_config</name>
     <doc>Good default config for 'ppvar_kb_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_kb_bl" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_kb_bl">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_cam' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_cam" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_mw</name>
     <doc>Power of 'pp3300_dx_cam' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_cam" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_ma</name>
     <doc>Current of 'pp3300_dx_cam' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_cam" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_cam' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_cam" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_ez_config</name>
     <doc>Good default config for 'pp3300_dx_cam' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dx_cam" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_cam">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_st_mv</name>
     <doc>Bus Voltage of 'pp1000_st' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_st" nom="1.0" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_mw</name>
     <doc>Power of 'pp1000_st' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_st" nom="1.0" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_ma</name>
     <doc>Current of 'pp1000_st' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_st" nom="1.0" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_st' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_st" nom="1.0" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_ez_config</name>
     <doc>Good default config for 'pp1000_st' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1000_st" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_st">
     </params>
   </control>
   <control>
     <name>pp1000_st_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_st_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_st_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_st_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_st_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_st_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_st_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_st_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_stg_mv</name>
     <doc>Bus Voltage of 'pp1000_stg' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_stg" nom="1.0" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_mw</name>
     <doc>Power of 'pp1000_stg' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_stg" nom="1.0" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_ma</name>
     <doc>Current of 'pp1000_stg' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_stg" nom="1.0" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_stg' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_stg" nom="1.0" tags="shunt_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_ez_config</name>
     <doc>Good default config for 'pp1000_stg' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp1000_stg" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_stg">
     </params>
   </control>
   <control>
     <name>pp1000_stg_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_stg_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_stg_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_stg_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_stg_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_stg_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_stg_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp5000_a_mv</name>
     <doc>Bus Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp5000_a" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_mw</name>
     <doc>Power of 'pp5000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp5000_a" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_ma</name>
     <doc>Current of 'pp5000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp5000_a" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp5000_a" nom="5.0" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_ez_config</name>
     <doc>Good default config for 'pp5000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_a" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_a">
     </params>
   </control>
   <control>
     <name>pp5000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp5000_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp5000_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp5000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_mv</name>
     <doc>Bus Voltage of 'ppvar_nvme' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_nvme" nom="1.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.2" base_name="ppvar_nvme" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_mw</name>
     <doc>Power of 'ppvar_nvme' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_nvme" nom="1.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.2" base_name="ppvar_nvme" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_ma</name>
     <doc>Current of 'ppvar_nvme' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_nvme" nom="1.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.2" base_name="ppvar_nvme" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_nvme' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_nvme" nom="1.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.2" base_name="ppvar_nvme" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_ez_config</name>
     <doc>Good default config for 'ppvar_nvme' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_nvme" nom="1.2">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_nvme">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_mv</name>
     <doc>Bus Voltage of 'pp1800_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_dsw_ec" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_mw</name>
     <doc>Power of 'pp1800_dsw_ec' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_dsw_ec" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_ma</name>
     <doc>Current of 'pp1800_dsw_ec' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_dsw_ec" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_dsw_ec" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_ez_config</name>
     <doc>Good default config for 'pp1800_dsw_ec' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_dsw_ec" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dsw_ec">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_mv</name>
     <doc>Bus Voltage of 'pp1200_pll_oc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1200_pll_oc" nom="1.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.2" base_name="pp1200_pll_oc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_mw</name>
     <doc>Power of 'pp1200_pll_oc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1200_pll_oc" nom="1.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.2" base_name="pp1200_pll_oc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_ma</name>
     <doc>Current of 'pp1200_pll_oc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1200_pll_oc" nom="1.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.2" base_name="pp1200_pll_oc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_shuntmv</name>
     <doc>Shunt Voltage of 'pp1200_pll_oc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1200_pll_oc" nom="1.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.2" base_name="pp1200_pll_oc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_ez_config</name>
     <doc>Good default config for 'pp1200_pll_oc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1200_pll_oc" nom="1.2">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_pll_oc">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_mv</name>
     <doc>Bus Voltage of 'pp1800_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_dsw" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dsw" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_mw</name>
     <doc>Power of 'pp1800_dsw' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_dsw" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dsw" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ma</name>
     <doc>Current of 'pp1800_dsw' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_dsw" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dsw" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_dsw" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_dsw" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ez_config</name>
     <doc>Good default config for 'pp1800_dsw' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_dsw" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dsw">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev4.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev4.xml
index ad60b6d..e111f72 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev4.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev4.xml
@@ -1,2269 +1,2269 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:29 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:55 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp975_io_mv</name>
     <doc>Bus Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp975_io" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_mw</name>
     <doc>Power of 'pp975_io' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp975_io" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ma</name>
     <doc>Current of 'pp975_io' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp975_io" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_shuntmv</name>
     <doc>Shunt Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp975_io" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ez_config</name>
     <doc>Good default config for 'pp975_io' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp975_io" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp975_io">
     </params>
   </control>
   <control>
     <name>pp975_io_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp975_io_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp975_io_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp975_io_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp975_io_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp975_io_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp975_io_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp975_io_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mv</name>
     <doc>Bus Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp850_prim_core" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mw</name>
     <doc>Power of 'pp850_prim_core' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp850_prim_core" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ma</name>
     <doc>Current of 'pp850_prim_core' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp850_prim_core" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shuntmv</name>
     <doc>Shunt Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp850_prim_core" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ez_config</name>
     <doc>Good default config for 'pp850_prim_core' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp850_prim_core" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp850_prim_core">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mv</name>
     <doc>Bus Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dsw" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mw</name>
     <doc>Power of 'pp3300_dsw' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dsw" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ma</name>
     <doc>Current of 'pp3300_dsw' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dsw" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dsw" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ez_config</name>
     <doc>Good default config for 'pp3300_dsw' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dsw" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dsw">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_a_mv</name>
     <doc>Bus Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_a" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_mw</name>
     <doc>Power of 'pp3300_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_a" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ma</name>
     <doc>Current of 'pp3300_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_a" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ez_config</name>
     <doc>Good default config for 'pp3300_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_a">
     </params>
   </control>
   <control>
     <name>pp3300_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_a_mv</name>
     <doc>Bus Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_mw</name>
     <doc>Power of 'pp1800_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ma</name>
     <doc>Current of 'pp1800_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ez_config</name>
     <doc>Good default config for 'pp1800_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_a">
     </params>
   </control>
   <control>
     <name>pp1800_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_u_mv</name>
     <doc>Bus Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_u" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_mw</name>
     <doc>Power of 'pp1800_u' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_u" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ma</name>
     <doc>Current of 'pp1800_u' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_u" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_u" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ez_config</name>
     <doc>Good default config for 'pp1800_u' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_u" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_u">
     </params>
   </control>
   <control>
     <name>pp1800_u_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_u_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_u_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_u_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_u_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_u_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_u_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_u_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mv</name>
     <doc>Bus Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1200_vddq" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mw</name>
     <doc>Power of 'pp1200_vddq' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1200_vddq" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ma</name>
     <doc>Current of 'pp1200_vddq' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1200_vddq" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shuntmv</name>
     <doc>Shunt Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1200_vddq" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ez_config</name>
     <doc>Good default config for 'pp1200_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1200_vddq" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_vddq">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_a_mv</name>
     <doc>Bus Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_mw</name>
     <doc>Power of 'pp1000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ma</name>
     <doc>Current of 'pp1000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ez_config</name>
     <doc>Good default config for 'pp1000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1000_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_a">
     </params>
   </control>
   <control>
     <name>pp1000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_h1_mv</name>
     <doc>Bus Voltage of 'pp3300_h1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_h1" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_mw</name>
     <doc>Power of 'pp3300_h1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_h1" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_ma</name>
     <doc>Current of 'pp3300_h1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_h1" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_h1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_h1" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_h1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_ez_config</name>
     <doc>Good default config for 'pp3300_h1' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_h1" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_h1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_h1_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_h1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_h1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_h1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_h1_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_h1_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_h1_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_bl" nom="7.7" tags="bus_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mw</name>
     <doc>Power of 'ppvar_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_bl" nom="7.7" tags="power_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ma</name>
     <doc>Current of 'ppvar_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_bl" nom="7.7" tags="current_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_bl" nom="7.7" tags="shunt_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ez_config</name>
     <doc>Good default config for 'ppvar_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.05" map="on" base_name="ppvar_bl" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.05" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_bl_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mw</name>
     <doc>Power of 'pp3300_dx_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_wlan" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ma</name>
     <doc>Current of 'pp3300_dx_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_wlan" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_dx_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_edp" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mw</name>
     <doc>Power of 'pp3300_dx_edp' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_edp" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ma</name>
     <doc>Current of 'pp3300_dx_edp' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_edp" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_edp" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ez_config</name>
     <doc>Good default config for 'pp3300_dx_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_edp" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_edp">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_touch' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_touch" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_mw</name>
     <doc>Power of 'pp3300_dx_touch' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_touch" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_ma</name>
     <doc>Current of 'pp3300_dx_touch' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_touch" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_touch' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_touch" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_touch" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_ez_config</name>
     <doc>Good default config for 'pp3300_dx_touch' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dx_touch" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_touch">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_touch_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_trackpad" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_mw</name>
     <doc>Power of 'pp3300_dx_trackpad' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_trackpad" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_ma</name>
     <doc>Current of 'pp3300_dx_trackpad' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_trackpad" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_trackpad" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_ez_config</name>
     <doc>Good default config for 'pp3300_dx_trackpad' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dx_trackpad" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_trackpad">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_trackpad_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_mv</name>
     <doc>Bus Voltage of 'pp3300_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dsw_ec" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_mw</name>
     <doc>Power of 'pp3300_dsw_ec' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dsw_ec" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_ma</name>
     <doc>Current of 'pp3300_dsw_ec' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dsw_ec" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dsw_ec" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_ez_config</name>
     <doc>Good default config for 'pp3300_dsw_ec' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dsw_ec" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dsw_ec">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ec_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>vbat_mv</name>
     <doc>Bus Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="vbat" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_mw</name>
     <doc>Power of 'vbat' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="vbat" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ma</name>
     <doc>Current of 'vbat' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="vbat" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_shuntmv</name>
     <doc>Shunt Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="vbat" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ez_config</name>
     <doc>Good default config for 'vbat' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="vbat" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="vbat">
     </params>
   </control>
   <control>
     <name>vbat_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>vbat_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>vbat_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>vbat_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>vbat_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>vbat_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>vbat_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>vbat_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mv</name>
     <doc>Bus Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_vcc" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mw</name>
     <doc>Power of 'ppvar_vcc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_vcc" nom="1.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ma</name>
     <doc>Current of 'ppvar_vcc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_vcc" nom="1.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_vcc" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ez_config</name>
     <doc>Good default config for 'ppvar_vcc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_vcc" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vcc">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mv</name>
     <doc>Bus Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_sa" nom="1.0" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mw</name>
     <doc>Power of 'ppvar_sa' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_sa" nom="1.0" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ma</name>
     <doc>Current of 'ppvar_sa' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_sa" nom="1.0" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_sa" nom="1.0" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ez_config</name>
     <doc>Good default config for 'ppvar_sa' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_sa" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sa">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sa_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sa_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_sa_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_sa_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mv</name>
     <doc>Bus Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_gt" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mw</name>
     <doc>Power of 'ppvar_gt' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_gt" nom="1.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ma</name>
     <doc>Current of 'ppvar_gt' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_gt" nom="1.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_gt" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ez_config</name>
     <doc>Good default config for 'ppvar_gt' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_gt" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_gt">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_gt_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_gt_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_gt_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_gt_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_mv</name>
     <doc>Bus Voltage of 'pp1800_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_dx_trackpad" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_mw</name>
     <doc>Power of 'pp1800_dx_trackpad' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_dx_trackpad" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_ma</name>
     <doc>Current of 'pp1800_dx_trackpad' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_dx_trackpad" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_dx_trackpad' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_dx_trackpad" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_dx_trackpad" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_ez_config</name>
     <doc>Good default config for 'pp1800_dx_trackpad' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_dx_trackpad" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dx_trackpad">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_dx_trackpad_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="72">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="72" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_kb_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_kb_bl" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mw</name>
     <doc>Power of 'ppvar_kb_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_kb_bl" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ma</name>
     <doc>Current of 'ppvar_kb_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_kb_bl" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_kb_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_kb_bl" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="ppvar_kb_bl" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ez_config</name>
     <doc>Good default config for 'ppvar_kb_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_kb_bl" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_kb_bl">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_cam' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_cam" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_mw</name>
     <doc>Power of 'pp3300_dx_cam' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_cam" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_ma</name>
     <doc>Current of 'pp3300_dx_cam' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_cam" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_cam' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_cam" nom="3.3" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_cam" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_ez_config</name>
     <doc>Good default config for 'pp3300_dx_cam' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_dx_cam" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_cam">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_cam_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_st_mv</name>
     <doc>Bus Voltage of 'pp1000_st' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_st" nom="1.0" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_mw</name>
     <doc>Power of 'pp1000_st' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_st" nom="1.0" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_ma</name>
     <doc>Current of 'pp1000_st' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_st" nom="1.0" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_st' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_st" nom="1.0" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="pp1000_st" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_st_ez_config</name>
     <doc>Good default config for 'pp1000_st' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1000_st" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_st">
     </params>
   </control>
   <control>
     <name>pp1000_st_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_st_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_st_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_st_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_st_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_st_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_st_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_st_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_stg_mv</name>
     <doc>Bus Voltage of 'pp1000_stg' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_stg" nom="1.0" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_mw</name>
     <doc>Power of 'pp1000_stg' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_stg" nom="1.0" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_ma</name>
     <doc>Current of 'pp1000_stg' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_stg" nom="1.0" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_stg' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_stg" nom="1.0" tags="shunt_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="pp1000_stg" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_ez_config</name>
     <doc>Good default config for 'pp1000_stg' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp1000_stg" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_stg">
     </params>
   </control>
   <control>
     <name>pp1000_stg_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_stg_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_stg_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_stg_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_stg_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_stg_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_stg_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_stg_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="73">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="73" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp5000_a_mv</name>
     <doc>Bus Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp5000_a" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_mw</name>
     <doc>Power of 'pp5000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp5000_a" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_ma</name>
     <doc>Current of 'pp5000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp5000_a" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp5000_a" nom="5.0" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_a_ez_config</name>
     <doc>Good default config for 'pp5000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_a" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_a">
     </params>
   </control>
   <control>
     <name>pp5000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp5000_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp5000_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp5000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_mv</name>
     <doc>Bus Voltage of 'ppvar_nvme' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_nvme" nom="1.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.2" base_name="ppvar_nvme" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_mw</name>
     <doc>Power of 'ppvar_nvme' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_nvme" nom="1.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.2" base_name="ppvar_nvme" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_ma</name>
     <doc>Current of 'ppvar_nvme' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_nvme" nom="1.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.2" base_name="ppvar_nvme" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_nvme' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_nvme" nom="1.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.2" base_name="ppvar_nvme" rsense="0.1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_ez_config</name>
     <doc>Good default config for 'ppvar_nvme' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="ppvar_nvme" nom="1.2">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_nvme">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_nvme_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_mv</name>
     <doc>Bus Voltage of 'pp1800_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_dsw_ec" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_mw</name>
     <doc>Power of 'pp1800_dsw_ec' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_dsw_ec" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_ma</name>
     <doc>Current of 'pp1800_dsw_ec' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_dsw_ec" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_dsw_ec' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_dsw_ec" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_dsw_ec" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_ez_config</name>
     <doc>Good default config for 'pp1800_dsw_ec' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_dsw_ec" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dsw_ec">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ec_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_mv</name>
     <doc>Bus Voltage of 'pp1200_pll_oc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1200_pll_oc" nom="1.2" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.2" base_name="pp1200_pll_oc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_mw</name>
     <doc>Power of 'pp1200_pll_oc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1200_pll_oc" nom="1.2" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.2" base_name="pp1200_pll_oc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_ma</name>
     <doc>Current of 'pp1200_pll_oc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1200_pll_oc" nom="1.2" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.2" base_name="pp1200_pll_oc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_shuntmv</name>
     <doc>Shunt Voltage of 'pp1200_pll_oc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1200_pll_oc" nom="1.2" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.2" base_name="pp1200_pll_oc" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_ez_config</name>
     <doc>Good default config for 'pp1200_pll_oc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1200_pll_oc" nom="1.2">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.2" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_pll_oc">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1200_pll_oc_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="74">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="74" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_mv</name>
     <doc>Bus Voltage of 'pp1800_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_dsw" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dsw" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_mw</name>
     <doc>Power of 'pp1800_dsw' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_dsw" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dsw" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ma</name>
     <doc>Current of 'pp1800_dsw' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_dsw" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dsw" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_dsw" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_dsw" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_ez_config</name>
     <doc>Good default config for 'pp1800_dsw' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_dsw" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dsw">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_dsw_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="75">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="75" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev5.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev5.xml
index c403932..926cb97 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev5.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev5.xml
@@ -1,1177 +1,1177 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:35 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:16:00 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp975_io_mv</name>
     <doc>Bus Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp975_io" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_mw</name>
     <doc>Power of 'pp975_io' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp975_io" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ma</name>
     <doc>Current of 'pp975_io' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp975_io" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_shuntmv</name>
     <doc>Shunt Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp975_io" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ez_config</name>
     <doc>Good default config for 'pp975_io' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp975_io" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp975_io">
     </params>
   </control>
   <control>
     <name>pp975_io_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp975_io_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp975_io_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp975_io_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp975_io_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp975_io_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp975_io_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp975_io_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mv</name>
     <doc>Bus Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp850_prim_core" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mw</name>
     <doc>Power of 'pp850_prim_core' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp850_prim_core" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ma</name>
     <doc>Current of 'pp850_prim_core' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp850_prim_core" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shuntmv</name>
     <doc>Shunt Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp850_prim_core" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ez_config</name>
     <doc>Good default config for 'pp850_prim_core' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp850_prim_core" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp850_prim_core">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mv</name>
     <doc>Bus Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dsw" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mw</name>
     <doc>Power of 'pp3300_dsw' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dsw" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ma</name>
     <doc>Current of 'pp3300_dsw' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dsw" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dsw" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ez_config</name>
     <doc>Good default config for 'pp3300_dsw' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dsw" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dsw">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_a_mv</name>
     <doc>Bus Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_a" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_mw</name>
     <doc>Power of 'pp3300_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_a" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ma</name>
     <doc>Current of 'pp3300_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_a" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ez_config</name>
     <doc>Good default config for 'pp3300_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_a">
     </params>
   </control>
   <control>
     <name>pp3300_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_a_mv</name>
     <doc>Bus Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_mw</name>
     <doc>Power of 'pp1800_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ma</name>
     <doc>Current of 'pp1800_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ez_config</name>
     <doc>Good default config for 'pp1800_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_a">
     </params>
   </control>
   <control>
     <name>pp1800_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_u_mv</name>
     <doc>Bus Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_u" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_mw</name>
     <doc>Power of 'pp1800_u' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_u" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ma</name>
     <doc>Current of 'pp1800_u' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_u" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_u" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ez_config</name>
     <doc>Good default config for 'pp1800_u' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_u" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_u">
     </params>
   </control>
   <control>
     <name>pp1800_u_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_u_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_u_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_u_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_u_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_u_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_u_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_u_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mv</name>
     <doc>Bus Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1200_vddq" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mw</name>
     <doc>Power of 'pp1200_vddq' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1200_vddq" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ma</name>
     <doc>Current of 'pp1200_vddq' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1200_vddq" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shuntmv</name>
     <doc>Shunt Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1200_vddq" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ez_config</name>
     <doc>Good default config for 'pp1200_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1200_vddq" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_vddq">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_a_mv</name>
     <doc>Bus Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_mw</name>
     <doc>Power of 'pp1000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ma</name>
     <doc>Current of 'pp1000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ez_config</name>
     <doc>Good default config for 'pp1000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1000_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_a">
     </params>
   </control>
   <control>
     <name>pp1000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mw</name>
     <doc>Power of 'pp3300_dx_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_wlan" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ma</name>
     <doc>Current of 'pp3300_dx_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_wlan" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_dx_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_edp" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mw</name>
     <doc>Power of 'pp3300_dx_edp' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_edp" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ma</name>
     <doc>Current of 'pp3300_dx_edp' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_edp" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_edp" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ez_config</name>
     <doc>Good default config for 'pp3300_dx_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_edp" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_edp">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>vbat_mv</name>
     <doc>Bus Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="vbat" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_mw</name>
     <doc>Power of 'vbat' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="vbat" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ma</name>
     <doc>Current of 'vbat' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="vbat" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_shuntmv</name>
     <doc>Shunt Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="vbat" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ez_config</name>
     <doc>Good default config for 'vbat' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="vbat" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="vbat">
     </params>
   </control>
   <control>
     <name>vbat_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>vbat_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>vbat_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>vbat_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>vbat_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>vbat_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>vbat_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>vbat_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mv</name>
     <doc>Bus Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_vcc" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mw</name>
     <doc>Power of 'ppvar_vcc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_vcc" nom="1.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ma</name>
     <doc>Current of 'ppvar_vcc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_vcc" nom="1.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_vcc" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ez_config</name>
     <doc>Good default config for 'ppvar_vcc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_vcc" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vcc">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mv</name>
     <doc>Bus Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_sa" nom="1.0" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mw</name>
     <doc>Power of 'ppvar_sa' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_sa" nom="1.0" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ma</name>
     <doc>Current of 'ppvar_sa' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_sa" nom="1.0" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_sa" nom="1.0" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ez_config</name>
     <doc>Good default config for 'ppvar_sa' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_sa" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sa">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sa_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sa_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_sa_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_sa_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mv</name>
     <doc>Bus Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_gt" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mw</name>
     <doc>Power of 'ppvar_gt' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_gt" nom="1.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ma</name>
     <doc>Current of 'ppvar_gt' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_gt" nom="1.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_gt" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ez_config</name>
     <doc>Good default config for 'ppvar_gt' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_gt" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_gt">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_gt_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_gt_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_gt_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_gt_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j4</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_bl" nom="7.7" tags="bus_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mw</name>
     <doc>Power of 'ppvar_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_bl" nom="7.7" tags="power_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ma</name>
     <doc>Current of 'ppvar_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_bl" nom="7.7" tags="current_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_bl" nom="7.7" tags="shunt_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ez_config</name>
     <doc>Good default config for 'ppvar_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.05" map="on" base_name="ppvar_bl" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.05" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_bl_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev6.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev6.xml
index 2ff5f1d..3a51506 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev6.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/atlas_rev6.xml
@@ -1,1255 +1,1255 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:24 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:50 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp975_io_mv</name>
     <doc>Bus Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp975_io" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_mw</name>
     <doc>Power of 'pp975_io' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp975_io" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ma</name>
     <doc>Current of 'pp975_io' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp975_io" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_shuntmv</name>
     <doc>Shunt Voltage of 'pp975_io' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp975_io" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp975_io" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp975_io_ez_config</name>
     <doc>Good default config for 'pp975_io' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp975_io" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp975_io">
     </params>
   </control>
   <control>
     <name>pp975_io_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp975_io_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp975_io_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp975_io_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp975_io_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp975_io_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp975_io_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp975_io_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mv</name>
     <doc>Bus Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp850_prim_core" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_mw</name>
     <doc>Power of 'pp850_prim_core' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp850_prim_core" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ma</name>
     <doc>Current of 'pp850_prim_core' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp850_prim_core" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shuntmv</name>
     <doc>Shunt Voltage of 'pp850_prim_core' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp850_prim_core" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp850_prim_core" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_ez_config</name>
     <doc>Good default config for 'pp850_prim_core' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp850_prim_core" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp850_prim_core">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp850_prim_core_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mv</name>
     <doc>Bus Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dsw" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_mw</name>
     <doc>Power of 'pp3300_dsw' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dsw" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ma</name>
     <doc>Current of 'pp3300_dsw' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dsw" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dsw' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dsw" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dsw" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_ez_config</name>
     <doc>Good default config for 'pp3300_dsw' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dsw" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dsw">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dsw_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_a_mv</name>
     <doc>Bus Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_a" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_mw</name>
     <doc>Power of 'pp3300_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_a" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ma</name>
     <doc>Current of 'pp3300_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_a" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp3300_a" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_a_ez_config</name>
     <doc>Good default config for 'pp3300_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_a">
     </params>
   </control>
   <control>
     <name>pp3300_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_a_mv</name>
     <doc>Bus Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_mw</name>
     <doc>Power of 'pp1800_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ma</name>
     <doc>Current of 'pp1800_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_a_ez_config</name>
     <doc>Good default config for 'pp1800_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_a">
     </params>
   </control>
   <control>
     <name>pp1800_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_u_mv</name>
     <doc>Bus Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_u" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_mw</name>
     <doc>Power of 'pp1800_u' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_u" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ma</name>
     <doc>Current of 'pp1800_u' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_u" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_u' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_u" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1800_u" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_u_ez_config</name>
     <doc>Good default config for 'pp1800_u' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_u" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_u">
     </params>
   </control>
   <control>
     <name>pp1800_u_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_u_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_u_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_u_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_u_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_u_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_u_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_u_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mv</name>
     <doc>Bus Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1200_vddq" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_mw</name>
     <doc>Power of 'pp1200_vddq' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1200_vddq" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ma</name>
     <doc>Current of 'pp1200_vddq' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1200_vddq" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shuntmv</name>
     <doc>Shunt Voltage of 'pp1200_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1200_vddq" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1200_vddq" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_ez_config</name>
     <doc>Good default config for 'pp1200_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1200_vddq" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_vddq">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1200_vddq_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1000_a_mv</name>
     <doc>Bus Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1000_a" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_mw</name>
     <doc>Power of 'pp1000_a' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1000_a" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ma</name>
     <doc>Current of 'pp1000_a' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1000_a" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_shuntmv</name>
     <doc>Shunt Voltage of 'pp1000_a' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1000_a" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="pp1000_a" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1000_a_ez_config</name>
     <doc>Good default config for 'pp1000_a' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1000_a" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1000_a">
     </params>
   </control>
   <control>
     <name>pp1000_a_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1000_a_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1000_a_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1000_a_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1000_a_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1000_a_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1000_a_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1000_a_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_wlan" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_mw</name>
     <doc>Power of 'pp3300_dx_wlan' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_wlan" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ma</name>
     <doc>Current of 'pp3300_dx_wlan' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_wlan" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_wlan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_wlan" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_wlan" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_ez_config</name>
     <doc>Good default config for 'pp3300_dx_wlan' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_wlan" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_wlan">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_wlan_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mv</name>
     <doc>Bus Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_dx_edp" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_mw</name>
     <doc>Power of 'pp3300_dx_edp' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_dx_edp" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ma</name>
     <doc>Current of 'pp3300_dx_edp' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_dx_edp" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_dx_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_dx_edp" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_dx_edp" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_ez_config</name>
     <doc>Good default config for 'pp3300_dx_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_dx_edp" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_dx_edp">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_dx_edp_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>vbat_mv</name>
     <doc>Bus Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="vbat" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_mw</name>
     <doc>Power of 'vbat' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="vbat" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ma</name>
     <doc>Current of 'vbat' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="vbat" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_shuntmv</name>
     <doc>Shunt Voltage of 'vbat' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="vbat" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="vbat" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_ez_config</name>
     <doc>Good default config for 'vbat' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="vbat" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="vbat">
     </params>
   </control>
   <control>
     <name>vbat_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>vbat_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>vbat_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>vbat_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>vbat_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>vbat_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>vbat_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>vbat_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mv</name>
     <doc>Bus Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_vcc" nom="1.0" tags="bus_voltage_rail" rsense="0.003">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.003">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_mw</name>
     <doc>Power of 'ppvar_vcc' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_vcc" nom="1.0" tags="power_rail" rsense="0.003">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.003">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ma</name>
     <doc>Current of 'ppvar_vcc' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_vcc" nom="1.0" tags="current_rail" rsense="0.003">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.003">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vcc' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_vcc" nom="1.0" tags="shunt_voltage_rail" rsense="0.003">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_vcc" rsense="0.003">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_ez_config</name>
     <doc>Good default config for 'ppvar_vcc' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.003" map="on" base_name="ppvar_vcc" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.003" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vcc">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vcc_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mv</name>
     <doc>Bus Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_sa" nom="1.0" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_mw</name>
     <doc>Power of 'ppvar_sa' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_sa" nom="1.0" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ma</name>
     <doc>Current of 'ppvar_sa' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_sa" nom="1.0" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sa' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_sa" nom="1.0" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_sa" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sa_ez_config</name>
     <doc>Good default config for 'ppvar_sa' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_sa" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sa">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sa_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sa_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sa_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sa_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_sa_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_sa_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mv</name>
     <doc>Bus Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_gt" nom="1.0" tags="bus_voltage_rail" rsense="0.003">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.003">
     </params>
   </control>
   <control>
     <name>ppvar_gt_mw</name>
     <doc>Power of 'ppvar_gt' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_gt" nom="1.0" tags="power_rail" rsense="0.003">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_gt" rsense="0.003">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ma</name>
     <doc>Current of 'ppvar_gt' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_gt" nom="1.0" tags="current_rail" rsense="0.003">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_gt" rsense="0.003">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_gt' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_gt" nom="1.0" tags="shunt_voltage_rail" rsense="0.003">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_gt" rsense="0.003">
     </params>
   </control>
   <control>
     <name>ppvar_gt_ez_config</name>
     <doc>Good default config for 'ppvar_gt' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.003" map="on" base_name="ppvar_gt" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.0" rsense="0.003" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_gt">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_gt_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_gt_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_gt_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_gt_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_gt_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_gt_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_bl" nom="7.7" tags="bus_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_mw</name>
     <doc>Power of 'ppvar_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_bl" nom="7.7" tags="power_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ma</name>
     <doc>Current of 'ppvar_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_bl" nom="7.7" tags="current_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_bl" nom="7.7" tags="shunt_voltage_rail" rsense="0.05">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="ppvar_bl" rsense="0.05">
     </params>
   </control>
   <control>
     <name>ppvar_bl_ez_config</name>
     <doc>Good default config for 'ppvar_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.05" map="on" base_name="ppvar_bl" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.05" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_bl">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_bl_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_bl_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_bl_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_bl_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mv</name>
     <doc>Bus Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_vbus_in" nom="15.0" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="15.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mw</name>
     <doc>Power of 'ppvar_vbus_in' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_vbus_in" nom="15.0" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="15.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ma</name>
     <doc>Current of 'ppvar_vbus_in' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_vbus_in" nom="15.0" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="15.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_vbus_in" nom="15.0" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="15.0" base_name="ppvar_vbus_in" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ez_config</name>
     <doc>Good default config for 'ppvar_vbus_in' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="ppvar_vbus_in" nom="15.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="15.0" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vbus_in">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/batt_loc.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/batt_loc.xml
index a682caf..3248a00 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/batt_loc.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/batt_loc.xml
@@ -1,163 +1,163 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:26 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:52 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>vbat_100mohm_mv</name>
     <doc>Bus Voltage of 'vbat_100mohm' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="vbat_100mohm" nom="7.7" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="vbat_100mohm" rsense="0.1">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_mw</name>
     <doc>Power of 'vbat_100mohm' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="vbat_100mohm" nom="7.7" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="vbat_100mohm" rsense="0.1">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_ma</name>
     <doc>Current of 'vbat_100mohm' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="vbat_100mohm" nom="7.7" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="vbat_100mohm" rsense="0.1">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_shuntmv</name>
     <doc>Shunt Voltage of 'vbat_100mohm' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="vbat_100mohm" nom="7.7" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="vbat_100mohm" rsense="0.1">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_ez_config</name>
     <doc>Good default config for 'vbat_100mohm' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="vbat_100mohm" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="vbat_100mohm">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>vbat_100mohm_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_mv</name>
     <doc>Bus Voltage of 'vbat_010mohm' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="vbat_010mohm" nom="7.7" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="7.7" base_name="vbat_010mohm" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_mw</name>
     <doc>Power of 'vbat_010mohm' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="vbat_010mohm" nom="7.7" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="7.7" base_name="vbat_010mohm" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_ma</name>
     <doc>Current of 'vbat_010mohm' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="vbat_010mohm" nom="7.7" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="7.7" base_name="vbat_010mohm" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_shuntmv</name>
     <doc>Shunt Voltage of 'vbat_010mohm' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="vbat_010mohm" nom="7.7" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="7.7" base_name="vbat_010mohm" rsense="0.01">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_ez_config</name>
     <doc>Good default config for 'vbat_010mohm' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="vbat_010mohm" nom="7.7">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="7.7" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="vbat_010mohm">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>vbat_010mohm_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brask_rev0.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brask_rev0.xml
index 5cf2920..607f7de 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brask_rev0.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brask_rev0.xml
@@ -1,601 +1,601 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:26 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:52 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp1800_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp1800_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_mw</name>
     <doc>Power of 'pp1800_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp1800_s5" nom="1.8" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ma</name>
     <doc>Current of 'pp1800_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp1800_s5" nom="1.8" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp1800_s5" nom="1.8" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ez_config</name>
     <doc>Good default config for 'pp1800_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp1800_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="1.8" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_s5">
     </params>
   </control>
   <control>
     <name>pp1800_s5_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_s5_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_s5_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1200_dram_mv</name>
     <doc>Bus Voltage of 'pp1200_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp1200_dram" nom="1.2" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="1.2" base_name="pp1200_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1200_dram_mw</name>
     <doc>Power of 'pp1200_dram' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp1200_dram" nom="1.2" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="1.2" base_name="pp1200_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1200_dram_ma</name>
     <doc>Current of 'pp1200_dram' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp1200_dram" nom="1.2" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="1.2" base_name="pp1200_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1200_dram_shuntmv</name>
     <doc>Shunt Voltage of 'pp1200_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp1200_dram" nom="1.2" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.2" base_name="pp1200_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1200_dram_ez_config</name>
     <doc>Good default config for 'pp1200_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp1200_dram" nom="1.2">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="1.2" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp1200_dram">
     </params>
   </control>
   <control>
     <name>pp1200_dram_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1200_dram_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1200_dram_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1200_dram_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp2500_dram_mv</name>
     <doc>Bus Voltage of 'pp2500_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp2500_dram" nom="2.5" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="2.5" base_name="pp2500_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp2500_dram_mw</name>
     <doc>Power of 'pp2500_dram' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp2500_dram" nom="2.5" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="2.5" base_name="pp2500_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp2500_dram_ma</name>
     <doc>Current of 'pp2500_dram' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp2500_dram" nom="2.5" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="2.5" base_name="pp2500_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp2500_dram_shuntmv</name>
     <doc>Shunt Voltage of 'pp2500_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp2500_dram" nom="2.5" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="2.5" base_name="pp2500_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp2500_dram_ez_config</name>
     <doc>Good default config for 'pp2500_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp2500_dram" nom="2.5">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="2.5" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp2500_dram">
     </params>
   </control>
   <control>
     <name>pp2500_dram_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp2500_dram_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp2500_dram_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp2500_dram_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_sys_qi_mv</name>
     <doc>Bus Voltage of 'ppvar_sys_qi' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_sys_qi" nom="20.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="20.0" base_name="ppvar_sys_qi" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_qi_mw</name>
     <doc>Power of 'ppvar_sys_qi' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_sys_qi" nom="20.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="20.0" base_name="ppvar_sys_qi" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_qi_ma</name>
     <doc>Current of 'ppvar_sys_qi' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_sys_qi" nom="20.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="20.0" base_name="ppvar_sys_qi" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_qi_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_sys_qi' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_sys_qi" nom="20.0" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="20.0" base_name="ppvar_sys_qi" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_qi_ez_config</name>
     <doc>Good default config for 'ppvar_sys_qi' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_sys_qi" nom="20.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="20.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sys_qi">
     </params>
   </control>
   <control>
     <name>ppvar_sys_qi_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_sys_qi_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_qi_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sys_qi_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_mv</name>
     <doc>Bus Voltage of 'pp3300_ssd_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_ssd_x" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_mw</name>
     <doc>Power of 'pp3300_ssd_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_ssd_x" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ma</name>
     <doc>Current of 'pp3300_ssd_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_ssd_x" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_ssd_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_ssd_x" nom="3.3" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ez_config</name>
     <doc>Good default config for 'pp3300_ssd_x' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_ssd_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ssd_x">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp5000_s5_mv</name>
     <doc>Bus Voltage of 'pp5000_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp5000_s5" nom="5.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_s5" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_s5_mw</name>
     <doc>Power of 'pp5000_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp5000_s5" nom="5.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_s5" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_s5_ma</name>
     <doc>Current of 'pp5000_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp5000_s5" nom="5.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_s5" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_s5_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp5000_s5" nom="5.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_s5" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_s5_ez_config</name>
     <doc>Good default config for 'pp5000_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp5000_s5" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="5.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_s5">
     </params>
   </control>
   <control>
     <name>pp5000_s5_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_s5_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_s5_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp5000_z1_mv</name>
     <doc>Bus Voltage of 'pp5000_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp5000_z1" nom="5.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_mw</name>
     <doc>Power of 'pp5000_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp5000_z1" nom="5.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ma</name>
     <doc>Current of 'pp5000_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp5000_z1" nom="5.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp5000_z1" nom="5.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ez_config</name>
     <doc>Good default config for 'pp5000_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp5000_z1" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="5.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_z1">
     </params>
   </control>
   <control>
     <name>pp5000_z1_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_z1_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp5000_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp5000_z1_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_s5_mv</name>
     <doc>Bus Voltage of 'pp3300_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp3300_s5" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_mw</name>
     <doc>Power of 'pp3300_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp3300_s5" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ma</name>
     <doc>Current of 'pp3300_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp3300_s5" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp3300_s5" nom="3.3" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ez_config</name>
     <doc>Good default config for 'pp3300_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_s5">
     </params>
   </control>
   <control>
     <name>pp3300_s5_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_s5_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_s5_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_mv</name>
     <doc>Bus Voltage of 'ppvar_vccin_aux' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="ppvar_vccin_aux" nom="1.0" tags="bus_voltage_rail" rsense="0.0001">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_vccin_aux" rsense="0.0001">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_mw</name>
     <doc>Power of 'ppvar_vccin_aux' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="ppvar_vccin_aux" nom="1.0" tags="power_rail" rsense="0.0001">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_vccin_aux" rsense="0.0001">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ma</name>
     <doc>Current of 'ppvar_vccin_aux' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="ppvar_vccin_aux" nom="1.0" tags="current_rail" rsense="0.0001">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_vccin_aux" rsense="0.0001">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vccin_aux' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="ppvar_vccin_aux" nom="1.0" tags="shunt_voltage_rail" rsense="0.0001">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_vccin_aux" rsense="0.0001">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ez_config</name>
     <doc>Good default config for 'ppvar_vccin_aux' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0001" map="on" base_name="ppvar_vccin_aux" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="1.0" rsense="0.0001" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vccin_aux">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_z1_mv</name>
     <doc>Bus Voltage of 'pp3300_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_z1" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_z1" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z1_mw</name>
     <doc>Power of 'pp3300_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_z1" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_z1" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ma</name>
     <doc>Current of 'pp3300_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_z1" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_z1" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z1_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_z1" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_z1" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ez_config</name>
     <doc>Good default config for 'pp3300_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_z1">
     </params>
   </control>
   <control>
     <name>pp3300_z1_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_z1_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp3300_wlan_x" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mw</name>
     <doc>Power of 'pp3300_wlan_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp3300_wlan_x" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ma</name>
     <doc>Current of 'pp3300_wlan_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp3300_wlan_x" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_wlan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp3300_wlan_x" nom="3.3" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ez_config</name>
     <doc>Good default config for 'pp3300_wlan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_wlan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev0.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev0.xml
index ad72f6e..290876a 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev0.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev0.xml
@@ -1,547 +1,547 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:24 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:51 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp3300_edp_dx_mv</name>
     <doc>Bus Voltage of 'pp3300_edp_dx' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_edp_dx" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_edp_dx" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_dx_mw</name>
     <doc>Power of 'pp3300_edp_dx' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_edp_dx" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_edp_dx" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_dx_ma</name>
     <doc>Current of 'pp3300_edp_dx' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_edp_dx" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_edp_dx" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_dx_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_edp_dx' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_edp_dx" nom="3.3" tags="shunt_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_edp_dx" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_dx_ez_config</name>
     <doc>Good default config for 'pp3300_edp_dx' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_edp_dx" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_edp_dx">
     </params>
   </control>
   <control>
     <name>pp3300_edp_dx_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_edp_dx_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_edp_dx_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_edp_dx_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1100_dram_mv</name>
     <doc>Bus Voltage of 'pp1100_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp1100_dram" nom="1.1" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_mw</name>
     <doc>Power of 'pp1100_dram' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp1100_dram" nom="1.1" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ma</name>
     <doc>Current of 'pp1100_dram' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp1100_dram" nom="1.1" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_shuntmv</name>
     <doc>Shunt Voltage of 'pp1100_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp1100_dram" nom="1.1" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ez_config</name>
     <doc>Good default config for 'pp1100_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp1100_dram" nom="1.1">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="1.1" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp1100_dram">
     </params>
   </control>
   <control>
     <name>pp1100_dram_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1100_dram_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1100_dram_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1800_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp1800_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_mw</name>
     <doc>Power of 'pp1800_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp1800_s5" nom="1.8" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ma</name>
     <doc>Current of 'pp1800_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp1800_s5" nom="1.8" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp1800_s5" nom="1.8" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ez_config</name>
     <doc>Good default config for 'pp1800_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp1800_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="1.8" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_s5">
     </params>
   </control>
   <control>
     <name>pp1800_s5_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_s5_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_s5_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_mv</name>
     <doc>Bus Voltage of 'pp3300_fp_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp3300_fp_x" nom="3.3" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_mw</name>
     <doc>Power of 'pp3300_fp_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp3300_fp_x" nom="3.3" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ma</name>
     <doc>Current of 'pp3300_fp_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp3300_fp_x" nom="3.3" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_fp_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp3300_fp_x" nom="3.3" tags="shunt_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ez_config</name>
     <doc>Good default config for 'pp3300_fp_x' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp3300_fp_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="3.3" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_fp_x">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_mv</name>
     <doc>Bus Voltage of 'pp1800_fp_sens' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp1800_fp_sens" nom="1.8" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_mw</name>
     <doc>Power of 'pp1800_fp_sens' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp1800_fp_sens" nom="1.8" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ma</name>
     <doc>Current of 'pp1800_fp_sens' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp1800_fp_sens" nom="1.8" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_fp_sens' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp1800_fp_sens" nom="1.8" tags="shunt_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ez_config</name>
     <doc>Good default config for 'pp1800_fp_sens' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp1800_fp_sens" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="1.8" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_fp_sens">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp5000_z1_mv</name>
     <doc>Bus Voltage of 'pp5000_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" base_name="pp5000_z1" nom="5.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_mw</name>
     <doc>Power of 'pp5000_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" base_name="pp5000_z1" nom="5.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ma</name>
     <doc>Current of 'pp5000_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" base_name="pp5000_z1" nom="5.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" base_name="pp5000_z1" nom="5.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ez_config</name>
     <doc>Good default config for 'pp5000_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp5000_z1" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="0" subtype="ez_config" nom="5.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_z1">
     </params>
   </control>
   <control>
     <name>pp5000_z1_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_z1_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_z1_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_s5_mv</name>
     <doc>Bus Voltage of 'pp3300_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_s5" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_mw</name>
     <doc>Power of 'pp3300_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_s5" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ma</name>
     <doc>Current of 'pp3300_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_s5" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_s5" nom="3.3" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ez_config</name>
     <doc>Good default config for 'pp3300_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_s5">
     </params>
   </control>
   <control>
     <name>pp3300_s5_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_s5_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_mv</name>
     <doc>Bus Voltage of 'ppvar_vccin_aux' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="ppvar_vccin_aux" nom="1.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="1.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_mw</name>
     <doc>Power of 'ppvar_vccin_aux' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="ppvar_vccin_aux" nom="1.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="1.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ma</name>
     <doc>Current of 'ppvar_vccin_aux' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="ppvar_vccin_aux" nom="1.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="1.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vccin_aux' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="ppvar_vccin_aux" nom="1.0" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ez_config</name>
     <doc>Good default config for 'ppvar_vccin_aux' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_vccin_aux" nom="1.0">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="1.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vccin_aux">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_z1_mv</name>
     <doc>Bus Voltage of 'pp3300_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" base_name="pp3300_z1" nom="3.3" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_z1" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_z1_mw</name>
     <doc>Power of 'pp3300_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" base_name="pp3300_z1" nom="3.3" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_z1" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ma</name>
     <doc>Current of 'pp3300_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" base_name="pp3300_z1" nom="3.3" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_z1" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_z1_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" base_name="pp3300_z1" nom="3.3" tags="shunt_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="ina3221" channel="1" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_z1" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ez_config</name>
     <doc>Good default config for 'pp3300_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp3300_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="1" subtype="ez_config" nom="3.3" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_z1">
     </params>
   </control>
   <control>
     <name>pp3300_z1_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_z1_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" base_name="pp3300_wlan_x" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mw</name>
     <doc>Power of 'pp3300_wlan_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" base_name="pp3300_wlan_x" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ma</name>
     <doc>Current of 'pp3300_wlan_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" base_name="pp3300_wlan_x" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_wlan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" base_name="pp3300_wlan_x" nom="3.3" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina3221" channel="2" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ez_config</name>
     <doc>Good default config for 'pp3300_wlan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_wlan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina3221" channel="2" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina3221_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="0" map="ina3221_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" c2d2_interface="4" reg_len="2" addr="67">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="67" fmt="hex" c2d2_interface="4" offset="15">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev2.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev2.xml
index 12e8ba2..e207dd8 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev2.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev2.xml
@@ -1,4921 +1,4921 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:31 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:57 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp3300_ssd_x_mv</name>
     <doc>Bus Voltage of 'pp3300_ssd_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp3300_ssd_x" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_mw</name>
     <doc>Power of 'pp3300_ssd_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp3300_ssd_x" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ma</name>
     <doc>Current of 'pp3300_ssd_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp3300_ssd_x" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_res</name>
     <doc>Resolution of 'pp3300_ssd_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp3300_ssd_x" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_ssd_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp3300_ssd_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_samples</name>
     <doc>Samples per second of 'pp3300_ssd_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp3300_ssd_x" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ez_config</name>
     <doc>Good default config for 'pp3300_ssd_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_ssd_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ssd_x">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_avg_mw</name>
     <doc>Avg power of 'pp3300_ssd_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp3300_ssd_x" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_ssd_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_ssd_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_ssd_x">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_signed</name>
     <doc>Readings are signed for 'pp3300_ssd_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp3300_ssd_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="16" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="16" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="16" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="16" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_mv</name>
     <doc>Bus Voltage of 'pp3300_gsc_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_gsc_z2" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_mw</name>
     <doc>Power of 'pp3300_gsc_z2' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_gsc_z2" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_ma</name>
     <doc>Current of 'pp3300_gsc_z2' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_gsc_z2" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_res</name>
     <doc>Resolution of 'pp3300_gsc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_gsc_z2" map="resolution" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_gsc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_gsc_z2" map="yesno" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_samples</name>
     <doc>Samples per second of 'pp3300_gsc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_gsc_z2" map="pac_samples" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_ez_config</name>
     <doc>Good default config for 'pp3300_gsc_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_gsc_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_gsc_z2">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_avg_mw</name>
     <doc>Avg power of 'pp3300_gsc_z2' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_gsc_z2" nom="3.3" tags="avg_power_rails" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_gsc_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.1" map="yes" base_name="pp3300_gsc_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.1" tags="accum_clear_ctrls" map="yes" base_name="pp3300_gsc_z2">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_signed</name>
     <doc>Readings are signed for 'pp3300_gsc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_gsc_z2" map="yesno" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="16" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="16" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="16" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="16" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_wlan_x" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mw</name>
     <doc>Power of 'pp3300_wlan_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_wlan_x" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ma</name>
     <doc>Current of 'pp3300_wlan_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_wlan_x" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_res</name>
     <doc>Resolution of 'pp3300_wlan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_wlan_x" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_wlan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_wlan_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_samples</name>
     <doc>Samples per second of 'pp3300_wlan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_wlan_x" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ez_config</name>
     <doc>Good default config for 'pp3300_wlan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_wlan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_avg_mw</name>
     <doc>Avg power of 'pp3300_wlan_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_wlan_x" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_wlan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_wlan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_wlan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_signed</name>
     <doc>Readings are signed for 'pp3300_wlan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_wlan_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="16" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="16" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="16" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="16" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_mv</name>
     <doc>Bus Voltage of 'pp3300_soc_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_soc_s5" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_mw</name>
     <doc>Power of 'pp3300_soc_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_soc_s5" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ma</name>
     <doc>Current of 'pp3300_soc_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_soc_s5" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_res</name>
     <doc>Resolution of 'pp3300_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_soc_s5" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_soc_s5" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_samples</name>
     <doc>Samples per second of 'pp3300_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_soc_s5" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ez_config</name>
     <doc>Good default config for 'pp3300_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_soc_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_soc_s5">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_avg_mw</name>
     <doc>Avg power of 'pp3300_soc_s5' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_soc_s5" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_soc_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_soc_s5">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_signed</name>
     <doc>Readings are signed for 'pp3300_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_soc_s5" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="16" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="16" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="16" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="16" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_soc_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp1800_soc_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_mw</name>
     <doc>Power of 'pp1800_soc_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp1800_soc_s5" nom="1.8" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ma</name>
     <doc>Current of 'pp1800_soc_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp1800_soc_s5" nom="1.8" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_res</name>
     <doc>Resolution of 'pp1800_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp1800_soc_s5" map="resolution" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp1800_soc_s5" map="yesno" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_samples</name>
     <doc>Samples per second of 'pp1800_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp1800_soc_s5" map="pac_samples" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ez_config</name>
     <doc>Good default config for 'pp1800_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp1800_soc_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="1.8" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_soc_s5">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_avg_mw</name>
     <doc>Avg power of 'pp1800_soc_s5' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp1800_soc_s5" nom="1.8" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp1800_soc_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="1.8" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp1800_soc_s5">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_signed</name>
     <doc>Readings are signed for 'pp1800_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp1800_soc_s5" map="yesno" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="17" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="17" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="17" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="17" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_sensor_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp1800_sensor_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_res</name>
     <doc>Resolution of 'pp1800_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp1800_sensor_s5" map="resolution" nom="1.8" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp1800_sensor_s5" map="yesno" nom="1.8" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_samples</name>
     <doc>Samples per second of 'pp1800_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp1800_sensor_s5" map="pac_samples" nom="1.8" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_ez_config</name>
     <doc>Good default config for 'pp1800_sensor_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp1800_sensor_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="1.8" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_sensor_s5">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_sensor_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp1800_sensor_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="1.8" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp1800_sensor_s5">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_signed</name>
     <doc>Readings are signed for 'pp1800_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp1800_sensor_s5" map="yesno" nom="1.8" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="17" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="17" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="17" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="17" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_seq_mv</name>
     <doc>Bus Voltage of 'pp3300_seq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_seq" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_seq" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_seq_res</name>
     <doc>Resolution of 'pp3300_seq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_seq" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_seq" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_seq_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_seq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_seq" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_seq" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_seq_samples</name>
     <doc>Samples per second of 'pp3300_seq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_seq" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_seq" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_seq_ez_config</name>
     <doc>Good default config for 'pp3300_seq' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_seq" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_seq">
     </params>
   </control>
   <control>
     <name>pp3300_seq_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_seq' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_seq" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_seq">
     </params>
   </control>
   <control>
     <name>pp3300_seq_signed</name>
     <doc>Readings are signed for 'pp3300_seq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_seq" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_seq" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_seq_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_seq_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_seq_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="17" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_seq_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="17" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_seq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_seq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_seq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="17" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_seq_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_seq_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_seq_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_seq_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="17" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_mv</name>
     <doc>Bus Voltage of 'pp3300_tchpad_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_tchpad_x" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_mw</name>
     <doc>Power of 'pp3300_tchpad_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_tchpad_x" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_ma</name>
     <doc>Current of 'pp3300_tchpad_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_tchpad_x" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_res</name>
     <doc>Resolution of 'pp3300_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_tchpad_x" map="resolution" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_tchpad_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_samples</name>
     <doc>Samples per second of 'pp3300_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_tchpad_x" map="pac_samples" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_ez_config</name>
     <doc>Good default config for 'pp3300_tchpad_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_tchpad_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_tchpad_x">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_avg_mw</name>
     <doc>Avg power of 'pp3300_tchpad_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_tchpad_x" nom="3.3" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_tchpad_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="pp3300_tchpad_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="pp3300_tchpad_x">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_signed</name>
     <doc>Readings are signed for 'pp3300_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_tchpad_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="17" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="17" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="17" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="17" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_mv</name>
     <doc>Bus Voltage of 'pp3300_ec_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp3300_ec_z2" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_res</name>
     <doc>Resolution of 'pp3300_ec_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp3300_ec_z2" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_ec_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp3300_ec_z2" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_samples</name>
     <doc>Samples per second of 'pp3300_ec_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp3300_ec_z2" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_ez_config</name>
     <doc>Good default config for 'pp3300_ec_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_ec_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ec_z2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_ec_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_ec_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_ec_z2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_signed</name>
     <doc>Readings are signed for 'pp3300_ec_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp3300_ec_z2" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="18" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="18" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="18" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="18" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_mv</name>
     <doc>Bus Voltage of 'pp3300_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_z1" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_z1" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_z1_res</name>
     <doc>Resolution of 'pp3300_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_z1" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_z1" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_z1" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_z1" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_z1_samples</name>
     <doc>Samples per second of 'pp3300_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_z1" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_z1" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ez_config</name>
     <doc>Good default config for 'pp3300_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_z1">
     </params>
   </control>
   <control>
     <name>pp3300_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_z1">
     </params>
   </control>
   <control>
     <name>pp3300_z1_signed</name>
     <doc>Readings are signed for 'pp3300_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_z1" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_z1" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="18" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="18" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="18" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="18" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_mv</name>
     <doc>Bus Voltage of 'pp3300_usb_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_usb_z1" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_mw</name>
     <doc>Power of 'pp3300_usb_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_usb_z1" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_ma</name>
     <doc>Current of 'pp3300_usb_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_usb_z1" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_res</name>
     <doc>Resolution of 'pp3300_usb_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_usb_z1" map="resolution" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_usb_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_usb_z1" map="yesno" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_samples</name>
     <doc>Samples per second of 'pp3300_usb_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_usb_z1" map="pac_samples" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_ez_config</name>
     <doc>Good default config for 'pp3300_usb_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_usb_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_usb_z1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_avg_mw</name>
     <doc>Avg power of 'pp3300_usb_z1' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_usb_z1" nom="3.3" tags="avg_power_rails" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_usb_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.1" map="yes" base_name="pp3300_usb_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.1" tags="accum_clear_ctrls" map="yes" base_name="pp3300_usb_z1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_signed</name>
     <doc>Readings are signed for 'pp3300_usb_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_usb_z1" map="yesno" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="18" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="18" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="18" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="18" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_mv</name>
     <doc>Bus Voltage of 'pp3300_ec_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_ec_z1" nom="3.3" tags="bus_voltage_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_mw</name>
     <doc>Power of 'pp3300_ec_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_ec_z1" nom="3.3" tags="power_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_ma</name>
     <doc>Current of 'pp3300_ec_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_ec_z1" nom="3.3" tags="current_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_res</name>
     <doc>Resolution of 'pp3300_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_ec_z1" map="resolution" nom="3.3" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_ec_z1" map="yesno" nom="3.3" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_samples</name>
     <doc>Samples per second of 'pp3300_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_ec_z1" map="pac_samples" nom="3.3" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_ez_config</name>
     <doc>Good default config for 'pp3300_ec_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="2.2" map="on" base_name="pp3300_ec_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="2.2" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ec_z1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_avg_mw</name>
     <doc>Avg power of 'pp3300_ec_z1' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_ec_z1" nom="3.3" tags="avg_power_rails" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_ec_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="2.2" map="yes" base_name="pp3300_ec_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="2.2" tags="accum_clear_ctrls" map="yes" base_name="pp3300_ec_z1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_signed</name>
     <doc>Readings are signed for 'pp3300_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_ec_z1" map="yesno" nom="3.3" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="18" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="18" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="18" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="18" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_mv</name>
     <doc>Bus Voltage of 'pp1800_ec_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp1800_ec_z1" nom="1.8" tags="bus_voltage_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_mw</name>
     <doc>Power of 'pp1800_ec_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp1800_ec_z1" nom="1.8" tags="power_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_ma</name>
     <doc>Current of 'pp1800_ec_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp1800_ec_z1" nom="1.8" tags="current_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_res</name>
     <doc>Resolution of 'pp1800_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp1800_ec_z1" map="resolution" nom="1.8" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp1800_ec_z1" map="yesno" nom="1.8" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_samples</name>
     <doc>Samples per second of 'pp1800_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp1800_ec_z1" map="pac_samples" nom="1.8" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_ez_config</name>
     <doc>Good default config for 'pp1800_ec_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="2.2" map="on" base_name="pp1800_ec_z1" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="1.8" rsense="2.2" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_ec_z1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_avg_mw</name>
     <doc>Avg power of 'pp1800_ec_z1' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp1800_ec_z1" nom="1.8" tags="avg_power_rails" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_ec_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="2.2" map="yes" base_name="pp1800_ec_z1" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="1.8" rsense="2.2" tags="accum_clear_ctrls" map="yes" base_name="pp1800_ec_z1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_signed</name>
     <doc>Readings are signed for 'pp1800_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp1800_ec_z1" map="yesno" nom="1.8" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="19" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="19" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="19" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="19" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_mv</name>
     <doc>Bus Voltage of 'pp3300_wwan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_wwan_x" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_mw</name>
     <doc>Power of 'pp3300_wwan_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_wwan_x" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_ma</name>
     <doc>Current of 'pp3300_wwan_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_wwan_x" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_res</name>
     <doc>Resolution of 'pp3300_wwan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_wwan_x" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_wwan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_wwan_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_samples</name>
     <doc>Samples per second of 'pp3300_wwan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_wwan_x" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_ez_config</name>
     <doc>Good default config for 'pp3300_wwan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_wwan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wwan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_avg_mw</name>
     <doc>Avg power of 'pp3300_wwan_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_wwan_x" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_wwan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_wwan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_wwan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_signed</name>
     <doc>Readings are signed for 'pp3300_wwan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_wwan_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="19" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="19" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="19" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="19" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_mv</name>
     <doc>Bus Voltage of 'pp3300_hdmi_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_hdmi_x" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_mw</name>
     <doc>Power of 'pp3300_hdmi_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_hdmi_x" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_ma</name>
     <doc>Current of 'pp3300_hdmi_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_hdmi_x" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_res</name>
     <doc>Resolution of 'pp3300_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_hdmi_x" map="resolution" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_hdmi_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_samples</name>
     <doc>Samples per second of 'pp3300_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_hdmi_x" map="pac_samples" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_ez_config</name>
     <doc>Good default config for 'pp3300_hdmi_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_hdmi_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_hdmi_x">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_avg_mw</name>
     <doc>Avg power of 'pp3300_hdmi_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_hdmi_x" nom="3.3" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_hdmi_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="pp3300_hdmi_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="pp3300_hdmi_x">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_signed</name>
     <doc>Readings are signed for 'pp3300_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_hdmi_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="19" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="19" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="19" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="19" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_mv</name>
     <doc>Bus Voltage of 'pp5000_hdmi_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp5000_hdmi_x" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_mw</name>
     <doc>Power of 'pp5000_hdmi_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp5000_hdmi_x" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ma</name>
     <doc>Current of 'pp5000_hdmi_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp5000_hdmi_x" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_res</name>
     <doc>Resolution of 'pp5000_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp5000_hdmi_x" map="resolution" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp5000_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp5000_hdmi_x" map="yesno" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_samples</name>
     <doc>Samples per second of 'pp5000_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp5000_hdmi_x" map="pac_samples" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ez_config</name>
     <doc>Good default config for 'pp5000_hdmi_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_hdmi_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_hdmi_x">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_avg_mw</name>
     <doc>Avg power of 'pp5000_hdmi_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp5000_hdmi_x" nom="5.0" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp5000_hdmi_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp5000_hdmi_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="5.0" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp5000_hdmi_x">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_signed</name>
     <doc>Readings are signed for 'pp5000_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp5000_hdmi_x" map="yesno" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="19" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="19" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="19" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="19" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_mv</name>
     <doc>Bus Voltage of 'ppvar_sys_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="ppvar_sys_edp" nom="9.0" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_mw</name>
     <doc>Power of 'ppvar_sys_edp' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="ppvar_sys_edp" nom="9.0" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_ma</name>
     <doc>Current of 'ppvar_sys_edp' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="ppvar_sys_edp" nom="9.0" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_res</name>
     <doc>Resolution of 'ppvar_sys_edp' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="ppvar_sys_edp" map="resolution" nom="9.0" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_sys_edp' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="ppvar_sys_edp" map="yesno" nom="9.0" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_samples</name>
     <doc>Samples per second of 'ppvar_sys_edp' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="ppvar_sys_edp" map="pac_samples" nom="9.0" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_ez_config</name>
     <doc>Good default config for 'ppvar_sys_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_sys_edp" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="9.0" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sys_edp">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_avg_mw</name>
     <doc>Avg power of 'ppvar_sys_edp' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="ppvar_sys_edp" nom="9.0" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_sys_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="ppvar_sys_edp" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="9.0" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="ppvar_sys_edp">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_signed</name>
     <doc>Readings are signed for 'ppvar_sys_edp' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="ppvar_sys_edp" map="yesno" nom="9.0" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="20" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="20" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="20" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="20" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_mv</name>
     <doc>Bus Voltage of 'pp3300_edp_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_edp_x" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_edp_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_mw</name>
     <doc>Power of 'pp3300_edp_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_edp_x" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_edp_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_ma</name>
     <doc>Current of 'pp3300_edp_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_edp_x" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_edp_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_res</name>
     <doc>Resolution of 'pp3300_edp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_edp_x" map="resolution" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_edp_x" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_edp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_edp_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_edp_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_samples</name>
     <doc>Samples per second of 'pp3300_edp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_edp_x" map="pac_samples" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_edp_x" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_ez_config</name>
     <doc>Good default config for 'pp3300_edp_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_edp_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_edp_x">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_avg_mw</name>
     <doc>Avg power of 'pp3300_edp_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_edp_x" nom="3.3" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_edp_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_edp_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="pp3300_edp_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="pp3300_edp_x">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_signed</name>
     <doc>Readings are signed for 'pp3300_edp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_edp_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_edp_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="20" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="20" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="20" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="20" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_mv</name>
     <doc>Bus Voltage of 'pp3300_fcam_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_fcam_x" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_mw</name>
     <doc>Power of 'pp3300_fcam_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_fcam_x" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_ma</name>
     <doc>Current of 'pp3300_fcam_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_fcam_x" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_res</name>
     <doc>Resolution of 'pp3300_fcam_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_fcam_x" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_fcam_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_fcam_x" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_samples</name>
     <doc>Samples per second of 'pp3300_fcam_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_fcam_x" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_ez_config</name>
     <doc>Good default config for 'pp3300_fcam_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_fcam_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_fcam_x">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_avg_mw</name>
     <doc>Avg power of 'pp3300_fcam_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_fcam_x" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_fcam_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_fcam_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_fcam_x">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_signed</name>
     <doc>Readings are signed for 'pp3300_fcam_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_fcam_x" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="20" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="20" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="20" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="20" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_mv</name>
     <doc>Bus Voltage of 'pp3300_hps_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_hps_x" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_hps_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_mw</name>
     <doc>Power of 'pp3300_hps_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_hps_x" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_hps_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_ma</name>
     <doc>Current of 'pp3300_hps_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_hps_x" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_hps_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_res</name>
     <doc>Resolution of 'pp3300_hps_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_hps_x" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_hps_x" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_hps_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_hps_x" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_hps_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_samples</name>
     <doc>Samples per second of 'pp3300_hps_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_hps_x" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_hps_x" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_ez_config</name>
     <doc>Good default config for 'pp3300_hps_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_hps_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_hps_x">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_avg_mw</name>
     <doc>Avg power of 'pp3300_hps_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_hps_x" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_hps_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_hps_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_hps_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_hps_x">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_signed</name>
     <doc>Readings are signed for 'pp3300_hps_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_hps_x" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_hps_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="20" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="20" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="20" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="20" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_mv</name>
     <doc>Bus Voltage of 'pp3300_sensor_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp3300_sensor_s5" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_res</name>
     <doc>Resolution of 'pp3300_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp3300_sensor_s5" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp3300_sensor_s5" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_samples</name>
     <doc>Samples per second of 'pp3300_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp3300_sensor_s5" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_ez_config</name>
     <doc>Good default config for 'pp3300_sensor_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_sensor_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_sensor_s5">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_sensor_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_sensor_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_sensor_s5">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_signed</name>
     <doc>Readings are signed for 'pp3300_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp3300_sensor_s5" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="21" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="21" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="21" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="21" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_mv</name>
     <doc>Bus Voltage of 'pp3300_tchscr_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_tchscr_x" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_mw</name>
     <doc>Power of 'pp3300_tchscr_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_tchscr_x" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_ma</name>
     <doc>Current of 'pp3300_tchscr_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_tchscr_x" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_res</name>
     <doc>Resolution of 'pp3300_tchscr_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_tchscr_x" map="resolution" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_tchscr_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_tchscr_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_samples</name>
     <doc>Samples per second of 'pp3300_tchscr_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_tchscr_x" map="pac_samples" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_ez_config</name>
     <doc>Good default config for 'pp3300_tchscr_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_tchscr_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_tchscr_x">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_avg_mw</name>
     <doc>Avg power of 'pp3300_tchscr_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_tchscr_x" nom="3.3" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_tchscr_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="pp3300_tchscr_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="pp3300_tchscr_x">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_signed</name>
     <doc>Readings are signed for 'pp3300_tchscr_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_tchscr_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="21" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="21" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="21" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="21" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp1800_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_mw</name>
     <doc>Power of 'pp1800_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp1800_s5" nom="1.8" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ma</name>
     <doc>Current of 'pp1800_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp1800_s5" nom="1.8" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_res</name>
     <doc>Resolution of 'pp1800_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp1800_s5" map="resolution" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="1.8" base_name="pp1800_s5" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp1800_s5" map="yesno" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="1.8" base_name="pp1800_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_s5_samples</name>
     <doc>Samples per second of 'pp1800_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp1800_s5" map="pac_samples" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="1.8" base_name="pp1800_s5" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ez_config</name>
     <doc>Good default config for 'pp1800_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp1800_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="1.8" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_s5">
     </params>
   </control>
   <control>
     <name>pp1800_s5_avg_mw</name>
     <doc>Avg power of 'pp1800_s5' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp1800_s5" nom="1.8" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp1800_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="1.8" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp1800_s5">
     </params>
   </control>
   <control>
     <name>pp1800_s5_signed</name>
     <doc>Readings are signed for 'pp1800_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp1800_s5" map="yesno" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="1.8" base_name="pp1800_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="21" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="21" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="21" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="21" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_fan_mv</name>
     <doc>Bus Voltage of 'pp5000_fan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp5000_fan" nom="5.0" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_fan" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp5000_fan_res</name>
     <doc>Resolution of 'pp5000_fan' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp5000_fan" map="resolution" nom="5.0" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="5.0" base_name="pp5000_fan" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp5000_fan_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp5000_fan' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp5000_fan" map="yesno" nom="5.0" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="5.0" base_name="pp5000_fan" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_fan_samples</name>
     <doc>Samples per second of 'pp5000_fan' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp5000_fan" map="pac_samples" nom="5.0" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="5.0" base_name="pp5000_fan" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp5000_fan_ez_config</name>
     <doc>Good default config for 'pp5000_fan' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp5000_fan" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="5.0" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_fan">
     </params>
   </control>
   <control>
     <name>pp5000_fan_acc_clear</name>
     <doc>Clear the accumulator for 'pp5000_fan' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp5000_fan" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="5.0" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp5000_fan">
     </params>
   </control>
   <control>
     <name>pp5000_fan_signed</name>
     <doc>Readings are signed for 'pp5000_fan' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp5000_fan" map="yesno" nom="5.0" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="5.0" base_name="pp5000_fan" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_fan_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_fan_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_fan_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="21" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_fan_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="21" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_fan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_fan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_fan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="21" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_fan_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp5000_fan_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_fan_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp5000_fan_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="21" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_dram_mv</name>
     <doc>Bus Voltage of 'pp1800_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp1800_dram" nom="1.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_mw</name>
     <doc>Power of 'pp1800_dram' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp1800_dram" nom="1.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ma</name>
     <doc>Current of 'pp1800_dram' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp1800_dram" nom="1.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_res</name>
     <doc>Resolution of 'pp1800_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp1800_dram" map="resolution" nom="1.8" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="1.8" base_name="pp1800_dram" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_dram_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp1800_dram" map="yesno" nom="1.8" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="1.8" base_name="pp1800_dram" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_dram_samples</name>
     <doc>Samples per second of 'pp1800_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp1800_dram" map="pac_samples" nom="1.8" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="1.8" base_name="pp1800_dram" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ez_config</name>
     <doc>Good default config for 'pp1800_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp1800_dram" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="1.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dram">
     </params>
   </control>
   <control>
     <name>pp1800_dram_avg_mw</name>
     <doc>Avg power of 'pp1800_dram' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp1800_dram" nom="1.8" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp1800_dram" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="1.8" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp1800_dram">
     </params>
   </control>
   <control>
     <name>pp1800_dram_signed</name>
     <doc>Readings are signed for 'pp1800_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp1800_dram" map="yesno" nom="1.8" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="1.8" base_name="pp1800_dram" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_dram_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dram_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="22" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dram_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="22" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dram_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_dram_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_dram_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="22" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_dram_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_dram_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_dram_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="22" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_mv</name>
     <doc>Bus Voltage of 'pp1100_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp1100_dram" nom="1.1" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_mw</name>
     <doc>Power of 'pp1100_dram' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp1100_dram" nom="1.1" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ma</name>
     <doc>Current of 'pp1100_dram' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp1100_dram" nom="1.1" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_res</name>
     <doc>Resolution of 'pp1100_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp1100_dram" map="resolution" nom="1.1" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="1.1" base_name="pp1100_dram" rsense="0.002" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1100_dram_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1100_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp1100_dram" map="yesno" nom="1.1" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="1.1" base_name="pp1100_dram" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1100_dram_samples</name>
     <doc>Samples per second of 'pp1100_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp1100_dram" map="pac_samples" nom="1.1" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="1.1" base_name="pp1100_dram" rsense="0.002" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ez_config</name>
     <doc>Good default config for 'pp1100_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp1100_dram" nom="1.1">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="1.1" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp1100_dram">
     </params>
   </control>
   <control>
     <name>pp1100_dram_avg_mw</name>
     <doc>Avg power of 'pp1100_dram' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp1100_dram" nom="1.1" tags="avg_power_rails" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_acc_clear</name>
     <doc>Clear the accumulator for 'pp1100_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.002" map="yes" base_name="pp1100_dram" nom="1.1">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="1.1" rsense="0.002" tags="accum_clear_ctrls" map="yes" base_name="pp1100_dram">
     </params>
   </control>
   <control>
     <name>pp1100_dram_signed</name>
     <doc>Readings are signed for 'pp1100_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp1100_dram" map="yesno" nom="1.1" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="1.1" base_name="pp1100_dram" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1100_dram_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1100_dram_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="22" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1100_dram_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="22" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="22" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1100_dram_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1100_dram_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="22" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_mv</name>
     <doc>Bus Voltage of 'pp0600_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp0600_vddq" nom="0.6" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_mw</name>
     <doc>Power of 'pp0600_vddq' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp0600_vddq" nom="0.6" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ma</name>
     <doc>Current of 'pp0600_vddq' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp0600_vddq" nom="0.6" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_res</name>
     <doc>Resolution of 'pp0600_vddq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp0600_vddq" map="resolution" nom="0.6" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="0.6" base_name="pp0600_vddq" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp0600_vddq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp0600_vddq" map="yesno" nom="0.6" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="0.6" base_name="pp0600_vddq" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_samples</name>
     <doc>Samples per second of 'pp0600_vddq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp0600_vddq" map="pac_samples" nom="0.6" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="0.6" base_name="pp0600_vddq" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ez_config</name>
     <doc>Good default config for 'pp0600_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp0600_vddq" nom="0.6">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="0.6" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp0600_vddq">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_avg_mw</name>
     <doc>Avg power of 'pp0600_vddq' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp0600_vddq" nom="0.6" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_acc_clear</name>
     <doc>Clear the accumulator for 'pp0600_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp0600_vddq" nom="0.6">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="0.6" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp0600_vddq">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_signed</name>
     <doc>Readings are signed for 'pp0600_vddq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp0600_vddq" map="yesno" nom="0.6" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="0.6" base_name="pp0600_vddq" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="22" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="22" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="22" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="22" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_mv</name>
     <doc>Bus Voltage of 'ppvar_vccin_aux' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="ppvar_vccin_aux" nom="9.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_mw</name>
     <doc>Power of 'ppvar_vccin_aux' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="ppvar_vccin_aux" nom="9.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ma</name>
     <doc>Current of 'ppvar_vccin_aux' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="ppvar_vccin_aux" nom="9.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_res</name>
     <doc>Resolution of 'ppvar_vccin_aux' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="ppvar_vccin_aux" map="resolution" nom="9.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_vccin_aux' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="ppvar_vccin_aux" map="yesno" nom="9.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_samples</name>
     <doc>Samples per second of 'ppvar_vccin_aux' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="ppvar_vccin_aux" map="pac_samples" nom="9.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ez_config</name>
     <doc>Good default config for 'ppvar_vccin_aux' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_vccin_aux" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="9.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vccin_aux">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_avg_mw</name>
     <doc>Avg power of 'ppvar_vccin_aux' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="ppvar_vccin_aux" nom="9.0" tags="avg_power_rails" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_vccin_aux' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.002" map="yes" base_name="ppvar_vccin_aux" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="9.0" rsense="0.002" tags="accum_clear_ctrls" map="yes" base_name="ppvar_vccin_aux">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_signed</name>
     <doc>Readings are signed for 'ppvar_vccin_aux' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="ppvar_vccin_aux" map="yesno" nom="9.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="22" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="22" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="22" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="22" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_mv</name>
     <doc>Bus Voltage of 'pp5000_tchpad_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp5000_tchpad_x" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_mw</name>
     <doc>Power of 'pp5000_tchpad_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp5000_tchpad_x" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_ma</name>
     <doc>Current of 'pp5000_tchpad_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp5000_tchpad_x" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_res</name>
     <doc>Resolution of 'pp5000_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp5000_tchpad_x" map="resolution" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp5000_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp5000_tchpad_x" map="yesno" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_samples</name>
     <doc>Samples per second of 'pp5000_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp5000_tchpad_x" map="pac_samples" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_ez_config</name>
     <doc>Good default config for 'pp5000_tchpad_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_tchpad_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_tchpad_x">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_avg_mw</name>
     <doc>Avg power of 'pp5000_tchpad_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp5000_tchpad_x" nom="5.0" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp5000_tchpad_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp5000_tchpad_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="5.0" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp5000_tchpad_x">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_signed</name>
     <doc>Readings are signed for 'pp5000_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp5000_tchpad_x" map="yesno" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="23" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="23" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="23" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="23" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_mv</name>
     <doc>Bus Voltage of 'pp3300_rtc_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_rtc_z2" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_res</name>
     <doc>Resolution of 'pp3300_rtc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_rtc_z2" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_rtc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_rtc_z2" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_samples</name>
     <doc>Samples per second of 'pp3300_rtc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_rtc_z2" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_ez_config</name>
     <doc>Good default config for 'pp3300_rtc_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_rtc_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_rtc_z2">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_rtc_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_rtc_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_rtc_z2">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_signed</name>
     <doc>Readings are signed for 'pp3300_rtc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_rtc_z2" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="23" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="23" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="23" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="23" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z2_mv</name>
     <doc>Bus Voltage of 'pp3300_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_z2" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z2_mw</name>
     <doc>Power of 'pp3300_z2' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_z2" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z2_ma</name>
     <doc>Current of 'pp3300_z2' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_z2" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z2_res</name>
     <doc>Resolution of 'pp3300_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_z2" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_z2" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_z2_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_z2" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_z2" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_z2_samples</name>
     <doc>Samples per second of 'pp3300_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_z2" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_z2" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_z2_ez_config</name>
     <doc>Good default config for 'pp3300_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_z2">
     </params>
   </control>
   <control>
     <name>pp3300_z2_avg_mw</name>
     <doc>Avg power of 'pp3300_z2' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_z2" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z2_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_z2">
     </params>
   </control>
   <control>
     <name>pp3300_z2_signed</name>
     <doc>Readings are signed for 'pp3300_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_z2" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_z2" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_z2_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_z2_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_z2_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="23" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_z2_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="23" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_z2_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z2_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z2_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="23" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z2_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_z2_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_z2_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_z2_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="23" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_mv</name>
     <doc>Bus Voltage of 'pp3300_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_s5" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_mw</name>
     <doc>Power of 'pp3300_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_s5" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ma</name>
     <doc>Current of 'pp3300_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_s5" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_res</name>
     <doc>Resolution of 'pp3300_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_s5" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_s5" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_s5" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_s5_samples</name>
     <doc>Samples per second of 'pp3300_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_s5" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_s5" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ez_config</name>
     <doc>Good default config for 'pp3300_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_s5">
     </params>
   </control>
   <control>
     <name>pp3300_s5_avg_mw</name>
     <doc>Avg power of 'pp3300_s5' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_s5" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_s5">
     </params>
   </control>
   <control>
     <name>pp3300_s5_signed</name>
     <doc>Readings are signed for 'pp3300_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_s5" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="23" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="23" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="23" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="23" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_z1_mv</name>
     <doc>Bus Voltage of 'pp5000_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp5000_z1" nom="5.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_mw</name>
     <doc>Power of 'pp5000_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp5000_z1" nom="5.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ma</name>
     <doc>Current of 'pp5000_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp5000_z1" nom="5.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_res</name>
     <doc>Resolution of 'pp5000_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp5000_z1" map="resolution" nom="5.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="5.0" base_name="pp5000_z1" rsense="0.002" map="resolution">
     </params>
   </control>
   <control>
     <name>pp5000_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp5000_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp5000_z1" map="yesno" nom="5.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="5.0" base_name="pp5000_z1" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_z1_samples</name>
     <doc>Samples per second of 'pp5000_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp5000_z1" map="pac_samples" nom="5.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="5.0" base_name="pp5000_z1" rsense="0.002" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ez_config</name>
     <doc>Good default config for 'pp5000_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp5000_z1" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="5.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_z1">
     </params>
   </control>
   <control>
     <name>pp5000_z1_avg_mw</name>
     <doc>Avg power of 'pp5000_z1' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp5000_z1" nom="5.0" tags="avg_power_rails" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp5000_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.002" map="yes" base_name="pp5000_z1" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="5.0" rsense="0.002" tags="accum_clear_ctrls" map="yes" base_name="pp5000_z1">
     </params>
   </control>
   <control>
     <name>pp5000_z1_signed</name>
     <doc>Readings are signed for 'pp5000_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp5000_z1" map="yesno" nom="5.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="5.0" base_name="pp5000_z1" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="24" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="24" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp5000_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="24" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp5000_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp5000_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="24" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_mv</name>
     <doc>Bus Voltage of 'ppvar_sys_sd' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="ppvar_sys_sd" nom="9.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_mw</name>
     <doc>Power of 'ppvar_sys_sd' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="ppvar_sys_sd" nom="9.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_ma</name>
     <doc>Current of 'ppvar_sys_sd' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="ppvar_sys_sd" nom="9.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_res</name>
     <doc>Resolution of 'ppvar_sys_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="ppvar_sys_sd" map="resolution" nom="9.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_sys_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="ppvar_sys_sd" map="yesno" nom="9.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_samples</name>
     <doc>Samples per second of 'ppvar_sys_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="ppvar_sys_sd" map="pac_samples" nom="9.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_ez_config</name>
     <doc>Good default config for 'ppvar_sys_sd' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_sys_sd" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="9.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sys_sd">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_avg_mw</name>
     <doc>Avg power of 'ppvar_sys_sd' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="ppvar_sys_sd" nom="9.0" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_sys_sd' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="ppvar_sys_sd" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="9.0" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="ppvar_sys_sd">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_signed</name>
     <doc>Readings are signed for 'ppvar_sys_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="ppvar_sys_sd" map="yesno" nom="9.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="24" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="24" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="24" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="24" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_mv</name>
     <doc>Bus Voltage of 'pp3300_s5_sd' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_s5_sd" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_mw</name>
     <doc>Power of 'pp3300_s5_sd' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_s5_sd" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_ma</name>
     <doc>Current of 'pp3300_s5_sd' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_s5_sd" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_res</name>
     <doc>Resolution of 'pp3300_s5_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_s5_sd" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_s5_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_s5_sd" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_samples</name>
     <doc>Samples per second of 'pp3300_s5_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_s5_sd" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_ez_config</name>
     <doc>Good default config for 'pp3300_s5_sd' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_s5_sd" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_s5_sd">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_avg_mw</name>
     <doc>Avg power of 'pp3300_s5_sd' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_s5_sd" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_s5_sd' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_s5_sd" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_s5_sd">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_signed</name>
     <doc>Readings are signed for 'pp3300_s5_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_s5_sd" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="24" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="24" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="24" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="24" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_kb_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="ppvar_kb_bl" nom="9.0" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mw</name>
     <doc>Power of 'ppvar_kb_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="ppvar_kb_bl" nom="9.0" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ma</name>
     <doc>Current of 'ppvar_kb_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="ppvar_kb_bl" nom="9.0" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_res</name>
     <doc>Resolution of 'ppvar_kb_bl' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="ppvar_kb_bl" map="resolution" nom="9.0" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_kb_bl' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="ppvar_kb_bl" map="yesno" nom="9.0" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_samples</name>
     <doc>Samples per second of 'ppvar_kb_bl' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="ppvar_kb_bl" map="pac_samples" nom="9.0" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ez_config</name>
     <doc>Good default config for 'ppvar_kb_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="ppvar_kb_bl" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="9.0" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_kb_bl">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_avg_mw</name>
     <doc>Avg power of 'ppvar_kb_bl' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="ppvar_kb_bl" nom="9.0" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_kb_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="ppvar_kb_bl" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="9.0" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="ppvar_kb_bl">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_signed</name>
     <doc>Readings are signed for 'ppvar_kb_bl' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="ppvar_kb_bl" map="yesno" nom="9.0" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="24" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="24" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="24" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="24" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_mv</name>
     <doc>Bus Voltage of 'pp1800_fp_sens' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp1800_fp_sens" nom="1.8" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_mw</name>
     <doc>Power of 'pp1800_fp_sens' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp1800_fp_sens" nom="1.8" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ma</name>
     <doc>Current of 'pp1800_fp_sens' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp1800_fp_sens" nom="1.8" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_res</name>
     <doc>Resolution of 'pp1800_fp_sens' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp1800_fp_sens" map="resolution" nom="1.8" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_fp_sens' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp1800_fp_sens" map="yesno" nom="1.8" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_samples</name>
     <doc>Samples per second of 'pp1800_fp_sens' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp1800_fp_sens" map="pac_samples" nom="1.8" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ez_config</name>
     <doc>Good default config for 'pp1800_fp_sens' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp1800_fp_sens" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="1.8" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_fp_sens">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_avg_mw</name>
     <doc>Avg power of 'pp1800_fp_sens' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp1800_fp_sens" nom="1.8" tags="avg_power_rails" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_fp_sens' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.5" map="yes" base_name="pp1800_fp_sens" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="1.8" rsense="0.5" tags="accum_clear_ctrls" map="yes" base_name="pp1800_fp_sens">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_signed</name>
     <doc>Readings are signed for 'pp1800_fp_sens' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp1800_fp_sens" map="yesno" nom="1.8" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="25" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="25" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="25" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="25" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_mv</name>
     <doc>Bus Voltage of 'pp3300_fp_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_fp_x" nom="3.3" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_mw</name>
     <doc>Power of 'pp3300_fp_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_fp_x" nom="3.3" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ma</name>
     <doc>Current of 'pp3300_fp_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_fp_x" nom="3.3" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_res</name>
     <doc>Resolution of 'pp3300_fp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_fp_x" map="resolution" nom="3.3" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_fp_x" rsense="0.5" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_fp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_fp_x" map="yesno" nom="3.3" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_fp_x" rsense="0.5" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_samples</name>
     <doc>Samples per second of 'pp3300_fp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_fp_x" map="pac_samples" nom="3.3" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_fp_x" rsense="0.5" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ez_config</name>
     <doc>Good default config for 'pp3300_fp_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp3300_fp_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_fp_x">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_avg_mw</name>
     <doc>Avg power of 'pp3300_fp_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_fp_x" nom="3.3" tags="avg_power_rails" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_fp_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.5" map="yes" base_name="pp3300_fp_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.5" tags="accum_clear_ctrls" map="yes" base_name="pp3300_fp_x">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_signed</name>
     <doc>Readings are signed for 'pp3300_fp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_fp_x" map="yesno" nom="3.3" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_fp_x" rsense="0.5" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="25" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="25" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="25" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="25" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mv</name>
     <doc>Bus Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="ppvar_vbus_in" nom="9.0" tags="bus_voltage_rail" rsense="0.001">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mw</name>
     <doc>Power of 'ppvar_vbus_in' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="ppvar_vbus_in" nom="9.0" tags="power_rail" rsense="0.001">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ma</name>
     <doc>Current of 'ppvar_vbus_in' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="ppvar_vbus_in" nom="9.0" tags="current_rail" rsense="0.001">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_res</name>
     <doc>Resolution of 'ppvar_vbus_in' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="ppvar_vbus_in" map="resolution" nom="9.0" rsense="0.001">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_vbus_in' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="ppvar_vbus_in" map="yesno" nom="9.0" rsense="0.001">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_samples</name>
     <doc>Samples per second of 'ppvar_vbus_in' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="ppvar_vbus_in" map="pac_samples" nom="9.0" rsense="0.001">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ez_config</name>
     <doc>Good default config for 'ppvar_vbus_in' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.001" map="on" base_name="ppvar_vbus_in" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="9.0" rsense="0.001" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vbus_in">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_avg_mw</name>
     <doc>Avg power of 'ppvar_vbus_in' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="ppvar_vbus_in" nom="9.0" tags="avg_power_rails" rsense="0.001">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_vbus_in' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.001" map="yes" base_name="ppvar_vbus_in" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="9.0" rsense="0.001" tags="accum_clear_ctrls" map="yes" base_name="ppvar_vbus_in">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_signed</name>
     <doc>Readings are signed for 'ppvar_vbus_in' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="ppvar_vbus_in" map="yesno" nom="9.0" rsense="0.001">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="25" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="25" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="25" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="25" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_mv</name>
     <doc>Bus Voltage of 'pp3300_adc_dbg' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_adc_dbg" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_mw</name>
     <doc>Power of 'pp3300_adc_dbg' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_adc_dbg" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_ma</name>
     <doc>Current of 'pp3300_adc_dbg' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_adc_dbg" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_res</name>
     <doc>Resolution of 'pp3300_adc_dbg' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_adc_dbg" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_adc_dbg' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_adc_dbg" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_samples</name>
     <doc>Samples per second of 'pp3300_adc_dbg' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_adc_dbg" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_ez_config</name>
     <doc>Good default config for 'pp3300_adc_dbg' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_adc_dbg" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_adc_dbg">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_avg_mw</name>
     <doc>Avg power of 'pp3300_adc_dbg' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_adc_dbg" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_adc_dbg' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_adc_dbg" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_adc_dbg">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_signed</name>
     <doc>Readings are signed for 'pp3300_adc_dbg' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_adc_dbg" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="25" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="25" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="25" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="25" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev4.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev4.xml
index 12e8ba2..e207dd8 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev4.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rev4.xml
@@ -1,4921 +1,4921 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:31 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:57 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>pp3300_ssd_x_mv</name>
     <doc>Bus Voltage of 'pp3300_ssd_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp3300_ssd_x" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_mw</name>
     <doc>Power of 'pp3300_ssd_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp3300_ssd_x" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ma</name>
     <doc>Current of 'pp3300_ssd_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp3300_ssd_x" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_res</name>
     <doc>Resolution of 'pp3300_ssd_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp3300_ssd_x" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_ssd_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp3300_ssd_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_samples</name>
     <doc>Samples per second of 'pp3300_ssd_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp3300_ssd_x" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ez_config</name>
     <doc>Good default config for 'pp3300_ssd_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_ssd_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ssd_x">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_avg_mw</name>
     <doc>Avg power of 'pp3300_ssd_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp3300_ssd_x" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_ssd_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_ssd_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_ssd_x">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_signed</name>
     <doc>Readings are signed for 'pp3300_ssd_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp3300_ssd_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="3.3" base_name="pp3300_ssd_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="16" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="16" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="16" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="16" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_mv</name>
     <doc>Bus Voltage of 'pp3300_gsc_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_gsc_z2" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_mw</name>
     <doc>Power of 'pp3300_gsc_z2' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_gsc_z2" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_ma</name>
     <doc>Current of 'pp3300_gsc_z2' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_gsc_z2" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_res</name>
     <doc>Resolution of 'pp3300_gsc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_gsc_z2" map="resolution" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_gsc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_gsc_z2" map="yesno" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_samples</name>
     <doc>Samples per second of 'pp3300_gsc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_gsc_z2" map="pac_samples" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_ez_config</name>
     <doc>Good default config for 'pp3300_gsc_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_gsc_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_gsc_z2">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_avg_mw</name>
     <doc>Avg power of 'pp3300_gsc_z2' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_gsc_z2" nom="3.3" tags="avg_power_rails" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_gsc_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.1" map="yes" base_name="pp3300_gsc_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.1" tags="accum_clear_ctrls" map="yes" base_name="pp3300_gsc_z2">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_signed</name>
     <doc>Readings are signed for 'pp3300_gsc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_gsc_z2" map="yesno" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_gsc_z2" rsense="0.1" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="16" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="16" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="16" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_gsc_z2_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="16" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_wlan_x" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mw</name>
     <doc>Power of 'pp3300_wlan_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_wlan_x" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ma</name>
     <doc>Current of 'pp3300_wlan_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_wlan_x" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_res</name>
     <doc>Resolution of 'pp3300_wlan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_wlan_x" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_wlan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_wlan_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_samples</name>
     <doc>Samples per second of 'pp3300_wlan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_wlan_x" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ez_config</name>
     <doc>Good default config for 'pp3300_wlan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_wlan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_avg_mw</name>
     <doc>Avg power of 'pp3300_wlan_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_wlan_x" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_wlan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_wlan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_wlan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_signed</name>
     <doc>Readings are signed for 'pp3300_wlan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_wlan_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_wlan_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="16" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="16" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="16" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="16" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_mv</name>
     <doc>Bus Voltage of 'pp3300_soc_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_soc_s5" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_mw</name>
     <doc>Power of 'pp3300_soc_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_soc_s5" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ma</name>
     <doc>Current of 'pp3300_soc_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_soc_s5" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_res</name>
     <doc>Resolution of 'pp3300_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_soc_s5" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_soc_s5" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_samples</name>
     <doc>Samples per second of 'pp3300_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_soc_s5" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ez_config</name>
     <doc>Good default config for 'pp3300_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_soc_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_soc_s5">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_avg_mw</name>
     <doc>Avg power of 'pp3300_soc_s5' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_soc_s5" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_soc_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_soc_s5">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_signed</name>
     <doc>Readings are signed for 'pp3300_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_soc_s5" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_soc_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="16" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="16" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="16" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="16" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="16" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="16" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="16" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="16">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="16" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_soc_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp1800_soc_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_mw</name>
     <doc>Power of 'pp1800_soc_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp1800_soc_s5" nom="1.8" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ma</name>
     <doc>Current of 'pp1800_soc_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp1800_soc_s5" nom="1.8" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_res</name>
     <doc>Resolution of 'pp1800_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp1800_soc_s5" map="resolution" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp1800_soc_s5" map="yesno" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_samples</name>
     <doc>Samples per second of 'pp1800_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp1800_soc_s5" map="pac_samples" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ez_config</name>
     <doc>Good default config for 'pp1800_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp1800_soc_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="1.8" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_soc_s5">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_avg_mw</name>
     <doc>Avg power of 'pp1800_soc_s5' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp1800_soc_s5" nom="1.8" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp1800_soc_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="1.8" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp1800_soc_s5">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_signed</name>
     <doc>Readings are signed for 'pp1800_soc_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp1800_soc_s5" map="yesno" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="1.8" base_name="pp1800_soc_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="17" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="17" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="17" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="17" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_sensor_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp1800_sensor_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_res</name>
     <doc>Resolution of 'pp1800_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp1800_sensor_s5" map="resolution" nom="1.8" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp1800_sensor_s5" map="yesno" nom="1.8" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_samples</name>
     <doc>Samples per second of 'pp1800_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp1800_sensor_s5" map="pac_samples" nom="1.8" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_ez_config</name>
     <doc>Good default config for 'pp1800_sensor_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp1800_sensor_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="1.8" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_sensor_s5">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_sensor_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp1800_sensor_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="1.8" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp1800_sensor_s5">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_signed</name>
     <doc>Readings are signed for 'pp1800_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp1800_sensor_s5" map="yesno" nom="1.8" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="17" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="17" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="17" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="17" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_seq_mv</name>
     <doc>Bus Voltage of 'pp3300_seq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_seq" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_seq" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_seq_res</name>
     <doc>Resolution of 'pp3300_seq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_seq" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_seq" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_seq_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_seq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_seq" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_seq" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_seq_samples</name>
     <doc>Samples per second of 'pp3300_seq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_seq" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_seq" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_seq_ez_config</name>
     <doc>Good default config for 'pp3300_seq' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_seq" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_seq">
     </params>
   </control>
   <control>
     <name>pp3300_seq_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_seq' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_seq" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_seq">
     </params>
   </control>
   <control>
     <name>pp3300_seq_signed</name>
     <doc>Readings are signed for 'pp3300_seq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_seq" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_seq" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_seq_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_seq_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_seq_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="17" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_seq_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="17" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_seq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_seq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_seq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="17" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_seq_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_seq_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_seq_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_seq_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="17" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_mv</name>
     <doc>Bus Voltage of 'pp3300_tchpad_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_tchpad_x" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_mw</name>
     <doc>Power of 'pp3300_tchpad_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_tchpad_x" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_ma</name>
     <doc>Current of 'pp3300_tchpad_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_tchpad_x" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_res</name>
     <doc>Resolution of 'pp3300_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_tchpad_x" map="resolution" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_tchpad_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_samples</name>
     <doc>Samples per second of 'pp3300_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_tchpad_x" map="pac_samples" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_ez_config</name>
     <doc>Good default config for 'pp3300_tchpad_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_tchpad_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_tchpad_x">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_avg_mw</name>
     <doc>Avg power of 'pp3300_tchpad_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_tchpad_x" nom="3.3" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_tchpad_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="pp3300_tchpad_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="pp3300_tchpad_x">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_signed</name>
     <doc>Readings are signed for 'pp3300_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_tchpad_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_tchpad_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="17" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="17" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="17" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="17" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="17" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="17" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="17" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_tchpad_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="17">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="17" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_mv</name>
     <doc>Bus Voltage of 'pp3300_ec_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp3300_ec_z2" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_res</name>
     <doc>Resolution of 'pp3300_ec_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp3300_ec_z2" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_ec_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp3300_ec_z2" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_samples</name>
     <doc>Samples per second of 'pp3300_ec_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp3300_ec_z2" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_ez_config</name>
     <doc>Good default config for 'pp3300_ec_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_ec_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ec_z2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_ec_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_ec_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_ec_z2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_signed</name>
     <doc>Readings are signed for 'pp3300_ec_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp3300_ec_z2" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="3.3" base_name="pp3300_ec_z2" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="18" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="18" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="18" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z2_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="18" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_mv</name>
     <doc>Bus Voltage of 'pp3300_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_z1" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_z1" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_z1_res</name>
     <doc>Resolution of 'pp3300_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_z1" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_z1" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_z1" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_z1" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_z1_samples</name>
     <doc>Samples per second of 'pp3300_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_z1" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_z1" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ez_config</name>
     <doc>Good default config for 'pp3300_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_z1">
     </params>
   </control>
   <control>
     <name>pp3300_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_z1">
     </params>
   </control>
   <control>
     <name>pp3300_z1_signed</name>
     <doc>Readings are signed for 'pp3300_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_z1" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_z1" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="18" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="18" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="18" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="18" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_mv</name>
     <doc>Bus Voltage of 'pp3300_usb_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_usb_z1" nom="3.3" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_mw</name>
     <doc>Power of 'pp3300_usb_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_usb_z1" nom="3.3" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_ma</name>
     <doc>Current of 'pp3300_usb_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_usb_z1" nom="3.3" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_res</name>
     <doc>Resolution of 'pp3300_usb_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_usb_z1" map="resolution" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_usb_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_usb_z1" map="yesno" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_samples</name>
     <doc>Samples per second of 'pp3300_usb_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_usb_z1" map="pac_samples" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_ez_config</name>
     <doc>Good default config for 'pp3300_usb_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp3300_usb_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_usb_z1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_avg_mw</name>
     <doc>Avg power of 'pp3300_usb_z1' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_usb_z1" nom="3.3" tags="avg_power_rails" rsense="0.1">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_usb_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.1" map="yes" base_name="pp3300_usb_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.1" tags="accum_clear_ctrls" map="yes" base_name="pp3300_usb_z1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_signed</name>
     <doc>Readings are signed for 'pp3300_usb_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_usb_z1" map="yesno" nom="3.3" rsense="0.1">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_usb_z1" rsense="0.1" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="18" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="18" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="18" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_usb_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="18" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_mv</name>
     <doc>Bus Voltage of 'pp3300_ec_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_ec_z1" nom="3.3" tags="bus_voltage_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_mw</name>
     <doc>Power of 'pp3300_ec_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_ec_z1" nom="3.3" tags="power_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_ma</name>
     <doc>Current of 'pp3300_ec_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_ec_z1" nom="3.3" tags="current_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_res</name>
     <doc>Resolution of 'pp3300_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_ec_z1" map="resolution" nom="3.3" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_ec_z1" map="yesno" nom="3.3" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_samples</name>
     <doc>Samples per second of 'pp3300_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_ec_z1" map="pac_samples" nom="3.3" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_ez_config</name>
     <doc>Good default config for 'pp3300_ec_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="2.2" map="on" base_name="pp3300_ec_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="2.2" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ec_z1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_avg_mw</name>
     <doc>Avg power of 'pp3300_ec_z1' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_ec_z1" nom="3.3" tags="avg_power_rails" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_ec_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="2.2" map="yes" base_name="pp3300_ec_z1" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="2.2" tags="accum_clear_ctrls" map="yes" base_name="pp3300_ec_z1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_signed</name>
     <doc>Readings are signed for 'pp3300_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_ec_z1" map="yesno" nom="3.3" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_ec_z1" rsense="2.2" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="18" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="18" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="18" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="18" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="18" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="18" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="18" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_ec_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="18">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="18" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_mv</name>
     <doc>Bus Voltage of 'pp1800_ec_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp1800_ec_z1" nom="1.8" tags="bus_voltage_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_mw</name>
     <doc>Power of 'pp1800_ec_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp1800_ec_z1" nom="1.8" tags="power_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_ma</name>
     <doc>Current of 'pp1800_ec_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp1800_ec_z1" nom="1.8" tags="current_rail" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_res</name>
     <doc>Resolution of 'pp1800_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp1800_ec_z1" map="resolution" nom="1.8" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp1800_ec_z1" map="yesno" nom="1.8" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_samples</name>
     <doc>Samples per second of 'pp1800_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp1800_ec_z1" map="pac_samples" nom="1.8" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_ez_config</name>
     <doc>Good default config for 'pp1800_ec_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="2.2" map="on" base_name="pp1800_ec_z1" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="1.8" rsense="2.2" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_ec_z1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_avg_mw</name>
     <doc>Avg power of 'pp1800_ec_z1' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp1800_ec_z1" nom="1.8" tags="avg_power_rails" rsense="2.2">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_ec_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="2.2" map="yes" base_name="pp1800_ec_z1" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="1.8" rsense="2.2" tags="accum_clear_ctrls" map="yes" base_name="pp1800_ec_z1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_signed</name>
     <doc>Readings are signed for 'pp1800_ec_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp1800_ec_z1" map="yesno" nom="1.8" rsense="2.2">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="1.8" base_name="pp1800_ec_z1" rsense="2.2" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="19" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="19" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="19" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_ec_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="19" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_mv</name>
     <doc>Bus Voltage of 'pp3300_wwan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_wwan_x" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_mw</name>
     <doc>Power of 'pp3300_wwan_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_wwan_x" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_ma</name>
     <doc>Current of 'pp3300_wwan_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_wwan_x" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_res</name>
     <doc>Resolution of 'pp3300_wwan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_wwan_x" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_wwan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_wwan_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_samples</name>
     <doc>Samples per second of 'pp3300_wwan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_wwan_x" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_ez_config</name>
     <doc>Good default config for 'pp3300_wwan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_wwan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wwan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_avg_mw</name>
     <doc>Avg power of 'pp3300_wwan_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_wwan_x" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_wwan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_wwan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_wwan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_signed</name>
     <doc>Readings are signed for 'pp3300_wwan_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_wwan_x" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_wwan_x" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="19" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="19" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="19" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_wwan_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="19" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_mv</name>
     <doc>Bus Voltage of 'pp3300_hdmi_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_hdmi_x" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_mw</name>
     <doc>Power of 'pp3300_hdmi_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_hdmi_x" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_ma</name>
     <doc>Current of 'pp3300_hdmi_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_hdmi_x" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_res</name>
     <doc>Resolution of 'pp3300_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_hdmi_x" map="resolution" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_hdmi_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_samples</name>
     <doc>Samples per second of 'pp3300_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_hdmi_x" map="pac_samples" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_ez_config</name>
     <doc>Good default config for 'pp3300_hdmi_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_hdmi_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_hdmi_x">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_avg_mw</name>
     <doc>Avg power of 'pp3300_hdmi_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_hdmi_x" nom="3.3" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_hdmi_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="pp3300_hdmi_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="pp3300_hdmi_x">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_signed</name>
     <doc>Readings are signed for 'pp3300_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_hdmi_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_hdmi_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="19" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="19" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="19" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_hdmi_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="19" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_mv</name>
     <doc>Bus Voltage of 'pp5000_hdmi_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp5000_hdmi_x" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_mw</name>
     <doc>Power of 'pp5000_hdmi_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp5000_hdmi_x" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ma</name>
     <doc>Current of 'pp5000_hdmi_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp5000_hdmi_x" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_res</name>
     <doc>Resolution of 'pp5000_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp5000_hdmi_x" map="resolution" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp5000_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp5000_hdmi_x" map="yesno" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_samples</name>
     <doc>Samples per second of 'pp5000_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp5000_hdmi_x" map="pac_samples" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ez_config</name>
     <doc>Good default config for 'pp5000_hdmi_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_hdmi_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_hdmi_x">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_avg_mw</name>
     <doc>Avg power of 'pp5000_hdmi_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp5000_hdmi_x" nom="5.0" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp5000_hdmi_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp5000_hdmi_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="5.0" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp5000_hdmi_x">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_signed</name>
     <doc>Readings are signed for 'pp5000_hdmi_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp5000_hdmi_x" map="yesno" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="19" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="19" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="19" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="19" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="19" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="19" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="19" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="19">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="19" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_mv</name>
     <doc>Bus Voltage of 'ppvar_sys_edp' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="ppvar_sys_edp" nom="9.0" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_mw</name>
     <doc>Power of 'ppvar_sys_edp' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="ppvar_sys_edp" nom="9.0" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_ma</name>
     <doc>Current of 'ppvar_sys_edp' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="ppvar_sys_edp" nom="9.0" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_res</name>
     <doc>Resolution of 'ppvar_sys_edp' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="ppvar_sys_edp" map="resolution" nom="9.0" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_sys_edp' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="ppvar_sys_edp" map="yesno" nom="9.0" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_samples</name>
     <doc>Samples per second of 'ppvar_sys_edp' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="ppvar_sys_edp" map="pac_samples" nom="9.0" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_ez_config</name>
     <doc>Good default config for 'ppvar_sys_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="ppvar_sys_edp" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="9.0" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sys_edp">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_avg_mw</name>
     <doc>Avg power of 'ppvar_sys_edp' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="ppvar_sys_edp" nom="9.0" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_sys_edp' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="ppvar_sys_edp" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="9.0" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="ppvar_sys_edp">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_signed</name>
     <doc>Readings are signed for 'ppvar_sys_edp' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="ppvar_sys_edp" map="yesno" nom="9.0" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="9.0" base_name="ppvar_sys_edp" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="20" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="20" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="20" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_sys_edp_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="20" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_mv</name>
     <doc>Bus Voltage of 'pp3300_edp_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_edp_x" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_edp_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_mw</name>
     <doc>Power of 'pp3300_edp_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_edp_x" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_edp_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_ma</name>
     <doc>Current of 'pp3300_edp_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_edp_x" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_edp_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_res</name>
     <doc>Resolution of 'pp3300_edp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_edp_x" map="resolution" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_edp_x" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_edp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_edp_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_edp_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_samples</name>
     <doc>Samples per second of 'pp3300_edp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_edp_x" map="pac_samples" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_edp_x" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_ez_config</name>
     <doc>Good default config for 'pp3300_edp_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_edp_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_edp_x">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_avg_mw</name>
     <doc>Avg power of 'pp3300_edp_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_edp_x" nom="3.3" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_edp_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_edp_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="pp3300_edp_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="pp3300_edp_x">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_signed</name>
     <doc>Readings are signed for 'pp3300_edp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_edp_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_edp_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="20" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="20" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="20" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_edp_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="20" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_mv</name>
     <doc>Bus Voltage of 'pp3300_fcam_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_fcam_x" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_mw</name>
     <doc>Power of 'pp3300_fcam_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_fcam_x" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_ma</name>
     <doc>Current of 'pp3300_fcam_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_fcam_x" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_res</name>
     <doc>Resolution of 'pp3300_fcam_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_fcam_x" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_fcam_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_fcam_x" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_samples</name>
     <doc>Samples per second of 'pp3300_fcam_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_fcam_x" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_ez_config</name>
     <doc>Good default config for 'pp3300_fcam_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_fcam_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_fcam_x">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_avg_mw</name>
     <doc>Avg power of 'pp3300_fcam_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_fcam_x" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_fcam_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_fcam_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_fcam_x">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_signed</name>
     <doc>Readings are signed for 'pp3300_fcam_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_fcam_x" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_fcam_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="20" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="20" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="20" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_fcam_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="20" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_mv</name>
     <doc>Bus Voltage of 'pp3300_hps_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_hps_x" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_hps_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_mw</name>
     <doc>Power of 'pp3300_hps_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_hps_x" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_hps_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_ma</name>
     <doc>Current of 'pp3300_hps_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_hps_x" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_hps_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_res</name>
     <doc>Resolution of 'pp3300_hps_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_hps_x" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_hps_x" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_hps_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_hps_x" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_hps_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_samples</name>
     <doc>Samples per second of 'pp3300_hps_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_hps_x" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_hps_x" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_ez_config</name>
     <doc>Good default config for 'pp3300_hps_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_hps_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_hps_x">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_avg_mw</name>
     <doc>Avg power of 'pp3300_hps_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_hps_x" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_hps_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_hps_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_hps_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_hps_x">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_signed</name>
     <doc>Readings are signed for 'pp3300_hps_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_hps_x" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_hps_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="20" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="20" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="20" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="20" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="20" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="20" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="20" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_hps_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="20">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="20" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_mv</name>
     <doc>Bus Voltage of 'pp3300_sensor_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp3300_sensor_s5" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_res</name>
     <doc>Resolution of 'pp3300_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp3300_sensor_s5" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp3300_sensor_s5" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_samples</name>
     <doc>Samples per second of 'pp3300_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp3300_sensor_s5" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_ez_config</name>
     <doc>Good default config for 'pp3300_sensor_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_sensor_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_sensor_s5">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_sensor_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_sensor_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_sensor_s5">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_signed</name>
     <doc>Readings are signed for 'pp3300_sensor_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp3300_sensor_s5" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="3.3" base_name="pp3300_sensor_s5" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="21" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="21" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="21" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_sensor_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="21" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_mv</name>
     <doc>Bus Voltage of 'pp3300_tchscr_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_tchscr_x" nom="3.3" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_mw</name>
     <doc>Power of 'pp3300_tchscr_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_tchscr_x" nom="3.3" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_ma</name>
     <doc>Current of 'pp3300_tchscr_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_tchscr_x" nom="3.3" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_res</name>
     <doc>Resolution of 'pp3300_tchscr_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_tchscr_x" map="resolution" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_tchscr_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_tchscr_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_samples</name>
     <doc>Samples per second of 'pp3300_tchscr_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_tchscr_x" map="pac_samples" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_ez_config</name>
     <doc>Good default config for 'pp3300_tchscr_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="pp3300_tchscr_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_tchscr_x">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_avg_mw</name>
     <doc>Avg power of 'pp3300_tchscr_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_tchscr_x" nom="3.3" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_tchscr_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="pp3300_tchscr_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="pp3300_tchscr_x">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_signed</name>
     <doc>Readings are signed for 'pp3300_tchscr_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_tchscr_x" map="yesno" nom="3.3" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_tchscr_x" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="21" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="21" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="21" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_tchscr_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="21" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp1800_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_mw</name>
     <doc>Power of 'pp1800_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp1800_s5" nom="1.8" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ma</name>
     <doc>Current of 'pp1800_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp1800_s5" nom="1.8" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_res</name>
     <doc>Resolution of 'pp1800_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp1800_s5" map="resolution" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="1.8" base_name="pp1800_s5" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp1800_s5" map="yesno" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="1.8" base_name="pp1800_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_s5_samples</name>
     <doc>Samples per second of 'pp1800_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp1800_s5" map="pac_samples" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="1.8" base_name="pp1800_s5" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ez_config</name>
     <doc>Good default config for 'pp1800_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp1800_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="1.8" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_s5">
     </params>
   </control>
   <control>
     <name>pp1800_s5_avg_mw</name>
     <doc>Avg power of 'pp1800_s5' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp1800_s5" nom="1.8" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp1800_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp1800_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="1.8" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp1800_s5">
     </params>
   </control>
   <control>
     <name>pp1800_s5_signed</name>
     <doc>Readings are signed for 'pp1800_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp1800_s5" map="yesno" nom="1.8" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="1.8" base_name="pp1800_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="21" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="21" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="21" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="21" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_fan_mv</name>
     <doc>Bus Voltage of 'pp5000_fan' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp5000_fan" nom="5.0" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_fan" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp5000_fan_res</name>
     <doc>Resolution of 'pp5000_fan' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp5000_fan" map="resolution" nom="5.0" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="5.0" base_name="pp5000_fan" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp5000_fan_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp5000_fan' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp5000_fan" map="yesno" nom="5.0" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="5.0" base_name="pp5000_fan" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_fan_samples</name>
     <doc>Samples per second of 'pp5000_fan' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp5000_fan" map="pac_samples" nom="5.0" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="5.0" base_name="pp5000_fan" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp5000_fan_ez_config</name>
     <doc>Good default config for 'pp5000_fan' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp5000_fan" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="5.0" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_fan">
     </params>
   </control>
   <control>
     <name>pp5000_fan_acc_clear</name>
     <doc>Clear the accumulator for 'pp5000_fan' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp5000_fan" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="5.0" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp5000_fan">
     </params>
   </control>
   <control>
     <name>pp5000_fan_signed</name>
     <doc>Readings are signed for 'pp5000_fan' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp5000_fan" map="yesno" nom="5.0" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="5.0" base_name="pp5000_fan" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_fan_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_fan_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_fan_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="21" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_fan_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="21" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp5000_fan_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_fan_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="21" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_fan_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="21" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_fan_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp5000_fan_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="21" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="21" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_fan_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="21" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp5000_fan_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="21">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="21" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_dram_mv</name>
     <doc>Bus Voltage of 'pp1800_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp1800_dram" nom="1.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_mw</name>
     <doc>Power of 'pp1800_dram' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp1800_dram" nom="1.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ma</name>
     <doc>Current of 'pp1800_dram' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp1800_dram" nom="1.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_res</name>
     <doc>Resolution of 'pp1800_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp1800_dram" map="resolution" nom="1.8" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="1.8" base_name="pp1800_dram" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_dram_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp1800_dram" map="yesno" nom="1.8" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="1.8" base_name="pp1800_dram" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_dram_samples</name>
     <doc>Samples per second of 'pp1800_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp1800_dram" map="pac_samples" nom="1.8" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="1.8" base_name="pp1800_dram" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ez_config</name>
     <doc>Good default config for 'pp1800_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp1800_dram" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="1.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dram">
     </params>
   </control>
   <control>
     <name>pp1800_dram_avg_mw</name>
     <doc>Avg power of 'pp1800_dram' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp1800_dram" nom="1.8" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp1800_dram" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="1.8" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp1800_dram">
     </params>
   </control>
   <control>
     <name>pp1800_dram_signed</name>
     <doc>Readings are signed for 'pp1800_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp1800_dram" map="yesno" nom="1.8" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="1.8" base_name="pp1800_dram" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_dram_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dram_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="22" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dram_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="22" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dram_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_dram_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_dram_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="22" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_dram_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_dram_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_dram_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="22" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_mv</name>
     <doc>Bus Voltage of 'pp1100_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp1100_dram" nom="1.1" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_mw</name>
     <doc>Power of 'pp1100_dram' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp1100_dram" nom="1.1" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ma</name>
     <doc>Current of 'pp1100_dram' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp1100_dram" nom="1.1" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_res</name>
     <doc>Resolution of 'pp1100_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp1100_dram" map="resolution" nom="1.1" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="1.1" base_name="pp1100_dram" rsense="0.002" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1100_dram_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1100_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp1100_dram" map="yesno" nom="1.1" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="1.1" base_name="pp1100_dram" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1100_dram_samples</name>
     <doc>Samples per second of 'pp1100_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp1100_dram" map="pac_samples" nom="1.1" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="1.1" base_name="pp1100_dram" rsense="0.002" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ez_config</name>
     <doc>Good default config for 'pp1100_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp1100_dram" nom="1.1">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="1.1" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp1100_dram">
     </params>
   </control>
   <control>
     <name>pp1100_dram_avg_mw</name>
     <doc>Avg power of 'pp1100_dram' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp1100_dram" nom="1.1" tags="avg_power_rails" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_acc_clear</name>
     <doc>Clear the accumulator for 'pp1100_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.002" map="yes" base_name="pp1100_dram" nom="1.1">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="1.1" rsense="0.002" tags="accum_clear_ctrls" map="yes" base_name="pp1100_dram">
     </params>
   </control>
   <control>
     <name>pp1100_dram_signed</name>
     <doc>Readings are signed for 'pp1100_dram' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp1100_dram" map="yesno" nom="1.1" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="1.1" base_name="pp1100_dram" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1100_dram_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1100_dram_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="22" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1100_dram_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="22" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="22" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1100_dram_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1100_dram_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="22" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_mv</name>
     <doc>Bus Voltage of 'pp0600_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp0600_vddq" nom="0.6" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_mw</name>
     <doc>Power of 'pp0600_vddq' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp0600_vddq" nom="0.6" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ma</name>
     <doc>Current of 'pp0600_vddq' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp0600_vddq" nom="0.6" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_res</name>
     <doc>Resolution of 'pp0600_vddq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp0600_vddq" map="resolution" nom="0.6" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="0.6" base_name="pp0600_vddq" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp0600_vddq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp0600_vddq" map="yesno" nom="0.6" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="0.6" base_name="pp0600_vddq" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_samples</name>
     <doc>Samples per second of 'pp0600_vddq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp0600_vddq" map="pac_samples" nom="0.6" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="0.6" base_name="pp0600_vddq" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ez_config</name>
     <doc>Good default config for 'pp0600_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp0600_vddq" nom="0.6">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="0.6" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp0600_vddq">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_avg_mw</name>
     <doc>Avg power of 'pp0600_vddq' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp0600_vddq" nom="0.6" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_acc_clear</name>
     <doc>Clear the accumulator for 'pp0600_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp0600_vddq" nom="0.6">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="0.6" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp0600_vddq">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_signed</name>
     <doc>Readings are signed for 'pp0600_vddq' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp0600_vddq" map="yesno" nom="0.6" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="0.6" base_name="pp0600_vddq" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="22" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="22" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="22" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="22" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_mv</name>
     <doc>Bus Voltage of 'ppvar_vccin_aux' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="ppvar_vccin_aux" nom="9.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_mw</name>
     <doc>Power of 'ppvar_vccin_aux' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="ppvar_vccin_aux" nom="9.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ma</name>
     <doc>Current of 'ppvar_vccin_aux' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="ppvar_vccin_aux" nom="9.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_res</name>
     <doc>Resolution of 'ppvar_vccin_aux' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="ppvar_vccin_aux" map="resolution" nom="9.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_vccin_aux' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="ppvar_vccin_aux" map="yesno" nom="9.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_samples</name>
     <doc>Samples per second of 'ppvar_vccin_aux' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="ppvar_vccin_aux" map="pac_samples" nom="9.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ez_config</name>
     <doc>Good default config for 'ppvar_vccin_aux' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_vccin_aux" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="9.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vccin_aux">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_avg_mw</name>
     <doc>Avg power of 'ppvar_vccin_aux' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="ppvar_vccin_aux" nom="9.0" tags="avg_power_rails" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_vccin_aux' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.002" map="yes" base_name="ppvar_vccin_aux" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="9.0" rsense="0.002" tags="accum_clear_ctrls" map="yes" base_name="ppvar_vccin_aux">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_signed</name>
     <doc>Readings are signed for 'ppvar_vccin_aux' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="ppvar_vccin_aux" map="yesno" nom="9.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="9.0" base_name="ppvar_vccin_aux" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="22" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="22" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="22" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="22" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="22" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="22" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="22" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="22">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="22" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_mv</name>
     <doc>Bus Voltage of 'pp5000_tchpad_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp5000_tchpad_x" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_mw</name>
     <doc>Power of 'pp5000_tchpad_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp5000_tchpad_x" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_ma</name>
     <doc>Current of 'pp5000_tchpad_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp5000_tchpad_x" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_res</name>
     <doc>Resolution of 'pp5000_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp5000_tchpad_x" map="resolution" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp5000_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp5000_tchpad_x" map="yesno" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_samples</name>
     <doc>Samples per second of 'pp5000_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp5000_tchpad_x" map="pac_samples" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_ez_config</name>
     <doc>Good default config for 'pp5000_tchpad_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_tchpad_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_tchpad_x">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_avg_mw</name>
     <doc>Avg power of 'pp5000_tchpad_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp5000_tchpad_x" nom="5.0" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp5000_tchpad_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp5000_tchpad_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="5.0" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp5000_tchpad_x">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_signed</name>
     <doc>Readings are signed for 'pp5000_tchpad_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp5000_tchpad_x" map="yesno" nom="5.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="5.0" base_name="pp5000_tchpad_x" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="23" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="23" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="23" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp5000_tchpad_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="23" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_mv</name>
     <doc>Bus Voltage of 'pp3300_rtc_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_rtc_z2" nom="3.3" tags="bus_voltage_rail" rsense="0.0">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_res</name>
     <doc>Resolution of 'pp3300_rtc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_rtc_z2" map="resolution" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_rtc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_rtc_z2" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_samples</name>
     <doc>Samples per second of 'pp3300_rtc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_rtc_z2" map="pac_samples" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_ez_config</name>
     <doc>Good default config for 'pp3300_rtc_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.0" map="on" base_name="pp3300_rtc_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.0" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_rtc_z2">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_rtc_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.0" map="yes" base_name="pp3300_rtc_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.0" tags="accum_clear_ctrls" map="yes" base_name="pp3300_rtc_z2">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_signed</name>
     <doc>Readings are signed for 'pp3300_rtc_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_rtc_z2" map="yesno" nom="3.3" rsense="0.0">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.0" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="23" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="23" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="23" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="23" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z2_mv</name>
     <doc>Bus Voltage of 'pp3300_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_z2" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z2_mw</name>
     <doc>Power of 'pp3300_z2' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_z2" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z2_ma</name>
     <doc>Current of 'pp3300_z2' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_z2" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z2_res</name>
     <doc>Resolution of 'pp3300_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_z2" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_z2" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_z2_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_z2" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_z2" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_z2_samples</name>
     <doc>Samples per second of 'pp3300_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_z2" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_z2" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_z2_ez_config</name>
     <doc>Good default config for 'pp3300_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_z2">
     </params>
   </control>
   <control>
     <name>pp3300_z2_avg_mw</name>
     <doc>Avg power of 'pp3300_z2' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_z2" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_z2_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_z2">
     </params>
   </control>
   <control>
     <name>pp3300_z2_signed</name>
     <doc>Readings are signed for 'pp3300_z2' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_z2" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_z2" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_z2_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_z2_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_z2_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="23" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_z2_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="23" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_z2_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z2_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z2_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="23" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_z2_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_z2_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_z2_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_z2_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="23" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_mv</name>
     <doc>Bus Voltage of 'pp3300_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_s5" nom="3.3" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_mw</name>
     <doc>Power of 'pp3300_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_s5" nom="3.3" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ma</name>
     <doc>Current of 'pp3300_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_s5" nom="3.3" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_res</name>
     <doc>Resolution of 'pp3300_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_s5" map="resolution" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_s5" rsense="0.005" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_s5_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_s5" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_s5_samples</name>
     <doc>Samples per second of 'pp3300_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_s5" map="pac_samples" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_s5" rsense="0.005" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ez_config</name>
     <doc>Good default config for 'pp3300_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp3300_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_s5">
     </params>
   </control>
   <control>
     <name>pp3300_s5_avg_mw</name>
     <doc>Avg power of 'pp3300_s5' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_s5" nom="3.3" tags="avg_power_rails" rsense="0.005">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_s5" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp3300_s5_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.005" map="yes" base_name="pp3300_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.005" tags="accum_clear_ctrls" map="yes" base_name="pp3300_s5">
     </params>
   </control>
   <control>
     <name>pp3300_s5_signed</name>
     <doc>Readings are signed for 'pp3300_s5' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_s5" map="yesno" nom="3.3" rsense="0.005">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_s5" rsense="0.005" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_s5_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_s5_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="23" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_s5_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="23" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="23" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="23" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_s5_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="23" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="23" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_s5_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="23" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_s5_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="23">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="23" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_z1_mv</name>
     <doc>Bus Voltage of 'pp5000_z1' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp5000_z1" nom="5.0" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_mw</name>
     <doc>Power of 'pp5000_z1' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp5000_z1" nom="5.0" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ma</name>
     <doc>Current of 'pp5000_z1' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp5000_z1" nom="5.0" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_res</name>
     <doc>Resolution of 'pp5000_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp5000_z1" map="resolution" nom="5.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="5.0" base_name="pp5000_z1" rsense="0.002" map="resolution">
     </params>
   </control>
   <control>
     <name>pp5000_z1_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp5000_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp5000_z1" map="yesno" nom="5.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="5.0" base_name="pp5000_z1" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_z1_samples</name>
     <doc>Samples per second of 'pp5000_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp5000_z1" map="pac_samples" nom="5.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="5.0" base_name="pp5000_z1" rsense="0.002" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ez_config</name>
     <doc>Good default config for 'pp5000_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp5000_z1" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="5.0" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_z1">
     </params>
   </control>
   <control>
     <name>pp5000_z1_avg_mw</name>
     <doc>Avg power of 'pp5000_z1' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp5000_z1" nom="5.0" tags="avg_power_rails" rsense="0.002">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="5.0" base_name="pp5000_z1" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp5000_z1_acc_clear</name>
     <doc>Clear the accumulator for 'pp5000_z1' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.002" map="yes" base_name="pp5000_z1" nom="5.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="5.0" rsense="0.002" tags="accum_clear_ctrls" map="yes" base_name="pp5000_z1">
     </params>
   </control>
   <control>
     <name>pp5000_z1_signed</name>
     <doc>Readings are signed for 'pp5000_z1' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp5000_z1" map="yesno" nom="5.0" rsense="0.002">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="5.0" base_name="pp5000_z1" rsense="0.002" map="yesno">
     </params>
   </control>
   <control>
     <name>pp5000_z1_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_z1_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="24" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_z1_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="24" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp5000_z1_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_z1_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_z1_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="24" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp5000_z1_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp5000_z1_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp5000_z1_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp5000_z1_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="24" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_mv</name>
     <doc>Bus Voltage of 'ppvar_sys_sd' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="ppvar_sys_sd" nom="9.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_mw</name>
     <doc>Power of 'ppvar_sys_sd' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="ppvar_sys_sd" nom="9.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_ma</name>
     <doc>Current of 'ppvar_sys_sd' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="ppvar_sys_sd" nom="9.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_res</name>
     <doc>Resolution of 'ppvar_sys_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="ppvar_sys_sd" map="resolution" nom="9.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_sys_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="ppvar_sys_sd" map="yesno" nom="9.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_samples</name>
     <doc>Samples per second of 'ppvar_sys_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="ppvar_sys_sd" map="pac_samples" nom="9.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_ez_config</name>
     <doc>Good default config for 'ppvar_sys_sd' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_sys_sd" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="9.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_sys_sd">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_avg_mw</name>
     <doc>Avg power of 'ppvar_sys_sd' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="ppvar_sys_sd" nom="9.0" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_sys_sd' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="ppvar_sys_sd" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="9.0" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="ppvar_sys_sd">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_signed</name>
     <doc>Readings are signed for 'ppvar_sys_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="ppvar_sys_sd" map="yesno" nom="9.0" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="9.0" base_name="ppvar_sys_sd" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="24" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="24" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="24" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_sys_sd_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="24" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_mv</name>
     <doc>Bus Voltage of 'pp3300_s5_sd' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="pp3300_s5_sd" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_mw</name>
     <doc>Power of 'pp3300_s5_sd' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="pp3300_s5_sd" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_ma</name>
     <doc>Current of 'pp3300_s5_sd' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="pp3300_s5_sd" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_res</name>
     <doc>Resolution of 'pp3300_s5_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="pp3300_s5_sd" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_s5_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="pp3300_s5_sd" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_samples</name>
     <doc>Samples per second of 'pp3300_s5_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="pp3300_s5_sd" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_ez_config</name>
     <doc>Good default config for 'pp3300_s5_sd' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_s5_sd" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_s5_sd">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_avg_mw</name>
     <doc>Avg power of 'pp3300_s5_sd' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="pp3300_s5_sd" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_s5_sd' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_s5_sd" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_s5_sd">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_signed</name>
     <doc>Readings are signed for 'pp3300_s5_sd' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="pp3300_s5_sd" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="3.3" base_name="pp3300_s5_sd" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="24" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="24" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="24" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_s5_sd_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="24" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mv</name>
     <doc>Bus Voltage of 'ppvar_kb_bl' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="ppvar_kb_bl" nom="9.0" tags="bus_voltage_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_mw</name>
     <doc>Power of 'ppvar_kb_bl' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="ppvar_kb_bl" nom="9.0" tags="power_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ma</name>
     <doc>Current of 'ppvar_kb_bl' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="ppvar_kb_bl" nom="9.0" tags="current_rail" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_res</name>
     <doc>Resolution of 'ppvar_kb_bl' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="ppvar_kb_bl" map="resolution" nom="9.0" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_kb_bl' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="ppvar_kb_bl" map="yesno" nom="9.0" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_samples</name>
     <doc>Samples per second of 'ppvar_kb_bl' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="ppvar_kb_bl" map="pac_samples" nom="9.0" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ez_config</name>
     <doc>Good default config for 'ppvar_kb_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.02" map="on" base_name="ppvar_kb_bl" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="9.0" rsense="0.02" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_kb_bl">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_avg_mw</name>
     <doc>Avg power of 'ppvar_kb_bl' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="ppvar_kb_bl" nom="9.0" tags="avg_power_rails" rsense="0.02">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_kb_bl' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.02" map="yes" base_name="ppvar_kb_bl" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="9.0" rsense="0.02" tags="accum_clear_ctrls" map="yes" base_name="ppvar_kb_bl">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_signed</name>
     <doc>Readings are signed for 'ppvar_kb_bl' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="ppvar_kb_bl" map="yesno" nom="9.0" rsense="0.02">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="9.0" base_name="ppvar_kb_bl" rsense="0.02" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="24" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="24" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="24" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="24" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="24" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="24" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="24" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_kb_bl_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="24">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="24" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_mv</name>
     <doc>Bus Voltage of 'pp1800_fp_sens' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" base_name="pp1800_fp_sens" nom="1.8" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_mw</name>
     <doc>Power of 'pp1800_fp_sens' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" base_name="pp1800_fp_sens" nom="1.8" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ma</name>
     <doc>Current of 'pp1800_fp_sens' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" base_name="pp1800_fp_sens" nom="1.8" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_res</name>
     <doc>Resolution of 'pp1800_fp_sens' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" base_name="pp1800_fp_sens" map="resolution" nom="1.8" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="0" subtype="resolution" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5" map="resolution">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp1800_fp_sens' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="slow" base_name="pp1800_fp_sens" map="yesno" nom="1.8" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="0" subtype="slow" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_samples</name>
     <doc>Samples per second of 'pp1800_fp_sens' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="samples" base_name="pp1800_fp_sens" map="pac_samples" nom="1.8" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="0" subtype="samples" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ez_config</name>
     <doc>Good default config for 'pp1800_fp_sens' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp1800_fp_sens" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="ez_config" nom="1.8" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_fp_sens">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_avg_mw</name>
     <doc>Avg power of 'pp1800_fp_sens' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" base_name="pp1800_fp_sens" nom="1.8" tags="avg_power_rails" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="0" subtype="accum_milliwatts" tags="avg_power_rails" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_acc_clear</name>
     <doc>Clear the accumulator for 'pp1800_fp_sens' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.5" map="yes" base_name="pp1800_fp_sens" nom="1.8">
+    <params cmd="set" interface="servo" drv="pac1934" channel="0" subtype="acc_clear" nom="1.8" rsense="0.5" tags="accum_clear_ctrls" map="yes" base_name="pp1800_fp_sens">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_signed</name>
     <doc>Readings are signed for 'pp1800_fp_sens' rail</doc>
-    <params interface="servo" drv="pac1934" channel="0" subtype="signed" base_name="pp1800_fp_sens" map="yesno" nom="1.8" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="0" subtype="signed" nom="1.8" base_name="pp1800_fp_sens" rsense="0.5" map="yesno">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="25" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="6" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="25" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="15" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="15" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="19" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="19" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="23" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="25" offset="23" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp1800_fp_sens_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="25" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_mv</name>
     <doc>Bus Voltage of 'pp3300_fp_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" base_name="pp3300_fp_x" nom="3.3" tags="bus_voltage_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_mw</name>
     <doc>Power of 'pp3300_fp_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" base_name="pp3300_fp_x" nom="3.3" tags="power_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ma</name>
     <doc>Current of 'pp3300_fp_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" base_name="pp3300_fp_x" nom="3.3" tags="current_rail" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_res</name>
     <doc>Resolution of 'pp3300_fp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" base_name="pp3300_fp_x" map="resolution" nom="3.3" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="1" subtype="resolution" nom="3.3" base_name="pp3300_fp_x" rsense="0.5" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_fp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="slow" base_name="pp3300_fp_x" map="yesno" nom="3.3" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="1" subtype="slow" nom="3.3" base_name="pp3300_fp_x" rsense="0.5" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_samples</name>
     <doc>Samples per second of 'pp3300_fp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="samples" base_name="pp3300_fp_x" map="pac_samples" nom="3.3" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="1" subtype="samples" nom="3.3" base_name="pp3300_fp_x" rsense="0.5" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ez_config</name>
     <doc>Good default config for 'pp3300_fp_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.5" map="on" base_name="pp3300_fp_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="ez_config" nom="3.3" rsense="0.5" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_fp_x">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_avg_mw</name>
     <doc>Avg power of 'pp3300_fp_x' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" base_name="pp3300_fp_x" nom="3.3" tags="avg_power_rails" rsense="0.5">
+    <params cmd="get" interface="servo" drv="pac1934" channel="1" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_fp_x" rsense="0.5">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_fp_x' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.5" map="yes" base_name="pp3300_fp_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="1" subtype="acc_clear" nom="3.3" rsense="0.5" tags="accum_clear_ctrls" map="yes" base_name="pp3300_fp_x">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_signed</name>
     <doc>Readings are signed for 'pp3300_fp_x' rail</doc>
-    <params interface="servo" drv="pac1934" channel="1" subtype="signed" base_name="pp3300_fp_x" map="yesno" nom="3.3" rsense="0.5">
+    <params interface="servo" drv="pac1934" channel="1" subtype="signed" nom="3.3" base_name="pp3300_fp_x" rsense="0.5" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="25" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="6" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="25" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="16" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="16" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="20" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="20" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="24" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="25" offset="24" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_fp_x_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="25" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mv</name>
     <doc>Bus Voltage of 'ppvar_vbus_in' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" base_name="ppvar_vbus_in" nom="9.0" tags="bus_voltage_rail" rsense="0.001">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="millivolts" tags="bus_voltage_rail" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_mw</name>
     <doc>Power of 'ppvar_vbus_in' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" base_name="ppvar_vbus_in" nom="9.0" tags="power_rail" rsense="0.001">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliwatts" tags="power_rail" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ma</name>
     <doc>Current of 'ppvar_vbus_in' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" base_name="ppvar_vbus_in" nom="9.0" tags="current_rail" rsense="0.001">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="milliamps" tags="current_rail" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_res</name>
     <doc>Resolution of 'ppvar_vbus_in' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" base_name="ppvar_vbus_in" map="resolution" nom="9.0" rsense="0.001">
+    <params interface="servo" drv="pac1934" channel="2" subtype="resolution" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001" map="resolution">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'ppvar_vbus_in' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="slow" base_name="ppvar_vbus_in" map="yesno" nom="9.0" rsense="0.001">
+    <params interface="servo" drv="pac1934" channel="2" subtype="slow" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_samples</name>
     <doc>Samples per second of 'ppvar_vbus_in' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="samples" base_name="ppvar_vbus_in" map="pac_samples" nom="9.0" rsense="0.001">
+    <params interface="servo" drv="pac1934" channel="2" subtype="samples" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001" map="pac_samples">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ez_config</name>
     <doc>Good default config for 'ppvar_vbus_in' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.001" map="on" base_name="ppvar_vbus_in" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="ez_config" nom="9.0" rsense="0.001" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vbus_in">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_avg_mw</name>
     <doc>Avg power of 'ppvar_vbus_in' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" base_name="ppvar_vbus_in" nom="9.0" tags="avg_power_rails" rsense="0.001">
+    <params cmd="get" interface="servo" drv="pac1934" channel="2" subtype="accum_milliwatts" tags="avg_power_rails" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_acc_clear</name>
     <doc>Clear the accumulator for 'ppvar_vbus_in' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.001" map="yes" base_name="ppvar_vbus_in" nom="9.0">
+    <params cmd="set" interface="servo" drv="pac1934" channel="2" subtype="acc_clear" nom="9.0" rsense="0.001" tags="accum_clear_ctrls" map="yes" base_name="ppvar_vbus_in">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_signed</name>
     <doc>Readings are signed for 'ppvar_vbus_in' rail</doc>
-    <params interface="servo" drv="pac1934" channel="2" subtype="signed" base_name="ppvar_vbus_in" map="yesno" nom="9.0" rsense="0.001">
+    <params interface="servo" drv="pac1934" channel="2" subtype="signed" nom="9.0" base_name="ppvar_vbus_in" rsense="0.001" map="yesno">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="25" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="6" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="25" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="17" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="17" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="21" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="21" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="25" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="25" offset="25" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>ppvar_vbus_in_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="25" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_mv</name>
     <doc>Bus Voltage of 'pp3300_adc_dbg' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" base_name="pp3300_adc_dbg" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_mw</name>
     <doc>Power of 'pp3300_adc_dbg' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" base_name="pp3300_adc_dbg" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_ma</name>
     <doc>Current of 'pp3300_adc_dbg' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" base_name="pp3300_adc_dbg" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_res</name>
     <doc>Resolution of 'pp3300_adc_dbg' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" base_name="pp3300_adc_dbg" map="resolution" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="resolution" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01" map="resolution">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_slow_enabled</name>
     <doc>Slow pin ctrl enabled on 'pp3300_adc_dbg' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="slow" base_name="pp3300_adc_dbg" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="slow" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_samples</name>
     <doc>Samples per second of 'pp3300_adc_dbg' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="samples" base_name="pp3300_adc_dbg" map="pac_samples" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="samples" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01" map="pac_samples">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_ez_config</name>
     <doc>Good default config for 'pp3300_adc_dbg' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_adc_dbg" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_adc_dbg">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_avg_mw</name>
     <doc>Avg power of 'pp3300_adc_dbg' rail in milliwatts since last clearing the accumulator</doc>
-    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" base_name="pp3300_adc_dbg" nom="3.3" tags="avg_power_rails" rsense="0.01">
+    <params cmd="get" interface="servo" drv="pac1934" channel="3" subtype="accum_milliwatts" tags="avg_power_rails" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_acc_clear</name>
     <doc>Clear the accumulator for 'pp3300_adc_dbg' rail</doc>
-    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" tags="accum_clear_ctrls" rsense="0.01" map="yes" base_name="pp3300_adc_dbg" nom="3.3">
+    <params cmd="set" interface="servo" drv="pac1934" channel="3" subtype="acc_clear" nom="3.3" rsense="0.01" tags="accum_clear_ctrls" map="yes" base_name="pp3300_adc_dbg">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_signed</name>
     <doc>Readings are signed for 'pp3300_adc_dbg' rail</doc>
-    <params interface="servo" drv="pac1934" channel="3" subtype="signed" base_name="pp3300_adc_dbg" map="yesno" nom="3.3" rsense="0.01">
+    <params interface="servo" drv="pac1934" channel="3" subtype="signed" nom="3.3" base_name="pp3300_adc_dbg" rsense="0.01" map="yesno">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_refresh_reg</name>
     <doc>Raw register value of refresh on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="0" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="0" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_ctrl_reg</name>
     <doc>Raw register value of ctrl on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_acc_count_reg</name>
     <doc>Raw register value of acc_count on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="3" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="3" addr="25" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_acc_pwr_reg</name>
     <doc>Raw register value of acc_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="6" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="6" addr="25" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="18" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="18" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="22" fmt="hex" read_only="" c2d2_interface="4" reg_len="2" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" read_only="" addr="25" offset="22" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="26" fmt="hex" read_only="" c2d2_interface="4" reg_len="4" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="4" read_only="" addr="25" offset="26" fmt="hex" c2d2_interface="4">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_neg_pwr_reg</name>
     <doc>Raw register value of neg_pwr on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="29" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="29">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_refresh_v_reg</name>
     <doc>Raw register value of refresh_v on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" addr="25" c2d2_interface="4" map="refresh" offset="31" fmt="hex" no_read="" reg_len="0" write_only="">
+    <params interface="2" drv="i2c_reg_drv" reg_len="0" no_read="" addr="25" write_only="" offset="31" fmt="hex" c2d2_interface="4" map="refresh">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_ctrl_act_reg</name>
     <doc>Raw register value of ctrl_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="33" fmt="hex" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" addr="25" fmt="hex" c2d2_interface="4" offset="33">
     </params>
   </control>
   <control>
     <name>pp3300_adc_dbg_neg_pwr_act_reg</name>
     <doc>Raw register value of neg_pwr_act on i2c_mux:rem</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="35" fmt="hex" read_only="" c2d2_interface="4" reg_len="1" addr="25">
+    <params interface="2" drv="i2c_reg_drv" reg_len="1" read_only="" addr="25" offset="35" fmt="hex" c2d2_interface="4">
     </params>
   </control>
 </root>
\ No newline at end of file
diff --git a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rw0.xml b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rw0.xml
index 894b8c5..f1e75db 100644
--- a/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rw0.xml
+++ b/chroot/build/arm-generic/usr/lib/python3.6/site-packages/servo/data/brya_rw0.xml
@@ -1,2191 +1,2191 @@
 <?xml version="1.0"?>
 <root>
-<!-- Autogenerated on Wed Sep 14 01:03:26 2022 -->
+<!-- Autogenerated on Wed Sep 14 13:15:52 2022 -->
   <include>
     <name>ina2xx.xml</name>
   </include>
   <control>
     <name>ppvar_vccin_aux_mv</name>
     <doc>Bus Voltage of 'ppvar_vccin_aux' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_vccin_aux" nom="1.1" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.1" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_mw</name>
     <doc>Power of 'ppvar_vccin_aux' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_vccin_aux" nom="1.1" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.1" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ma</name>
     <doc>Current of 'ppvar_vccin_aux' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_vccin_aux" nom="1.1" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.1" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_vccin_aux' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_vccin_aux" nom="1.1" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.1" base_name="ppvar_vccin_aux" rsense="0.002">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_ez_config</name>
     <doc>Good default config for 'ppvar_vccin_aux' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="ppvar_vccin_aux" nom="1.1">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.1" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_vccin_aux">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_vccin_aux_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_soc_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_soc_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_mw</name>
     <doc>Power of 'pp1800_soc_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_soc_s5" nom="1.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ma</name>
     <doc>Current of 'pp1800_soc_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_soc_s5" nom="1.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_soc_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_soc_s5" nom="1.8" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_soc_s5" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_ez_config</name>
     <doc>Good default config for 'pp1800_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp1800_soc_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_soc_s5">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_soc_s5_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_mv</name>
     <doc>Bus Voltage of 'pp3300_soc_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_soc_s5" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_mw</name>
     <doc>Power of 'pp3300_soc_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_soc_s5" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ma</name>
     <doc>Current of 'pp3300_soc_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_soc_s5" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_soc_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_soc_s5" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_soc_s5" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_ez_config</name>
     <doc>Good default config for 'pp3300_soc_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_soc_s5" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_soc_s5">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_soc_s5_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_mv</name>
     <doc>Bus Voltage of 'pp3300_rtc_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_rtc_z2" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_mw</name>
     <doc>Power of 'pp3300_rtc_z2' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_rtc_z2" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_ma</name>
     <doc>Current of 'pp3300_rtc_z2' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_rtc_z2" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_rtc_z2' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_rtc_z2" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_rtc_z2" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_ez_config</name>
     <doc>Good default config for 'pp3300_rtc_z2' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_rtc_z2" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_rtc_z2">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_rtc_z2_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="64">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="64" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_dram_mv</name>
     <doc>Bus Voltage of 'pp1800_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_dram" nom="1.8" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_mw</name>
     <doc>Power of 'pp1800_dram' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_dram" nom="1.8" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ma</name>
     <doc>Current of 'pp1800_dram' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_dram" nom="1.8" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_dram" nom="1.8" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_dram" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp1800_dram_ez_config</name>
     <doc>Good default config for 'pp1800_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp1800_dram" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_dram">
     </params>
   </control>
   <control>
     <name>pp1800_dram_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_dram_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_dram_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_dram_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_dram_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_dram_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_dram_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_dram_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1100_dram_mv</name>
     <doc>Bus Voltage of 'pp1100_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1100_dram" nom="1.1" tags="bus_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_mw</name>
     <doc>Power of 'pp1100_dram' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1100_dram" nom="1.1" tags="power_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ma</name>
     <doc>Current of 'pp1100_dram' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1100_dram" nom="1.1" tags="current_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_shuntmv</name>
     <doc>Shunt Voltage of 'pp1100_dram' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1100_dram" nom="1.1" tags="shunt_voltage_rail" rsense="0.002">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.1" base_name="pp1100_dram" rsense="0.002">
     </params>
   </control>
   <control>
     <name>pp1100_dram_ez_config</name>
     <doc>Good default config for 'pp1100_dram' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.002" map="on" base_name="pp1100_dram" nom="1.1">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.1" rsense="0.002" tags="adc_ez_config_ctrls" map="on" base_name="pp1100_dram">
     </params>
   </control>
   <control>
     <name>pp1100_dram_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1100_dram_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1100_dram_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1100_dram_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1100_dram_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1100_dram_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1100_dram_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1100_dram_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_mv</name>
     <doc>Bus Voltage of 'pp0600_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp0600_vddq" nom="0.6" tags="bus_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_mw</name>
     <doc>Power of 'pp0600_vddq' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp0600_vddq" nom="0.6" tags="power_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ma</name>
     <doc>Current of 'pp0600_vddq' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp0600_vddq" nom="0.6" tags="current_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_shuntmv</name>
     <doc>Shunt Voltage of 'pp0600_vddq' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp0600_vddq" nom="0.6" tags="shunt_voltage_rail" rsense="0.005">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="0.6" base_name="pp0600_vddq" rsense="0.005">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_ez_config</name>
     <doc>Good default config for 'pp0600_vddq' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.005" map="on" base_name="pp0600_vddq" nom="0.6">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="0.6" rsense="0.005" tags="adc_ez_config_ctrls" map="on" base_name="pp0600_vddq">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp0600_vddq_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_mv</name>
     <doc>Bus Voltage of 'pp3300_ssd_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_ssd_x" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_mw</name>
     <doc>Power of 'pp3300_ssd_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_ssd_x" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ma</name>
     <doc>Current of 'pp3300_ssd_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_ssd_x" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_ssd_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_ssd_x" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_ssd_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_ez_config</name>
     <doc>Good default config for 'pp3300_ssd_x' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_ssd_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_ssd_x">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_ssd_x_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="65">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="65" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mv</name>
     <doc>Bus Voltage of 'pp3300_wlan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp3300_wlan_x" nom="3.3" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_mw</name>
     <doc>Power of 'pp3300_wlan_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp3300_wlan_x" nom="3.3" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ma</name>
     <doc>Current of 'pp3300_wlan_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp3300_wlan_x" nom="3.3" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_shuntmv</name>
     <doc>Shunt Voltage of 'pp3300_wlan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp3300_wlan_x" nom="3.3" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="3.3" base_name="pp3300_wlan_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_ez_config</name>
     <doc>Good default config for 'pp3300_wlan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp3300_wlan_x" nom="3.3">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="3.3" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp3300_wlan_x">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp3300_wlan_x_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="5" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="5" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_mv</name>
     <doc>Bus Voltage of 'ppvar_wwan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="ppvar_wwan_x" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="ppvar_wwan_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_mw</name>
     <doc>Power of 'ppvar_wwan_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="ppvar_wwan_x" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="ppvar_wwan_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_ma</name>
     <doc>Current of 'ppvar_wwan_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="ppvar_wwan_x" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="ppvar_wwan_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_shuntmv</name>
     <doc>Shunt Voltage of 'ppvar_wwan_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="ppvar_wwan_x" nom="5.0" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="ppvar_wwan_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_ez_config</name>
     <doc>Good default config for 'ppvar_wwan_x' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="ppvar_wwan_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="ppvar_wwan_x">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>ppvar_wwan_x_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="3" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="3" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_mv</name>
     <doc>Bus Voltage of 'pp1800_sensor_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp1800_sensor_s5" nom="1.8" tags="bus_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_mw</name>
     <doc>Power of 'pp1800_sensor_s5' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp1800_sensor_s5" nom="1.8" tags="power_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_ma</name>
     <doc>Current of 'pp1800_sensor_s5' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp1800_sensor_s5" nom="1.8" tags="current_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_shuntmv</name>
     <doc>Shunt Voltage of 'pp1800_sensor_s5' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp1800_sensor_s5" nom="1.8" tags="shunt_voltage_rail" rsense="0.1">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="1.8" base_name="pp1800_sensor_s5" rsense="0.1">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_ez_config</name>
     <doc>Good default config for 'pp1800_sensor_s5' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.1" map="on" base_name="pp1800_sensor_s5" nom="1.8">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="1.8" rsense="0.1" tags="adc_ez_config_ctrls" map="on" base_name="pp1800_sensor_s5">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_cur_reg</name>
     <doc>Raw register value of cur on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="4" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="4">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_cal_reg</name>
     <doc>Raw register value of cal on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="5" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="5">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_msken_reg</name>
     <doc>Raw register value of msken on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="6" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="6">
     </params>
   </control>
   <control>
     <name>pp1800_sensor_s5_alrt_reg</name>
     <doc>Raw register value of alrt on i2c_mux:j2</doc>
-    <params interface="4" drv="i2c_reg_drv" offset="7" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="4" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="7">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_mv</name>
     <doc>Bus Voltage of 'pp5000_hdmi_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" base_name="pp5000_hdmi_x" nom="5.0" tags="bus_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="millivolts" tags="bus_voltage_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_mw</name>
     <doc>Power of 'pp5000_hdmi_x' rail in milliwatts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" base_name="pp5000_hdmi_x" nom="5.0" tags="power_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliwatts" tags="power_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ma</name>
     <doc>Current of 'pp5000_hdmi_x' rail in milliamps</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" base_name="pp5000_hdmi_x" nom="5.0" tags="current_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="milliamps" tags="current_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_shuntmv</name>
     <doc>Shunt Voltage of 'pp5000_hdmi_x' rail in millivolts</doc>
-    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" base_name="pp5000_hdmi_x" nom="5.0" tags="shunt_voltage_rail" rsense="0.01">
+    <params cmd="get" interface="servo" drv="ina231" channel="0" subtype="shuntmv" tags="shunt_voltage_rail" nom="5.0" base_name="pp5000_hdmi_x" rsense="0.01">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_ez_config</name>
     <doc>Good default config for 'pp5000_hdmi_x' rail</doc>
-    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" tags="adc_ez_config_ctrls" rsense="0.01" map="on" base_name="pp5000_hdmi_x" nom="5.0">
+    <params cmd="set" interface="servo" drv="ina231" channel="0" subtype="ez_config" nom="5.0" rsense="0.01" tags="adc_ez_config_ctrls" map="on" base_name="pp5000_hdmi_x">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_cfg_reg</name>
     <doc>Raw register value of cfg on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" map="ina231_cfg" offset="0" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="0" map="ina231_cfg">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_shv_reg</name>
     <doc>Raw register value of shv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="1" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="1">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_busv_reg</name>
     <doc>Raw register value of busv on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="2" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="2">
     </params>
   </control>
   <control>
     <name>pp5000_hdmi_x_pwr_reg</name>
     <doc>Raw register value of pwr on i2c_mux:j2</doc>
-    <params interface="2" drv="i2c_reg_drv" offset="3" fmt="hex" c2d2_interface="4" reg_len="2" addr="66">
+    <params interface="2" drv="i2c_reg_drv" reg_len="2" addr="66" fmt="hex" c2d2_interface="4" offset="3">