# Copyright 2020 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 = "philipchen"
NAME = "firmware_WriteProtectFunc"
PURPOSE = "Servo based SPI flash write protect functional test"
CRITERIA = "This test will fail if SPI flash write-protection does not work correctly"
ATTRIBUTES = "suite:faft_bios, suite:faft_bios_ro_qual, suite:faft_bios_rw_qual, suite:faft_normal, suite:faft_lv2, suite:faft_bios_ec3po, suite:faft_bios_tot"
DEPENDENCIES = "servo_state:WORKING"
TIME = "SHORT"
TEST_CATEGORY = "Functional"
TEST_CLASS = "firmware"
TEST_TYPE = "server"
JOB_RETRIES = 0

DOC = """
This test verifies the function of SPI flash write-protection.
After we enable hardware write-protection and then software write-protection,
SPI flash RO section is protected and can't be overwritten. After we disable
hardware write-protection and then software write-protection, SPI flash RO
section is not protected and can be overwritten.
"""

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

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

parallel_simple(run_writeprotectfunc, machines)
