scarlet: support rearrangement of warm_reset
Newer servo headers may have warm_reset on pin 39,
add a config based on board selection to configure
yoshi header in the new way or old way.
BUG=b:64724237
TEST=Works on scarlet, works on reef config.
Change-Id: I399ecdda8f77578c415aa021d9d8af23876c4b37
Signed-off-by: Nick Sanders <nsanders@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/631190
Reviewed-by: Alexandru M Stan <amstan@chromium.org>
diff --git a/servo/data/servo_micro.xml b/servo/data/servo_micro.xml
index 3cf98a9..d69635b 100644
--- a/servo/data/servo_micro.xml
+++ b/servo/data/servo_micro.xml
@@ -193,12 +193,6 @@
<params interface="2" drv="tca6416" slv="0x20" od="PU" port="0"
offset="6" map="press" init="release"></params>
</control>
- <control>
- <name>warm_reset</name>
- <doc>warm_reset</doc>
- <params interface="2" drv="tca6416" slv="0x20" od="PU" port="0"
- offset="7" map="onoff_i" init="off"></params>
- </control>
<control>
<name>rec_mode</name>
@@ -207,12 +201,6 @@
offset="0" map="onoff_i" init="off"></params>
</control>
<control>
- <name>hpd</name>
- <doc>hpd</doc>
- <params interface="2" drv="tca6416" slv="0x20" port="1"
- offset="2" map="onoff"></params>
- </control>
- <control>
<name>fw_up</name>
<alias>t20_rec,proc_hot</alias>
<doc>Firmware update mode via USB</doc>
diff --git a/servo/data/servo_micro_orig.xml b/servo/data/servo_micro_orig.xml
new file mode 100644
index 0000000..03fda40
--- /dev/null
+++ b/servo/data/servo_micro_orig.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<root>
+ <include>
+ <name>servo_micro.xml</name>
+ </include>
+
+ <control>
+ <name>warm_reset</name>
+ <doc>warm_reset</doc>
+ <params interface="2" drv="tca6416" slv="0x20" od="PU" port="0"
+ offset="7" map="onoff_i" init="off"></params>
+ </control>
+ <control>
+ <name>hpd</name>
+ <doc>hpd</doc>
+ <params interface="2" drv="tca6416" slv="0x20" port="1"
+ offset="2" map="onoff"></params>
+ </control>
+</root>
diff --git a/servo/data/servo_micro_reconf.xml b/servo/data/servo_micro_reconf.xml
new file mode 100644
index 0000000..281f376
--- /dev/null
+++ b/servo/data/servo_micro_reconf.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<root>
+ <include>
+ <name>servo_micro.xml</name>
+ </include>
+
+ <control>
+ <name>warm_reset</name>
+ <doc>warm reset</doc>
+ <params interface="2" drv="tca6416" slv="0x20" od="PU" port="1"
+ offset="2" map="onoff_i" init="off"></params>
+ </control>
+</root>
diff --git a/servo/data/servo_v2_r0.xml b/servo/data/servo_v2_r0.xml
index d0e174c..51db5a2 100644
--- a/servo/data/servo_v2_r0.xml
+++ b/servo/data/servo_v2_r0.xml
@@ -168,12 +168,6 @@
offset="3" map="onoff_i" init="off"></params>
</control>
<control>
- <name>warm_reset</name>
- <doc>warm_reset</doc>
- <params interface="2" drv="tca6416" slv="0x20" od="PU" port="0"
- offset="4" map="onoff_i" init="off"></params>
- </control>
- <control>
<name>dev_mode</name>
<doc>dev_mode GPIO. Note, is aliased to spi1_buf_on_flex_en
GPIO</doc>
@@ -216,12 +210,6 @@
offset="1" map="onoff"></params>
</control>
<control>
- <name>hpd</name>
- <doc>hpd</doc>
- <params interface="2" drv="tca6416" slv="0x20" port="1"
- offset="2" map="onoff"></params>
- </control>
- <control>
<name>fw_wp</name>
<doc>Firmware write-protect GPIO</doc>
<params cmd="get" interface="2" drv="tca6416" slv="0x20"
diff --git a/servo/data/servo_v2_r1_orig.xml b/servo/data/servo_v2_r1_orig.xml
new file mode 100644
index 0000000..437a720
--- /dev/null
+++ b/servo/data/servo_v2_r1_orig.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<root>
+ <include>
+ <name>servo_v2_r1.xml</name>
+ </include>
+
+ <control>
+ <name>warm_reset</name>
+ <doc>warm_reset</doc>
+ <params interface="2" drv="tca6416" slv="0x20" od="PU" port="0"
+ offset="4" map="onoff_i" init="off"></params>
+ </control>
+ <control>
+ <name>hpd</name>
+ <doc>hpd</doc>
+ <params interface="2" drv="tca6416" slv="0x20" port="1"
+ offset="2" map="onoff"></params>
+ </control>
+</root>
diff --git a/servo/data/servo_v2_r1_reconf.xml b/servo/data/servo_v2_r1_reconf.xml
new file mode 100644
index 0000000..9bf89fc
--- /dev/null
+++ b/servo/data/servo_v2_r1_reconf.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<root>
+ <include>
+ <name>servo_v2_r1.xml</name>
+ </include>
+
+ <control>
+ <name>warm_reset</name>
+ <doc>warm_reset</doc>
+ <params interface="2" drv="tca6416" slv="0x20" od="PU" port="1"
+ offset="2" map="onoff_i" init="off"></params>
+ </control>
+</root>
diff --git a/servo/data/servo_v3_r0.xml b/servo/data/servo_v3_r0.xml
index 26a7a3a..a47c294 100644
--- a/servo/data/servo_v3_r0.xml
+++ b/servo/data/servo_v3_r0.xml
@@ -70,12 +70,7 @@
<params interface="2" drv="tca6416" slv="0x20" od="PU" port="0"
offset="3" map="onoff_i" init="off"></params>
</control>
- <control>
- <name>warm_reset</name>
- <doc>warm_reset</doc>
- <params interface="2" drv="tca6416" slv="0x20" od="PU" port="0"
- offset="4" map="onoff_i" init="off"></params>
- </control>
+
<control>
<name>dev_mode</name>
<doc>dev_mode GPIO. Note, is aliased to spi1_buf_on_flex_en
@@ -119,12 +114,6 @@
offset="1" map="onoff"></params>
</control>
<control>
- <name>hpd</name>
- <doc>hpd</doc>
- <params interface="2" drv="tca6416" slv="0x20" port="1"
- offset="2" map="onoff"></params>
- </control>
- <control>
<name>fw_wp</name>
<doc>Firmware write-protect GPIO</doc>
<params cmd="get" interface="2" drv="tca6416" slv="0x20"
diff --git a/servo/data/servo_v3_r0_orig.xml b/servo/data/servo_v3_r0_orig.xml
new file mode 100644
index 0000000..ea198f8
--- /dev/null
+++ b/servo/data/servo_v3_r0_orig.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<root>
+ <include>
+ <name>servo_v3_r0.xml</name>
+ </include>
+
+ <control>
+ <name>warm_reset</name>
+ <doc>warm_reset</doc>
+ <params interface="2" drv="tca6416" slv="0x20" od="PU" port="0"
+ offset="4" map="onoff_i" init="off"></params>
+ </control>
+ <control>
+ <name>hpd</name>
+ <doc>hpd</doc>
+ <params interface="2" drv="tca6416" slv="0x20" port="1"
+ offset="2" map="onoff"></params>
+ </control>
+</root>
diff --git a/servo/data/servo_v3_r0_reconf.xml b/servo/data/servo_v3_r0_reconf.xml
new file mode 100644
index 0000000..06ea320
--- /dev/null
+++ b/servo/data/servo_v3_r0_reconf.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<root>
+ <include>
+ <name>servo_v3_r0.xml</name>
+ </include>
+
+ <control>
+ <name>warm_reset</name>
+ <doc>warm_reset</doc>
+ <params interface="2" drv="tca6416" slv="0x20" od="PU" port="1"
+ offset="2" map="onoff_i" init="off"></params>
+ </control>
+</root>
diff --git a/servo/ftdi_common.py b/servo/ftdi_common.py
index e3862d1..fd02729 100644
--- a/servo/ftdi_common.py
+++ b/servo/ftdi_common.py
@@ -43,10 +43,10 @@
{'miniservo_v1': ['miniservo.xml'],
'servo_v1': ['servo.xml'],
'servo_v2_r0': ['servo_v2_r0.xml'],
- 'servo_v2': ['servo_v2_r1.xml'],
- 'servo_v3': ['servo_v3_r0.xml'],
+ 'servo_v2': ['servo_v2_r1_orig.xml'],
+ 'servo_v3': ['servo_v3_r0_orig.xml'],
'servo_v4': ['servo_v4.xml'],
- 'servo_micro': ['servo_micro.xml'],
+ 'servo_micro': ['servo_micro_orig.xml'],
'ccd_cr50': ['ccd_cr50.xml'],
'toad_v1': ['toad.xml'],
'reston': ['reston.xml'],
@@ -54,6 +54,26 @@
'plankton': ['plankton.xml'],
}
+# dnschneid has moved warm reset to pin 39, replacing hpd.
+SERVO_CONFIG_DEFAULTS_RECONF = \
+ {'miniservo_v1': ['miniservo.xml'],
+ 'servo_v1': ['servo.xml'],
+ 'servo_v2_r0': ['servo_v2_r0.xml'],
+ 'servo_v2': ['servo_v2_r1_reconf.xml'],
+ 'servo_v3': ['servo_v3_r0_reconf.xml'],
+ 'servo_v4': ['servo_v4.xml'],
+ 'servo_micro': ['servo_micro_reconf.xml'],
+ 'ccd_cr50': ['ccd_cr50.xml'],
+ 'toad_v1': ['toad.xml'],
+ 'reston': ['reston.xml'],
+ 'fruitpie': ['fruitpie.xml'],
+ 'plankton': ['plankton.xml'],
+ }
+
+# These are the boards with reconfigured servo headers.
+SERVO_CONFIG_RECONF_BOARDS = \
+ ('scarlet', 'zoombini', 'nefario')
+
class FtdiContext(ctypes.Structure):
"""Defines primary context structure for libftdi.
diff --git a/servo/servod.py b/servo/servod.py
index 7da5a86..f7426ed 100755
--- a/servo/servod.py
+++ b/servo/servod.py
@@ -405,20 +405,24 @@
logger.warn("Servo device's iserial was unrecognized.")
return lot_id
-def get_auto_configs(logger, board_version):
+def get_auto_configs(logger, board_version, reconf):
"""Get xml configs that should be loaded.
Args:
board_version: string, board & version
+ reconf: boolean, use SERVO_CONFIG_DEFAULTS_RECONF instead
Returns:
configs: list of XML config files that should be loaded
"""
- if board_version not in ftdi_common.SERVO_CONFIG_DEFAULTS:
+ config_defaults = ftdi_common.SERVO_CONFIG_DEFAULTS_RECONF \
+ if reconf else ftdi_common.SERVO_CONFIG_DEFAULTS
+
+ if board_version not in config_defaults:
logger.warning('Unable to determine configs to load for board version = %s',
board_version)
return []
- return ftdi_common.SERVO_CONFIG_DEFAULTS[board_version]
+ return config_defaults[board_version]
def main_function():
(options, args) = _parse_args()
@@ -451,8 +455,13 @@
board_version = get_board_version(lot_id, servo_device.idProduct)
logger.debug('board_version = %s', board_version)
all_configs = []
+
+ # Is this in the list of boards with reconfigured servo headers?
+ # b/64724237
+ reconf = options.board in ftdi_common.SERVO_CONFIG_RECONF_BOARDS
+
if not options.noautoconfig:
- all_configs += get_auto_configs(logger, board_version)
+ all_configs += get_auto_configs(logger, board_version, reconf)
if options.config:
for config in options.config: