blob: 2d19ab77556016e16cf87f944dcb093253f88c42 [file] [log] [blame]
// 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.
syntax = "proto3";
package chromiumos.config.api;
import "config/api/component_id.proto";
import "config/api/partner_id.proto";
option go_package = "go.chromium.org/chromiumos/config/go/api";
message Component {
// Globally unique component identifier.
ComponentId id = 1;
oneof type {
Soc soc = 2;
Memory memory = 3;
Bluetooth bluetooth = 4;
Camera camera = 5;
Touchscreen touchscreen = 6;
}
message Soc {
enum Architecture {
ARCHITECTURE_UNDEFINED = 0;
X86 = 1;
X86_64 = 2;
ARM = 3;
ARM64 = 4;
}
message Family {
Architecture arch = 1;
// Common name (human friendly) for the family
string name = 2;
}
Family family = 1;
// Unique model name returned from cpu_id instruction
string model = 2;
// Number of cores present on the SoC model
int32 cores = 3;
}
message Memory {
enum Type {
TYPE_UNDEFINED = 0;
DDR = 1;
DDR2 = 2;
DDR3 = 3;
DDR4 = 4;
LP_DDR3 = 5;
LP_DDR4 = 6;
}
Type type = 1;
int32 speed_mhz = 2;
int32 size_mb = 3;
string part_number = 4;
PartnerId manufacturer_id = 5;
}
message Bluetooth {
// 4-digit hex
string vendor_id = 1;
// 4-digit hex
string product_id = 2;
// 4-digit hex
string bcd_device = 3;
}
message Camera {
enum Feature {
FEATURE_UNKNOWN = 0;
ACTIVITY_LED = 1;
}
enum ClockType {
CLOCK_TYPE_UNDEFINED = 0;
MONOTONIC = 1;
BOOTTIME = 2;
}
repeated Feature features = 1;
ClockType clock_type = 2;
}
message Touchscreen {
// 4-digit hex
string vendor_id = 1;
// 4-digit hex
string product_id = 2;
// 4-digit hex
string fw_version = 3;
// Relative path to the touch firmware binary
// that will be installed when a given
// component vendor/product is detected.
string fw_path = 4;
}
}
message ComponentList {
repeated Component value = 1;
}