blob: 8be4be8020bcefae1b13542646a00fafc355506b [file] [log] [blame]
// Configurable software attributes for ChromeOS builds.
//
// See
// https://chromium.git.corp.google.com/chromiumos/platform2/+/refs/heads/master/chromeos-config/README.md
// for documentation on Unified Builds and ChromeOS Config.
syntax = "proto3";
package build_config;
option go_package = "go.chromium.org/chromiumos/infra/proto/build_config";
// A single ChromeOS Config payload.
//
// The generated ChromeOS Config JSON uses "-", which is not valid in a proto
// field name. Use json_name, so the JSON can be parsed directly into / out of
// this proto.
message ChromeOSConfig {
message Arc {
message BuildProperties {
// Device name to report in ‘ro.product.device’. This is often
// ‘{product}_cheets’ but it can be something else if desired.
string device = 1;
// The first Android API level that this model shipped with.
string first_api_level = 2 [json_name = "first-api-level"];
// Name of this model as it is called in the market, reported in
// ‘ro.product.model’. This often starts with ‘{oem}’.
string marketing_name = 3 [json_name = "marketing-name"];
// Tag to use to track metrics for this model. The tag can be shared
// across many devices if desired, but this will result in larger
// granularity for metrics reporting. Ideally the metrics system should
// support collation of metrics with different tags into groups, but if
// this is not supported, this tag can be used to achieve the same end.
// This is reported in ‘ro.product.metrics.tag’.
string metrics_tag = 4 [json_name = "metrics-tag"];
// Original Equipment Manufacturer for this model. This generally means
// the OEM name printed on the device.
string oem = 5;
string pai_regions = 6 [json_name = "pai-regions"];
// Product name to report in ‘ro.product.name’. This may be the device
// name, or it can be something else, to allow several devices to be
// grouped into one product.
string product = 7;
}
BuildProperties build_properties = 1 [json_name = "build-properties"];
}
message Firmware {
message BuildTargets {
// Build target of the base EC firmware for a detachable device, that will
// be considered dirty when building/testing
string base = 1;
// Build target that will be considered dirty when building/testing
// locally.
string coreboot = 2;
// Build target that will be considered dirty when building/testing
// locally.
string cr50 = 3;
// Build target that will be considered dirty when building/testing
// locally.
string depthcharge = 4;
// Build target that will be considered dirty when building/testing
// locally.
string ec = 5;
// Extra EC build targets to build within chromeos-ec.
repeated string ec_extras = 6;
// Build target that will be considered dirty when building/testing
// locally.
string ish = 7;
// Build target that will be considered dirty when building/testing
// locally.
string libpayload = 8;
// Build target that will be considered dirty when building/testing
// locally.
string u_boot = 9 [json_name = "u-boot"];
}
// BCS overlay path used to determine BCS file path for binary firmware
// downloads.
string bcs_overlay = 1 [json_name = "bcs-overlay"];
// The name of the firmware build. Typically the device name, but can differ
// when a device may have two or more different firmware builds.
string build_name = 2 [json_name = "build-name"];
BuildTargets build_targets = 3 [json_name = "build-targets"];
// Name of the file located in BCS under the respective bcs-overlay.
string ec_ro_image = 4 [json_name = "ec-ro-image"];
// Name of the file located in BCS under the respective bcs-overlay.
string main_ro_image = 5 [json_name = "main-ro-image"];
// Name of the file located in BCS under the respective bcs-overlay.
string main_rw_image = 6 [json_name = "main-rw-image"];
// This is a human-recognizable name used to refer to the firmware. It will
// be used when generating the shellball via firmware packer. Mainly, this
// is only for compatibility testing with device tree (since DT allowed
// firmwares to be named).
string name = 7;
// If present this indicates that this model has no firmware at present.
// This means that it will be omitted from the firmware updater
// (chromeos-firmware- ebuild) and it will not be included in the signer
// instructions file sent to the signer. This option is often useful when a
// model is first added, since it may not have firmware at that point.
bool no_firmware = 8 [json_name = "no-firmware"];
// Name of the file located in BCS under the respective bcs-overlay.
string pd_ro_image = 9 [json_name = "pd-ro-image"];
}
message FirmwareSigning {
// Key ID from the signer key set that is used to sign the given firmware
// image.
string key_id = 1 [json_name = "key-id"];
// Indicates that this model cannot be decoded by the mapping table.
// Instead the model is stored in the VPD (Vital Product Data) region in
// the customization_id property. This allows us to determine the model to
// use in the factory during the finalization stage. Note that if the VPD
// is wiped then the model will be lost. This may mean that the device
// will revert back to a generic model, or may not work. It is not
// possible in general to test whether the model in the VPD is correct at
// run-time. We simply assume that it is. The advantage of using this
// property is that no hardware changes are needed to change one model
// into another. For example we can create 20 different whitelabel boards,
// all with the same hardware, just by changing the customization_id that
// is written into SPI flash.
bool sig_id_in_customization_id = 2
[json_name = "sig-id-in-customization-id"];
// ID used to generate keys/keyblocks in the firmware signing output. This
// is also the value provided to mosys platform signature for the
// updater4.sh script.
string signature_id = 3 [json_name = "signature-id"];
}
// Defines attributes that are used by cros_config to detect the identity of
// the platform and which corresponding config should be used.
message Identity {
// ‘customization_id’ value set in the VPD for non-unibuild Zergs and
// Whitelabels. Deprecated for use in new products since 2017/07/26.
string customization_id = 1 [json_name = "customization-id"];
// Defines the name that is reported by ‘mosys platform name’ This is
// typically the reference design name with the first letter capitalized.
string platform_name = 2 [json_name = "platform-name"];
// SKU/Board strapping pins configured during board manufacturing. Minimum
// value: -0x1. Maximum value: 0x7fffffff.
int64 sku_id = 3 [json_name = "sku-id"];
// [x86] Firmware name built into the firmware and reflected back out in the
// SMBIOS tables.
string smbios_name_match = 4 [json_name = "smbios-name-match"];
// [ARM] String pattern (partial) that is matched against the contents of
// /proc/device-tree/compatible on ARM devices.
string device_tree_compatible_match = 5
[json_name = "device-tree-compatible-match"];
// ‘whitelabel_tag’ value set in the VPD, to add Whitelabel branding over an
// unbranded base model.
string whitelabel_tag = 6 [json_name = "whitelabel-tag"];
}
Identity identity = 1;
Arc arc = 2;
Firmware firmware = 3;
FirmwareSigning firmware_signing = 4 [json_name = "firmware-signing"];
// Unique name for the given model.
string name = 5;
// Brand code of the model (also called RLZ code).
string brand_code = 6 [json_name = "brand-code"];
}
// All ChromeOS Config payloads for a given build.
message ChromeOSConfigs {
repeated ChromeOSConfig configs = 1;
}