56 lines
2.6 KiB
Python
56 lines
2.6 KiB
Python
# 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.
|
|
|
|
import logging
|
|
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.server.cros.faft.firmware_test import FirmwareTest
|
|
|
|
BIOS_PATH = '/tmp/test.firmware_Bmpblk.bios.bin'
|
|
PRINT_CBFS_CMD = 'cbfstool %s print' % BIOS_PATH
|
|
LAYOUT_CBFS_CMD = 'cbfstool %s layout' % BIOS_PATH
|
|
|
|
|
|
class firmware_Bmpblk(FirmwareTest):
|
|
"""
|
|
This test checks whether the BIOS was built with a correctly configured
|
|
bmpblk to ensure crisp firmware screen images and text. The bmpblk for every
|
|
device needs to be explicitly configured for the device's screen resolution
|
|
to ensure optimal quality. Relies on flashrom and cbfstool to inspect BIOS.
|
|
"""
|
|
version = 1
|
|
|
|
def run_once(self):
|
|
"""Runs a single iteration of the test."""
|
|
self.faft_client.bios.dump_whole(BIOS_PATH)
|
|
layout = self.faft_client.system.run_shell_command_get_output(
|
|
LAYOUT_CBFS_CMD)
|
|
layout = '\n'.join(layout)
|
|
logging.debug('cbfstool layout output:\n\n%s', layout)
|
|
print_cbfs_cmd_options=''
|
|
if 'BOOT_STUB' in layout:
|
|
print_cbfs_cmd_options=' -r BOOT_STUB'
|
|
try:
|
|
files = self.faft_client.system.run_shell_command_get_output(
|
|
PRINT_CBFS_CMD + print_cbfs_cmd_options)
|
|
files = '\n'.join(files)
|
|
logging.debug('cbfstool print output:\n\n%s', files)
|
|
if 'romstage' not in files:
|
|
raise error.TestError("Sanity check failed: Can't read CBFS")
|
|
if 'vbgfx.bin' not in files:
|
|
raise error.TestNAError('This board has no firmware screens')
|
|
if 'vbgfx_not_scaled' in files:
|
|
logging.error("This firmware's bmpblk was built for a generic "
|
|
"1366x768 display resolution. Images will get "
|
|
"scaled up at runtime and look blurry. You need "
|
|
"to explicitly set the panel resolution for this "
|
|
"board in bmpblk/images/boards.yaml and add it "
|
|
"to CROS_BOARDS in the sys-boot/chromeos-bmpblk"
|
|
".ebuild. Do *not* do this until you are certain "
|
|
"of the panel resolution that the final product "
|
|
"will ship with!")
|
|
raise error.TestFail('bmpblk images not scaled for this board')
|
|
finally:
|
|
self.faft_client.system.remove_file(BIOS_PATH)
|