# Copyright 2018 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 = "jwerner"
NAME = "firmware_WriteProtect"
PURPOSE = "Servo based hardware write protect test"
CRITERIA = "This test will fail if SPI hardware write-protect cannot be read correctly"
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_au_1, suite:faft_bios_au_2, suite:faft_bios_au_3, suite:faft_normal, suite:faft_lv1, suite:faft_bios_ec3po, suite:faft_bios_tot"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 4

DOC = """
This is a simple test which toggles the hardware write-protect line via Servo
and checks that the correct state is reported by both firmware and kernel.
"""

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

def run_writeprotect(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test("firmware_WriteProtect", host=host, cmdline_args=args,
                 dev_mode=False, tag="normal")

parallel_simple(run_writeprotect, machines)
