1 # Copyright (c) 2012 The Chromium OS Authors. All rights reserved. 2 # Use of this source code is governed by a BSD-style license that can be 3 # found in the LICENSE file. 4 5 from autotest_lib.server import utils 6 7 AUTHOR = "Chrome OS Team" 8 NAME = "firmware_ECWriteProtect" 9 PURPOSE = "Servo based EC write protect test" 10 CRITERIA = "This test will fail if EC write protect misbehaved" 11 ATTRIBUTES = "suite:faft, suite:faft_ec, suite:faft_ec_ryu, suite:faft_ec3po" 12 SUITE = "faft,faft_ec,faft_ec_ryu,faft_ec3po" 13 TIME = "SHORT" 14 TEST_CATEGORY = "Functional" 15 TEST_CLASS = "firmware" 16 TEST_TYPE = "server" 17 JOB_RETRIES = 4 18 19 DOC = """ 20 This test starts with RO normal mode and enables EC write protect. Software sync 21 supposed to write protect the entire EC flash, so we expect the following 22 write protect flags: 23 - wp_gpio_asserted 24 - ro_at_boot 25 - ro_now 26 - all_now 27 These flags are checked under following situations: 28 - Cold reset. RO normal. 29 - Cold reset. Two stop. 30 - Cold reset by ectool. Two stop. 31 At the end of the test, write protect is deactivated and firmware is restored to 32 RO normal mode. 33 """ 34 35 args_dict = utils.args_to_dict(args) 36 servo_args = hosts.CrosHost.get_servo_arguments(args_dict) 37 38 def run_ecwriteprotect(machine): 39 host = hosts.create_host(machine, servo_args=servo_args) 40 job.run_test("firmware_ECWriteProtect", host=host, cmdline_args=args, 41 disable_sysinfo=True, dev_mode=False, tag="normal") 42 43 parallel_simple(run_ecwriteprotect, machines) 44