Modify cros_write_firmware to control servo when programming Tegra targets

When flashing a Tegra based DUT, cros_write_firmware does not set the
target into a proper state, expecting the operator to run dut-control
to set the target into a programming state and then to take it back to

Modify the utility to have it issue the required dit-control commands
(the way Exynos flasher does). Also correct the doc string and in case
the servo is used suppress the request to connect the A-A cable and
restart the DUT.

Refactor the code which preserves the dut_hub_sel control state
  . disconnect the DUT console port on the host and run the following commands

   $ emerge-nyan chromeos-bootimage
   $ emerge-peach_pit chromeos-bootimage
   $ cros_write_firmware -b nyan -d /build/nyan/firmware/dtb/tegra124-venice2.dtb \
           -i /build/nyan/firmware/nv_image-venice2.bin -F spi:1
   $ cros_write_firmware -b peach_pit \
     -d /build/peach_pit/firmware/dtb/exynos5420-peach-pit.dtb \
     -i /build/peach_pit/firmware/image-peach-pit.bin -F spi

  . observe both cros_write_firmware invocations succeed

  . repeat the above firmware write attempts with dut_hub_sel set to
    'dut_sees_servo' and 'dut_sees_hub'. Observe that the control
    state is preserved over the programming session.

Cannot find /iram, using default
Missing properties in /config, using defaults
Signed-off-by: Vadim Bendebury <>

Change-Id: Iabc5a4e6789a4ff02c5978c3e7b5e0798e87205f
Tested-by: Vadim Bendebury <>
Reviewed-by: Julius Werner <>
Commit-Queue: Vadim Bendebury <>
1 file changed