# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

from autotest_lib.server import utils

AUTHOR = "Chrome OS Team"
NAME = "firmware_ECWriteProtect.dev"
PURPOSE = "Servo based EC write protect test"
CRITERIA = "This test will fail if EC write protect misbehaved"
ATTRIBUTES = "suite:faft, suite:faft_ec, suite:faft_ec_au_1, suite:faft_ec_au_2, suite:faft_ec_au_3, suite:faft_ec3po, suite:faft_ec_tot"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 4

DOC = """
This test starts with RO normal mode and enables EC write protect. Software sync
supposed to write protect the entire EC flash, so we expect the following
write protect flags:
  - wp_gpio_asserted
  - ro_at_boot
  - ro_now
  - all_now
These flags are checked under following situations:
  - Cold reset. RO normal.
  - Cold reset. Two stop.
  - Cold reset by ectool. Two stop.
At the end of the test, write protect is deactivated and firmware is restored to
RO normal mode.
"""

args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run_ecwriteprotect(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_ECWriteProtect", host=host, cmdline_args=args,
                 disable_sysinfo=True, dev_mode=True, tag="dev")

parallel_simple(run_ecwriteprotect, machines)
