History log of /external/autotest/server/cros/servo/firmware_programmer.py
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
36824cce905c08738f9e0e4dfd0f2a9d2394239f 11-Nov-2016 Wai-Hong Tam <waihong@google.com> [autotest] Support CCD firmware programmer

Detect the CCD using the servo serial RPC. Pass the proper parameters
to flashrom and flash_ec for firmware programming.

BUG=chrome-os-partner:58039
CQ-DEPEND=CL:410058
CQ-DEPEND=CL:410162
TEST=Ran provision_FirmwareUpdate to program firmware via CCD:
$ sudo servod -b gru -v 0x18d1 -p 0x501b
$ test_that --board $BOARD --args \
"value=gru-firmware/R55-8785.84.0 servo_host=localhost" \
$DUT_IP provision_FirmwareUpdate

Change-Id: I5af37ebdae26ca1f157849362445a013924accdc
Reviewed-on: https://chromium-review.googlesource.com/425326
Commit-Ready: Wai-Hong Tam <waihong@google.com>
Tested-by: Wai-Hong Tam <waihong@google.com>
Reviewed-by: Kevin Cheng <kevcheng@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
df2e29f4bff8fbb53f3d90745b63ed92b6aed5d2 09-Sep-2016 Kevin Cheng <kevcheng@chromium.org> [autotest] Enable firmware install for servo v4.

CQ-DEPEND=CL:352820
CQ-DEPEND=CL:383591
BUG=chromium:643081
TEST=not yet

Change-Id: I8df2c8961031041fee2c06affc8f5a0a794d64a6
Reviewed-on: https://chromium-review.googlesource.com/383592
Commit-Ready: Wai-Hong Tam <waihong@google.com>
Tested-by: Wai-Hong Tam <waihong@google.com>
Reviewed-by: Wai-Hong Tam <waihong@google.com>
/external/autotest/server/cros/servo/firmware_programmer.py
c36c4d230bdaf2b23740e5db90acd583a86555bf 09-Sep-2016 Wai-Hong Tam <waihong@google.com> Add the RW-only firmware programmer for servo v2

Created a new main programmer class which provides programmer for only
updating the RW portion of BIOS with servo V2.

It does nothing on EC, as EC software sync on the next boot will
automatically overwrite the EC RW portion, using the EC RW image
inside the BIOS RW image.

BUG=chromium:645311
TEST=TBD

Change-Id: Ife660ecb76732aef13a9d27ed911ee9e6e4d2c95
Reviewed-on: https://chromium-review.googlesource.com/383772
Commit-Ready: Wai-Hong Tam <waihong@google.com>
Tested-by: Wai-Hong Tam <waihong@google.com>
Reviewed-by: danny chan <dchan@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
97678db49943c064c51f311eae98701add4a90be 16-Mar-2016 Tom Wai-Hong Tam <waihong@chromium.org> firmware_programmer: Fix cold_reset not work on beltino devices

The cold_reset does not work on beltino devices. Use the power_state
control to reset the device after the firmware programmer is done.

BUG=None
TEST=Use firmware_programmer to reflash BIOS on beltino devices.

Change-Id: I237c8b0867db07fb8e80c4c0b69d1a92ef549837
Reviewed-on: https://chromium-review.googlesource.com/333105
Commit-Ready: Wai-Hong Tam <waihong@chromium.org>
Tested-by: Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: danny chan <dchan@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
4ac78988b048811d6268c1b77765616426642f6b 07-Jan-2016 Tom Wai-Hong Tam <waihong@chromium.org> autotest: Support the flow to update RW firmware for BIOS and EC

This change completes the flow to update RW firmware, through
CrosHost.firmware_install(), Servo.program_bios()/Servo.program_ec(),
ProgrammerV3RwOnly.program_bios(), to FlashromProgrammer.program().

BUG=chromium:555709
TEST=Ran the following script:
import common
from autotest_lib.server import hosts
h = hosts.create_host(DUT_IP, servo_args={})
h.firmware_install(RO_VERSION)
h.firmware_install(RW_VERSION, rw_only=True)

Checked the DUT installed the proper RO and RW firmware (BIOS and EC).

Change-Id: I5dfca7b3d80c6cd23b0c1e3d2605fce008bd60b2
Reviewed-on: https://chromium-review.googlesource.com/320825
Commit-Ready: Wai-Hong Tam <waihong@chromium.org>
Tested-by: Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: Dan Shi <dshi@google.com>
/external/autotest/server/cros/servo/firmware_programmer.py
73f14ed2e345240080dd157145879dc720bb1cb8 07-Jan-2016 Tom Wai-Hong Tam <waihong@chromium.org> firmware_programmer: Support an argument to keep the RO portion

Supporting this argument enables updating the RW portion only.
The RO portion is defined in the WP_RO FMap section. The HWID (GBB)
and RO_VPD are also inside WP_RO. So don't need to preserve HWID
and RO_VPD when we keep the RO portion.

BUG=chromium:555709
TEST=Check the next change to use this argument.

Change-Id: I294fbe5d785b6211348cbaaf34de72274c6a94e6
Reviewed-on: https://chromium-review.googlesource.com/320824
Commit-Ready: Wai-Hong Tam <waihong@chromium.org>
Tested-by: Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: Wai-Hong Tam <waihong@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
a8d4a106f84f6a65750b7b20d55200ab9a57041f 10-Oct-2015 Tom Wai-Hong Tam <waihong@chromium.org> firmware_programmer: Set usbpd_reset to on during running flashrom

On Samus or other devices with USB PD, should make usbpd_reset to on
during running flashrom. Otherwise, the ME comes back on and tries to
write something to SPI flash that it might get confused.

Also add a FAFT config to define this wait time after changing the
servo state for programming, in order to ensure the ME turns off
gracefully.

BUG=chromium:538125
TEST=Running the following Python script:
import common
from autotest_lib.server.hosts import servo_host
sh = servo_host.create_servo_host(SAMUS_DUT_IP, {})
sh._servo.program_bios(FIRMWARE_PATH)

Change-Id: Ia4187c1589475b5113014c85d562f35d904344fc
Reviewed-on: https://chromium-review.googlesource.com/305230
Commit-Ready: Wai-Hong Tam <waihong@chromium.org>
Tested-by: Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: danny chan <dchan@chromium.org>
Reviewed-by: Dan Shi <dshi@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
fecdaf4ead5b2dba5ead0b86eb59311023527f9d 28-Jul-2015 Dan Shi <dshi@chromium.org> [autotest] Add 10 min timeout when re-program EC/BIOS

Without the timeout, firmware provision will stuck long time before test/
special task timeout kicks in.

retry.timeout does not work with process started in code. refer to CL 288366

BUG=None
TEST=local test

Change-Id: Icefcb8841ff61a300087cb1c012f68ad96c4cb0a
Reviewed-on: https://chromium-review.googlesource.com/288974
Trybot-Ready: Dan Shi <dshi@chromium.org>
Tested-by: Dan Shi <dshi@chromium.org>
Reviewed-by: Wai-Hong Tam <waihong@chromium.org>
Commit-Queue: Dan Shi <dshi@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
7b7eeac6f64c5083d1cc2d3885138da97fa3c9df 22-Jul-2015 Tom Wai-Hong Tam <waihong@chromium.org> [autotest] Flash EC according to the chip name

The flash_ec doesn't keep all the board variants and doesn't know how
to program in some boards. Should call the flash_ec by passing the
chip name instead of the board name.

CQ-DEPEND=CL:287445,CL:287600
BUG=chromium:505003
TEST=Ran the following Python code to test:
> import common
> from autotest_lib.server.hosts import servo_host
> sh = servo_host.create_servo_host(DUT_IP_ADDRESS, {})
> sh._servo.program_ec(EC_IMAGE_PATH)

Change-Id: I82e9e2cc5c4ab6fd4d7eef0a977f665bc8b4f842
Reviewed-on: https://chromium-review.googlesource.com/287601
Trybot-Ready: Wai-Hong Tam <waihong@chromium.org>
Tested-by: Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: Dan Shi <dshi@chromium.org>
Commit-Queue: Wai-Hong Tam <waihong@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
a5fef0518cfcffeb1eb4a7abcf24ac68e1b870a8 19-May-2015 Dan Shi <dshi@chromium.org> [autotest] Add ProgrammerV3 for updating bios and ec using servo V3

Update firmware_programmer with a new class of ProgrammerV3 for updating bios
and ec using servo V3.

BUG=chromium:279410
TEST=local flash firmware, test script:
import common
from autotest_lib.server import hosts

machine = '172.27.215.232'
host = hosts.create_host(machine, initialize=True)
host.firmware_install('veyron_jerry-firmware/R41-6588.10.0')

local change in servo_host needed:
1. ServoHost._initialize, force server proxy to use localhost:
remote = 'http://%s:%s' % ('localhost', servo_port)
2. servo_host.create_servo_host, use remote servo:
return ServoHost(servo_host='172.27.215.231', is_in_lab=False,
required_by_test=True)
3. ServoHost._update_image force to skip.

Change-Id: I6ae7162f53c3f8c5e5314f1a8ac35fa89cca4dda
Reviewed-on: https://chromium-review.googlesource.com/271987
Tested-by: Dan Shi <dshi@chromium.org>
Reviewed-by: Tom Tam <waihong@google.com>
Commit-Queue: Dan Shi <dshi@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
f19ab9f015ddebadfed27bcf114dfd267a1c309d 11-Jun-2014 Ricky Liang <jcliang@chromium.org> Grok servo XML configs to find out all v2-compatible boards.

Some servo_<board>_overlay.xml configs contain indirect includes
to pull in servoflex_v2_r0_p50.xml. For example, glimmer config
pulls in rambi config which in turn pulls in v2 servoflex config.
We need to examine each included config to determine if a board
is v2-compatible.

BUG=chrome-os-partner:26795
TEST=manually use firmware_programmer module to program firmware
on my DUT.

Change-Id: I11339f4286cf15d07430cd0e8dad770bf6e7c062
Reviewed-on: https://chromium-review.googlesource.com/203382
Commit-Queue: Ricky Liang <jcliang@chromium.org>
Tested-by: Ricky Liang <jcliang@chromium.org>
Reviewed-by: Vic Yang <victoryang@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
15c2dcbdcc125d5be186ff18bd3a593c9afc2af3 02-Jun-2014 Vic Yang <victoryang@chromium.org> FAFT: split wp_voltage and spi_voltage in FAFT config

The write protect reference voltage and SPI voltage are not necessarily
the same. Make them two separate options so that we can configure them
to be different.

BUG=chrome-os-partner:29210
TEST=Grep 'vref' and check each one is using the correct config value.

Change-Id: I5cc30ea364f482a0febd66bfd99d857630bfa401
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/202381
Reviewed-by: Wai-Hong Tam <waihong@chromium.org>
Reviewed-by: David Hendricks <dhendrix@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
c7cc34053bec10baaae6c78a978284a091745260 23-May-2014 Ricky Liang <jcliang@chromium.org> Search for servo configs in system site-packages directory.

This is to make server.cros.firmware_programmer work on a CrOS host.

BUG=chrome-os-partner:29159
TEST=manually on my moblab host

Change-Id: Ib7f52160b580f36685783e23b26eb5ac2f0d3bff
Reviewed-on: https://chromium-review.googlesource.com/201476
Reviewed-by: Vic Yang <victoryang@chromium.org>
Commit-Queue: Ricky Liang <jcliang@chromium.org>
Tested-by: Ricky Liang <jcliang@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
c101a562f7b0c10b6b311e2f03e7367a423d6f5d 15-May-2014 Ricky Liang <jcliang@chromium.org> Parse out valid servo v2 boards from servod config files.

BUG=chromium:371661
TEST=manually on my DUT

Change-Id: I56bc5c747bb3ab3bf3e035e94e6658f2147a1b54
Reviewed-on: https://chromium-review.googlesource.com/200001
Commit-Queue: Ricky Liang <jcliang@chromium.org>
Tested-by: Ricky Liang <jcliang@chromium.org>
Reviewed-by: Vic Yang <victoryang@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
8c4631d02de931e6a367dd474eb7588e873113b0 06-May-2014 Yusuf Mohsinally <mohsinally@google.com> Catching exception when checking for existance of firmware programmer utilities.

Ignoring the exception that occurs when checking for the existance of some
required utilties for the fw programmer.

Currently the firmware programmer is not working or used, and the check is
blocking us from running tests in environments that do not package the required
dependent bins.

We should reinstate this exception once the programmer is working to indicate
the missing utilities earlier in the test cycle, rather than hitting the
exception when they are called.

BUG=chromium:370288,chromium:371011
TEST=Manually at desk with/without require bins, and saw the expected msg.

Change-Id: Idbfbe1a43f65e0cda22a7f7c8814f431dfa6f124
Reviewed-on: https://chromium-review.googlesource.com/198307
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-by: Yusuf Mohsinally <mohsinally@chromium.org>
Commit-Queue: Yusuf Mohsinally <mohsinally@chromium.org>
Tested-by: Yusuf Mohsinally <mohsinally@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
04be2bd5e4666a5c253e9c30ab20555e04286032 08-May-2014 Ilja H. Friedel <ihf@chromium.org> Autotest: Change logging.warn() to logging.warning().

logging.warn() is deprecated. See
http://bugs.python.org/issue13235

Substitution was performed via
~/cros/src/third_party/autotest/files$ find ./ -type f | xargs sed -i 's/logging.warn(/logging.warning(/'

BUG=None.
TEST=There should be one-- and preferably only one --obvious way to do it.

Change-Id: Ie5665743121a49f7fbd5d1f47896a7c65e87e489
Reviewed-on: https://chromium-review.googlesource.com/198793
Commit-Queue: Ilja Friedel <ihf@chromium.org>
Tested-by: Ilja Friedel <ihf@chromium.org>
Reviewed-by: Alex Miller <milleral@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
c0003476d00af8f656a2f14d1c84127ffa98b0f4 24-Apr-2014 Ricky Liang <jcliang@chromium.org> firmware_programmer: Add support for Squawks.

BUG=none
TEST=manually test with my DUT

Change-Id: Ie45b78e06c961429147ea01168d604311c90329e
Reviewed-on: https://chromium-review.googlesource.com/196763
Reviewed-by: Vic Yang <victoryang@chromium.org>
Tested-by: Ricky Liang <jcliang@chromium.org>
Commit-Queue: Ricky Liang <jcliang@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
0dd379c7808b6e1c8c503b1b51981f2a598acf81 23-Apr-2014 Ricky Liang <jcliang@chromium.org> Add servo_serial property in servo module.

Also propagate servo serial number to flashrom programmer.

BUG=none
TEST=manually tested on my DUT

Change-Id: I1106221913ffd7adeb8d1f4118699ecc18bcf4ef
Reviewed-on: https://chromium-review.googlesource.com/196419
Reviewed-by: Vic Yang <victoryang@chromium.org>
Commit-Queue: Ricky Liang <jcliang@chromium.org>
Tested-by: Ricky Liang <jcliang@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py
6c078aec7161a9c69429ccdf7d606a0c0ae1356d 21-Nov-2013 Yusuf Mohsinally <mohsinally@google.com> Refactoring and cleaning up FW programming functions.

Moved and cleaned up the programmer.py functionality to
firmware_programmer.py.

1. Now using the flash_ec script for ec programming of
supported boards. This script is maintained by the
development teams.

2. Refactored flashrom programmer to support multiple boards
with the correct vref voltages supplied.

3. FW programmer objects are instantiated in the servo client
and can be changed based on the version of servo.

4. Exposed get_board and get_version in the servo client.

5. Smaller cleanup of functions calls, etc.

BUG=chromium:317911
TEST=Manually at desk

Change-Id: I0440fa0a7694ca53c7bbc944fbd906df94e1bd25
Reviewed-on: https://chromium-review.googlesource.com/177598
Reviewed-by: Yusuf Mohsinally <mohsinally@chromium.org>
Tested-by: Vic Yang <victoryang@chromium.org>
Commit-Queue: Vic Yang <victoryang@chromium.org>
/external/autotest/server/cros/servo/firmware_programmer.py