blob: 0f4dda6352fd7849c4944d357ac916cc1cab58f2 [file] [log] [blame] [edit]
# Copyright 2018 The ChromiumOS Authors
# Distributed under the terms of the GNU General Public License v2
#
# @ECLASS: cbi-image.eclass
# @MAINTAINER:
# Chromium OS Firmware Team
# @BUGREPORTS:
# Please report bugs via http://crbug.com/new (with label Build)
# @VCSURL: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/HEAD/eclass/@ECLASS@
# @BLURB: helper eclass for building Cros Board Info (CBI) images
# @DESCRIPTION:
# CBI is the Chrome OS standard data format for storing board version, OEM,
# SKU, etc. This library provides helper functions for each board to create
# custom CBI images.
# Check for EAPI 5+
case "${EAPI:-0}" in
5|6) ;;
*) die "unsupported EAPI (${EAPI}) in eclass (${ECLASS})" ;;
esac
# @ECLASS-VARIABLE: CROS_CBI_IMAGE_DIR
# @DESCRIPTION: The directory where output images are stored.
CROS_CBI_IMAGE_DIR="/firmware/cbi"
# @ECLASS-VARIABLE: EEPROM_SIZE
# @DESCRIPTION: The size of the output image files in bytes.
EEPROM_SIZE=256
# @FUNCTION: make_cbi
# @USAGE: <Prefix for output files> <oem id> <sku id>
# @DESCRIPTION: Build one CBI image
make_cbi() {
[[ $# -ne 3 ]] && die "Usage: ${FUNCNAME} <prefix> <oem id> <sku id>"
local prefix="$1"
local oemid="$2"
local skuid="$3"
cbi-util create --file "${prefix}_${skuid%%:*}.bin" \
--size "${EEPROM_SIZE}" --board_version "${BOARD_VERSION}" \
--oem_id "${oemid}" --sku_id "${skuid}" \
|| die "Failed to create CBI image"
}
# @FUNCTION: make_all_cbi
# @USAGE: <oem name> <oem id>
# @DESCRIPTION:
# Build CBI images for all SKU IDs listed in SKU_IDS_<oem name> array, which
# is supposed to be provided by the caller.
make_all_cbi() {
[[ $# -ne 2 ]] && die "Usage: ${FUNCNAME} <oem name> <oem id>"
local oem_name="$1"
local skuids="SKU_IDS_${oem_name}[@]"
local oemid="$2"
local i
for i in "${!skuids}"; do
make_cbi "cbi_${oem_name}" "${oemid}" "${i}"
done
}
# @FUNCTION: cbi-image_install
# @USAGE:
# @DESCRIPTION: Install the CBI image files to $CROS_CBI_IMAGE_DIR
cbi-image_install() {
[[ $# -ne 0 ]] && die "Usage: ${FUNCNAME}"
insinto "${CROS_CBI_IMAGE_DIR}"
doins cbi_*.bin
}