ec/google/chromeec: Update ec_cmd_api.h and ec_commands.h
Generated using update_ec_headers.sh [EC-DIR]. The original include/ec_commands.h version in the EC repo is: ab9b64ac4c Add a host command to print info about AP-firmware state The original include/ec_cmd_api.h version in the EC repo is: ab9b64ac4c Add a host command to print info about AP-firmware state BUG=b:300525571 BRANCH=none TEST=none Change-Id: I3570e073a91621cb1d28a24aa35c1f4beedceaab Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/79066 Reviewed-by: Caveh Jalali <caveh@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
42be899b65
commit
d3870a2761
|
@ -45,6 +45,12 @@ extern "C" {
|
|||
* Please keep this list sorted by function name.
|
||||
*/
|
||||
|
||||
static inline int ec_cmd_battery_config(CROS_EC_COMMAND_INFO *h, uint8_t *r)
|
||||
{
|
||||
return CROS_EC_COMMAND(h, EC_CMD_BATTERY_CONFIG, 0, NULL, 0, r,
|
||||
BATT_CONF_MAX_SIZE);
|
||||
}
|
||||
|
||||
static inline int ec_cmd_get_sku_id(CROS_EC_COMMAND_INFO *h,
|
||||
struct ec_sku_id_info *r)
|
||||
{
|
||||
|
@ -232,6 +238,7 @@ ec_cmd_usb_pd_set_amode(CROS_EC_COMMAND_INFO *h,
|
|||
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_ADC_READ, adc_read);
|
||||
_CROS_EC_CV_F_P(EC_CMD_ADD_ENTROPY, 0, add_entropy, rollback_add_entropy);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_AP_FW_STATE, ap_fw_state);
|
||||
_CROS_EC_C0_F(EC_CMD_AP_RESET, ap_reset);
|
||||
_CROS_EC_CV_F_P(EC_CMD_BATTERY_CUT_OFF, 1, battery_cut_off_v1, battery_cutoff);
|
||||
_CROS_EC_C0_F(EC_CMD_BATTERY_CUT_OFF, battery_cut_off);
|
||||
|
@ -247,6 +254,9 @@ _CROS_EC_C0_F_PF_RF(EC_CMD_BATTERY_VENDOR_PARAM, battery_vendor_param);
|
|||
_CROS_EC_C0_F_PF(EC_CMD_BUTTON, button);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_CEC_GET, cec_get);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_CEC_SET, cec_set);
|
||||
_CROS_EC_C1_F_PF(EC_CMD_CEC_WRITE_MSG, cec_write);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_CEC_READ_MSG, cec_read);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_CEC_PORT_COUNT, cec_port_count);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_CHARGESPLASH, chargesplash);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_CHARGE_CONTROL, 2, charge_control_v2, charge_control,
|
||||
charge_control);
|
||||
|
|
|
@ -693,6 +693,49 @@ enum ec_status {
|
|||
EC_RES_MAX = UINT16_MAX, /**< Force enum to be 16 bits */
|
||||
} __packed;
|
||||
BUILD_ASSERT(sizeof(enum ec_status) == sizeof(uint16_t));
|
||||
#ifdef CONFIG_EC_HOST_CMD
|
||||
/*
|
||||
* Make sure Zephyre uses the same status codes.
|
||||
*/
|
||||
#include <zephyr/mgmt/ec_host_cmd/ec_host_cmd.h>
|
||||
|
||||
BUILD_ASSERT((uint16_t)EC_RES_SUCCESS == (uint16_t)EC_HOST_CMD_SUCCESS);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_INVALID_COMMAND ==
|
||||
(uint16_t)EC_HOST_CMD_INVALID_COMMAND);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_ERROR == (uint16_t)EC_HOST_CMD_ERROR);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_INVALID_PARAM ==
|
||||
(uint16_t)EC_HOST_CMD_INVALID_PARAM);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_ACCESS_DENIED ==
|
||||
(uint16_t)EC_HOST_CMD_ACCESS_DENIED);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_INVALID_RESPONSE ==
|
||||
(uint16_t)EC_HOST_CMD_INVALID_RESPONSE);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_INVALID_VERSION ==
|
||||
(uint16_t)EC_HOST_CMD_INVALID_VERSION);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_INVALID_CHECKSUM ==
|
||||
(uint16_t)EC_HOST_CMD_INVALID_CHECKSUM);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_IN_PROGRESS == (uint16_t)EC_HOST_CMD_IN_PROGRESS);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_UNAVAILABLE == (uint16_t)EC_HOST_CMD_UNAVAILABLE);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_TIMEOUT == (uint16_t)EC_HOST_CMD_TIMEOUT);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_OVERFLOW == (uint16_t)EC_HOST_CMD_OVERFLOW);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_INVALID_HEADER ==
|
||||
(uint16_t)EC_HOST_CMD_INVALID_HEADER);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_REQUEST_TRUNCATED ==
|
||||
(uint16_t)EC_HOST_CMD_REQUEST_TRUNCATED);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_RESPONSE_TOO_BIG ==
|
||||
(uint16_t)EC_HOST_CMD_RESPONSE_TOO_BIG);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_BUS_ERROR == (uint16_t)EC_HOST_CMD_BUS_ERROR);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_BUSY == (uint16_t)EC_HOST_CMD_BUSY);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_INVALID_HEADER_VERSION ==
|
||||
(uint16_t)EC_HOST_CMD_INVALID_HEADER_VERSION);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_INVALID_HEADER_CRC ==
|
||||
(uint16_t)EC_HOST_CMD_INVALID_HEADER_CRC);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_INVALID_DATA_CRC ==
|
||||
(uint16_t)EC_HOST_CMD_INVALID_DATA_CRC);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_DUP_UNAVAILABLE ==
|
||||
(uint16_t)EC_HOST_CMD_DUP_UNAVAILABLE);
|
||||
BUILD_ASSERT((uint16_t)EC_RES_MAX == (uint16_t)EC_HOST_CMD_MAX);
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Host event codes. ACPI query EC command uses code 0 to mean "no event
|
||||
|
@ -1591,6 +1634,30 @@ enum ec_feature_code {
|
|||
* The EC supports the AP composing VDMs for us to send.
|
||||
*/
|
||||
EC_FEATURE_TYPEC_AP_VDM_SEND = 46,
|
||||
/*
|
||||
* The EC supports system safe mode panic recovery.
|
||||
*/
|
||||
EC_FEATURE_SYSTEM_SAFE_MODE = 47,
|
||||
/*
|
||||
* The EC will reboot on runtime assertion failures.
|
||||
*/
|
||||
EC_FEATURE_ASSERT_REBOOTS = 48,
|
||||
/*
|
||||
* The EC image is built with tokenized logging enabled.
|
||||
*/
|
||||
EC_FEATURE_TOKENIZED_LOGGING = 49,
|
||||
/*
|
||||
* The EC supports triggering an STB dump.
|
||||
*/
|
||||
EC_FEATURE_AMD_STB_DUMP = 50,
|
||||
/*
|
||||
* The EC supports memory dump commands.
|
||||
*/
|
||||
EC_FEATURE_MEMORY_DUMP = 51,
|
||||
/*
|
||||
* The EC supports DP2.1 capability
|
||||
*/
|
||||
EC_FEATURE_TYPEC_DP2_1 = 52,
|
||||
};
|
||||
|
||||
#define EC_FEATURE_MASK_0(event_code) BIT(event_code % 32)
|
||||
|
@ -1880,6 +1947,19 @@ struct ec_params_flash_protect {
|
|||
uint32_t flags;
|
||||
} __ec_align4;
|
||||
|
||||
enum flash_protect_action {
|
||||
FLASH_PROTECT_ASYNC = 0,
|
||||
FLASH_PROTECT_GET_RESULT = 1,
|
||||
};
|
||||
|
||||
/* Version 2 of the command is "asynchronous". */
|
||||
struct ec_params_flash_protect_v2 {
|
||||
uint8_t action; /**< enum flash_protect_action */
|
||||
uint8_t reserved[3]; /**< padding for alignment */
|
||||
uint32_t mask;
|
||||
uint32_t flags;
|
||||
} __ec_align4;
|
||||
|
||||
/**
|
||||
* struct ec_response_flash_protect - Response to the flash protect command.
|
||||
* @flags: Current value of flash protect flags.
|
||||
|
@ -4377,7 +4457,7 @@ struct ec_params_i2c_write {
|
|||
* discharge the battery.
|
||||
*/
|
||||
#define EC_CMD_CHARGE_CONTROL 0x0096
|
||||
#define EC_VER_CHARGE_CONTROL 2
|
||||
#define EC_VER_CHARGE_CONTROL 3
|
||||
|
||||
enum ec_charge_control_mode {
|
||||
CHARGE_CONTROL_NORMAL = 0,
|
||||
|
@ -4399,12 +4479,16 @@ enum ec_charge_control_cmd {
|
|||
EC_CHARGE_CONTROL_CMD_GET,
|
||||
};
|
||||
|
||||
enum ec_charge_control_flag {
|
||||
EC_CHARGE_CONTROL_FLAG_NO_IDLE = BIT(0),
|
||||
};
|
||||
|
||||
struct ec_params_charge_control {
|
||||
uint32_t mode; /* enum charge_control_mode */
|
||||
|
||||
/* Below are the fields added in V2. */
|
||||
uint8_t cmd; /* enum ec_charge_control_cmd. */
|
||||
uint8_t reserved;
|
||||
uint8_t flags; /* enum ec_charge_control_flag (v3+) */
|
||||
/*
|
||||
* Lower and upper thresholds for battery sustainer. This struct isn't
|
||||
* named to avoid tainting foreign projects' name spaces.
|
||||
|
@ -4426,7 +4510,8 @@ struct ec_response_charge_control {
|
|||
int8_t lower;
|
||||
int8_t upper;
|
||||
} sustain_soc;
|
||||
uint16_t reserved;
|
||||
uint8_t flags; /* enum ec_charge_control_flag (v3+) */
|
||||
uint8_t reserved;
|
||||
} __ec_align4;
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -5098,8 +5183,20 @@ struct ec_response_i2c_passthru_protect {
|
|||
* These commands are for sending and receiving message via HDMI CEC
|
||||
*/
|
||||
|
||||
#define EC_CEC_MAX_PORTS 16
|
||||
|
||||
#define MAX_CEC_MSG_LEN 16
|
||||
|
||||
/*
|
||||
* Helper macros for packing/unpacking cec_events.
|
||||
* bits[27:0] : bitmask of events from enum mkbp_cec_event
|
||||
* bits[31:28]: port number
|
||||
*/
|
||||
#define EC_MKBP_EVENT_CEC_PACK(events, port) \
|
||||
(((events)&GENMASK(27, 0)) | (((port)&0xf) << 28))
|
||||
#define EC_MKBP_EVENT_CEC_GET_EVENTS(event) ((event)&GENMASK(27, 0))
|
||||
#define EC_MKBP_EVENT_CEC_GET_PORT(event) (((event) >> 28) & 0xf)
|
||||
|
||||
/* CEC message from the AP to be written on the CEC bus */
|
||||
#define EC_CMD_CEC_WRITE_MSG 0x00B8
|
||||
|
||||
|
@ -5111,19 +5208,54 @@ struct ec_params_cec_write {
|
|||
uint8_t msg[MAX_CEC_MSG_LEN];
|
||||
} __ec_align1;
|
||||
|
||||
/**
|
||||
* struct ec_params_cec_write_v1 - Message to write to the CEC bus
|
||||
* @port: CEC port to write the message on
|
||||
* @msg_len: length of msg in bytes
|
||||
* @msg: message content to write to the CEC bus
|
||||
*/
|
||||
struct ec_params_cec_write_v1 {
|
||||
uint8_t port;
|
||||
uint8_t msg_len;
|
||||
uint8_t msg[MAX_CEC_MSG_LEN];
|
||||
} __ec_align1;
|
||||
|
||||
/* CEC message read from a CEC bus reported back to the AP */
|
||||
#define EC_CMD_CEC_READ_MSG 0x00B9
|
||||
|
||||
/**
|
||||
* struct ec_params_cec_read - Read a message from the CEC bus
|
||||
* @port: CEC port to read a message on
|
||||
*/
|
||||
struct ec_params_cec_read {
|
||||
uint8_t port;
|
||||
} __ec_align1;
|
||||
|
||||
/**
|
||||
* struct ec_response_cec_read - Message read from the CEC bus
|
||||
* @msg_len: length of msg in bytes
|
||||
* @msg: message content read from the CEC bus
|
||||
*/
|
||||
struct ec_response_cec_read {
|
||||
uint8_t msg_len;
|
||||
uint8_t msg[MAX_CEC_MSG_LEN];
|
||||
} __ec_align1;
|
||||
|
||||
/* Set various CEC parameters */
|
||||
#define EC_CMD_CEC_SET 0x00BA
|
||||
|
||||
/**
|
||||
* struct ec_params_cec_set - CEC parameters set
|
||||
* @cmd: parameter type, can be CEC_CMD_ENABLE or CEC_CMD_LOGICAL_ADDRESS
|
||||
* @port: CEC port to set the parameter on
|
||||
* @val: in case cmd is CEC_CMD_ENABLE, this field can be 0 to disable CEC
|
||||
* or 1 to enable CEC functionality, in case cmd is
|
||||
* CEC_CMD_LOGICAL_ADDRESS, this field encodes the requested logical
|
||||
* address between 0 and 15 or 0xff to unregister
|
||||
*/
|
||||
struct ec_params_cec_set {
|
||||
uint8_t cmd; /* enum cec_command */
|
||||
uint8_t cmd : 4; /* enum cec_command */
|
||||
uint8_t port : 4;
|
||||
uint8_t val;
|
||||
} __ec_align1;
|
||||
|
||||
|
@ -5133,9 +5265,11 @@ struct ec_params_cec_set {
|
|||
/**
|
||||
* struct ec_params_cec_get - CEC parameters get
|
||||
* @cmd: parameter type, can be CEC_CMD_ENABLE or CEC_CMD_LOGICAL_ADDRESS
|
||||
* @port: CEC port to get the parameter on
|
||||
*/
|
||||
struct ec_params_cec_get {
|
||||
uint8_t cmd; /* enum cec_command */
|
||||
uint8_t cmd : 4; /* enum cec_command */
|
||||
uint8_t port : 4;
|
||||
} __ec_align1;
|
||||
|
||||
/**
|
||||
|
@ -5149,6 +5283,17 @@ struct ec_response_cec_get {
|
|||
uint8_t val;
|
||||
} __ec_align1;
|
||||
|
||||
/* Get the number of CEC ports */
|
||||
#define EC_CMD_CEC_PORT_COUNT 0x00C1
|
||||
|
||||
/**
|
||||
* struct ec_response_cec_port_count - CEC port count response
|
||||
* @port_count: number of CEC ports
|
||||
*/
|
||||
struct ec_response_cec_port_count {
|
||||
uint8_t port_count;
|
||||
} __ec_align1;
|
||||
|
||||
/* CEC parameters command */
|
||||
enum cec_command {
|
||||
/* CEC reading, writing and events enable */
|
||||
|
@ -5163,6 +5308,8 @@ enum mkbp_cec_event {
|
|||
EC_MKBP_CEC_SEND_OK = BIT(0),
|
||||
/* Outgoing message was not acknowledged */
|
||||
EC_MKBP_CEC_SEND_FAILED = BIT(1),
|
||||
/* Incoming message can be read out by AP */
|
||||
EC_MKBP_CEC_HAVE_DATA = BIT(2),
|
||||
};
|
||||
|
||||
/*****************************************************************************/
|
||||
|
@ -5474,6 +5621,11 @@ struct ec_params_reboot_ec {
|
|||
*/
|
||||
#define EC_CMD_GET_PANIC_INFO 0x00D3
|
||||
|
||||
struct ec_params_get_panic_info_v1 {
|
||||
/* Do not modify PANIC_DATA_FLAG_OLD_HOSTCMD when reading panic info */
|
||||
uint8_t preserve_old_hostcmd_flag;
|
||||
} __ec_align1;
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* Special commands
|
||||
|
@ -5877,6 +6029,10 @@ struct ec_params_usb_pd_discovery_entry {
|
|||
|
||||
/* Negative port parameters have special meaning */
|
||||
enum usb_pd_override_ports {
|
||||
/*
|
||||
* DONT_CHARGE is for all ports. Thus it's persistent across plug-in
|
||||
* or plug-out.
|
||||
*/
|
||||
OVERRIDE_DONT_CHARGE = -2,
|
||||
OVERRIDE_OFF = -1,
|
||||
/* [0, CONFIG_USB_PD_PORT_MAX_COUNT): Port# */
|
||||
|
@ -6149,9 +6305,29 @@ enum cbi_data_tag {
|
|||
CBI_TAG_SSFC = 8, /* uint32_t bit field */
|
||||
CBI_TAG_REWORK_ID = 9, /* uint64_t or smaller */
|
||||
CBI_TAG_FACTORY_CALIBRATION_DATA = 10, /* uint32_t bit field */
|
||||
|
||||
/*
|
||||
* A uint32_t field reserved for controlling common features at runtime.
|
||||
* It shouldn't be used at board-level. See union ec_common_control for
|
||||
* the bit definitions.
|
||||
*/
|
||||
CBI_TAG_COMMON_CONTROL = 11,
|
||||
|
||||
/* struct board_batt_params */
|
||||
CBI_TAG_BATTERY_CONFIG = 12,
|
||||
/* CBI_TAG_BATTERY_CONFIG_1 ~ 15 will use 13 ~ 27. */
|
||||
|
||||
/* Last entry */
|
||||
CBI_TAG_COUNT,
|
||||
};
|
||||
|
||||
union ec_common_control {
|
||||
struct {
|
||||
uint32_t bcic_enabled : 1;
|
||||
};
|
||||
uint32_t raw_value;
|
||||
};
|
||||
|
||||
/*
|
||||
* Flags to control read operation
|
||||
*
|
||||
|
@ -7460,6 +7636,166 @@ struct ec_response_typec_vdm_response {
|
|||
uint32_t vdm_attention[2];
|
||||
} __ec_align1;
|
||||
|
||||
/*
|
||||
* Get an active battery config from the EC.
|
||||
*/
|
||||
#define EC_CMD_BATTERY_CONFIG 0x013D
|
||||
|
||||
/* Version of struct batt_conf_header and its internals. */
|
||||
#define EC_BATTERY_CONFIG_STRUCT_VERSION 0x00
|
||||
|
||||
/* Number of writes needed to invoke battery cutoff command */
|
||||
#define SHIP_MODE_WRITES 2
|
||||
|
||||
struct ship_mode_info {
|
||||
uint8_t reg_addr;
|
||||
uint8_t reserved;
|
||||
uint16_t reg_data[SHIP_MODE_WRITES];
|
||||
} __packed __aligned(2);
|
||||
|
||||
struct sleep_mode_info {
|
||||
uint8_t reg_addr;
|
||||
uint8_t reserved;
|
||||
uint16_t reg_data;
|
||||
} __packed __aligned(2);
|
||||
|
||||
struct fet_info {
|
||||
uint8_t reg_addr;
|
||||
uint8_t reserved;
|
||||
uint16_t reg_mask;
|
||||
uint16_t disconnect_val;
|
||||
uint16_t cfet_mask; /* CHG FET status mask */
|
||||
uint16_t cfet_off_val;
|
||||
} __packed __aligned(2);
|
||||
|
||||
enum fuel_gauge_flags {
|
||||
/*
|
||||
* Write Block Support. If enabled, we use a i2c write block command
|
||||
* instead of a 16-bit write. The effective difference is the i2c
|
||||
* transaction will prefix the length (2).
|
||||
*/
|
||||
FUEL_GAUGE_FLAG_WRITE_BLOCK = BIT(0),
|
||||
/* Sleep command support. fuel_gauge_info.sleep_mode must be defined. */
|
||||
FUEL_GAUGE_FLAG_SLEEP_MODE = BIT(1),
|
||||
/*
|
||||
* Manufacturer access command support. If enabled, FET status is read
|
||||
* from the OperationStatus (0x54) register using the
|
||||
* ManufacturerBlockAccess (0x44).
|
||||
*/
|
||||
FUEL_GAUGE_FLAG_MFGACC = BIT(2),
|
||||
/*
|
||||
* SMB block protocol support in manufacturer access command. If
|
||||
* enabled, FET status is read from the OperationStatus (0x54) register
|
||||
* using the ManufacturerBlockAccess (0x44).
|
||||
*/
|
||||
FUEL_GAUGE_FLAG_MFGACC_SMB_BLOCK = BIT(3),
|
||||
};
|
||||
|
||||
struct fuel_gauge_info {
|
||||
uint32_t flags;
|
||||
uint32_t board_flags;
|
||||
struct ship_mode_info ship_mode;
|
||||
struct sleep_mode_info sleep_mode;
|
||||
struct fet_info fet;
|
||||
} __packed __aligned(4);
|
||||
|
||||
/* Battery constants */
|
||||
struct battery_info {
|
||||
/* Operation voltage in mV */
|
||||
uint16_t voltage_max;
|
||||
uint16_t voltage_normal;
|
||||
uint16_t voltage_min;
|
||||
/* (TODO(chromium:756700): add desired_charging_current */
|
||||
/**
|
||||
* Pre-charge to fast charge threshold in mV,
|
||||
* default to voltage_min if not specified.
|
||||
* This option is only available on isl923x and rt946x.
|
||||
*/
|
||||
uint16_t precharge_voltage;
|
||||
/* Pre-charge current in mA */
|
||||
uint16_t precharge_current;
|
||||
/* Working temperature ranges in degrees C */
|
||||
int8_t start_charging_min_c;
|
||||
int8_t start_charging_max_c;
|
||||
int8_t charging_min_c;
|
||||
int8_t charging_max_c;
|
||||
int8_t discharging_min_c;
|
||||
int8_t discharging_max_c;
|
||||
/* Used only if CONFIG_BATTERY_VENDOR_PARAM is defined. */
|
||||
uint8_t vendor_param_start;
|
||||
uint8_t reserved;
|
||||
} __packed __aligned(2);
|
||||
|
||||
/**
|
||||
* The 'config' of a battery.
|
||||
*/
|
||||
struct board_batt_params {
|
||||
struct fuel_gauge_info fuel_gauge;
|
||||
struct battery_info batt_info;
|
||||
} __packed __aligned(4);
|
||||
|
||||
#define SBS_MAX_STRING_SIZE 32
|
||||
|
||||
/**
|
||||
* Header describing a battery config stored in CBI. Only struct_version has
|
||||
* size and position independent of struct_version. The rest varies as
|
||||
* struct_version changes.
|
||||
*
|
||||
* Version 0
|
||||
* Layout:
|
||||
* +-------------+
|
||||
* | header |
|
||||
* +-------------+
|
||||
* | | ^
|
||||
* | manuf_name | | manuf_name_size
|
||||
* | | v
|
||||
* +-------------+
|
||||
* | device_name | ^
|
||||
* | | | device_name_size
|
||||
* | | v
|
||||
* +-------------+
|
||||
* | config | ^
|
||||
* | | |
|
||||
* | | | cbi data size
|
||||
* | | | - (header_size+manuf_name_size+device_name_size)
|
||||
* | | |
|
||||
* | | v
|
||||
* +-------------+
|
||||
* Note:
|
||||
* - manuf_name and device_name are not null-terminated.
|
||||
* - The config isn't aligned. It should be copied to struct board_batt_params
|
||||
* before its contents are accessed.
|
||||
*/
|
||||
struct batt_conf_header {
|
||||
/* Version independent field. It's always here as a uint8_t. */
|
||||
uint8_t struct_version;
|
||||
/* Version 0 members */
|
||||
uint8_t manuf_name_size;
|
||||
uint8_t device_name_size;
|
||||
uint8_t reserved;
|
||||
/* manuf_name, device_name, board_batt_params follow after this. */
|
||||
} __packed;
|
||||
|
||||
#define BATT_CONF_MAX_SIZE \
|
||||
(sizeof(struct batt_conf_header) + SBS_MAX_STRING_SIZE * 2 + \
|
||||
sizeof(struct board_batt_params))
|
||||
|
||||
/*
|
||||
* Record the current AP firmware state. This is used to help testing, such as
|
||||
* with FAFT (Fully-Automated Firmware Test), which likes to know which firmware
|
||||
* screen is currently displayed.
|
||||
*/
|
||||
|
||||
#define EC_CMD_AP_FW_STATE 0x013E
|
||||
|
||||
struct ec_params_ap_fw_state {
|
||||
/*
|
||||
* Value which indicates the state. This is not decoded by the EC, so
|
||||
* its meaning is entirely outside this code base.
|
||||
*/
|
||||
uint32_t state;
|
||||
} __ec_align1;
|
||||
|
||||
/*****************************************************************************/
|
||||
/* The command range 0x200-0x2FF is reserved for Rotor. */
|
||||
|
||||
|
@ -7473,7 +7809,11 @@ struct ec_response_typec_vdm_response {
|
|||
/*****************************************************************************/
|
||||
/* Fingerprint MCU commands: range 0x0400-0x040x */
|
||||
|
||||
/* Fingerprint SPI sensor passthru command: prototyping ONLY */
|
||||
/*
|
||||
* Fingerprint SPI sensor passthru command
|
||||
*
|
||||
* This command was used for prototyping and it's now deprecated.
|
||||
*/
|
||||
#define EC_CMD_FP_PASSTHRU 0x0400
|
||||
|
||||
#define EC_FP_FLAG_NOT_COMPLETE 0x1
|
||||
|
@ -7721,6 +8061,12 @@ struct ec_params_fp_seed {
|
|||
|
||||
/* FP TPM seed has been set or not */
|
||||
#define FP_ENC_STATUS_SEED_SET BIT(0)
|
||||
/* FP using nonce context or not */
|
||||
#define FP_CONTEXT_STATUS_NONCE_CONTEXT_SET BIT(1)
|
||||
/* FP match had been processed or not */
|
||||
#define FP_CONTEXT_STATUS_MATCH_PROCESSED_SET BIT(2)
|
||||
/* FP auth_nonce had been set or not*/
|
||||
#define FP_CONTEXT_AUTH_NONCE_SET BIT(3)
|
||||
|
||||
struct ec_response_fp_encryption_status {
|
||||
/* Used bits in encryption engine status */
|
||||
|
@ -7740,6 +8086,115 @@ struct ec_response_fp_read_match_secret {
|
|||
uint8_t positive_match_secret[FP_POSITIVE_MATCH_SECRET_BYTES];
|
||||
} __ec_align4;
|
||||
|
||||
#define FP_ELLIPTIC_CURVE_PUBLIC_KEY_POINT_LEN 32
|
||||
|
||||
struct fp_elliptic_curve_public_key {
|
||||
uint8_t x[FP_ELLIPTIC_CURVE_PUBLIC_KEY_POINT_LEN];
|
||||
uint8_t y[FP_ELLIPTIC_CURVE_PUBLIC_KEY_POINT_LEN];
|
||||
} __ec_align4;
|
||||
|
||||
#define FP_AES_KEY_ENC_METADATA_VERSION 1
|
||||
#define FP_AES_KEY_NONCE_BYTES 12
|
||||
#define FP_AES_KEY_ENCRYPTION_SALT_BYTES 16
|
||||
#define FP_AES_KEY_TAG_BYTES 16
|
||||
|
||||
struct fp_auth_command_encryption_metadata {
|
||||
/* Version of the structure format */
|
||||
uint16_t struct_version;
|
||||
/* Reserved bytes, set to 0. */
|
||||
uint16_t reserved;
|
||||
/*
|
||||
* The salt is *only* ever used for key derivation. The nonce is unique,
|
||||
* a different one is used for every message.
|
||||
*/
|
||||
uint8_t nonce[FP_AES_KEY_NONCE_BYTES];
|
||||
uint8_t encryption_salt[FP_AES_KEY_ENCRYPTION_SALT_BYTES];
|
||||
uint8_t tag[FP_AES_KEY_TAG_BYTES];
|
||||
} __ec_align4;
|
||||
|
||||
#define FP_ELLIPTIC_CURVE_PRIVATE_KEY_LEN 32
|
||||
#define FP_ELLIPTIC_CURVE_PUBLIC_KEY_IV_LEN 16
|
||||
|
||||
struct fp_encrypted_private_key {
|
||||
struct fp_auth_command_encryption_metadata info;
|
||||
uint8_t data[FP_ELLIPTIC_CURVE_PRIVATE_KEY_LEN];
|
||||
} __ec_align4;
|
||||
|
||||
#define EC_CMD_FP_ESTABLISH_PAIRING_KEY_KEYGEN 0x0410
|
||||
|
||||
struct ec_response_fp_establish_pairing_key_keygen {
|
||||
struct fp_elliptic_curve_public_key pubkey;
|
||||
struct fp_encrypted_private_key encrypted_private_key;
|
||||
} __ec_align4;
|
||||
|
||||
#define FP_PAIRING_KEY_LEN 32
|
||||
|
||||
struct ec_fp_encrypted_pairing_key {
|
||||
struct fp_auth_command_encryption_metadata info;
|
||||
uint8_t data[FP_PAIRING_KEY_LEN];
|
||||
} __ec_align4;
|
||||
|
||||
#define EC_CMD_FP_ESTABLISH_PAIRING_KEY_WRAP 0x0411
|
||||
|
||||
struct ec_params_fp_establish_pairing_key_wrap {
|
||||
struct fp_elliptic_curve_public_key peers_pubkey;
|
||||
struct fp_encrypted_private_key encrypted_private_key;
|
||||
} __ec_align4;
|
||||
|
||||
struct ec_response_fp_establish_pairing_key_wrap {
|
||||
struct ec_fp_encrypted_pairing_key encrypted_pairing_key;
|
||||
} __ec_align4;
|
||||
|
||||
#define EC_CMD_FP_LOAD_PAIRING_KEY 0x0412
|
||||
|
||||
typedef struct ec_response_fp_establish_pairing_key_wrap
|
||||
ec_params_fp_load_pairing_key;
|
||||
|
||||
#define FP_CK_AUTH_NONCE_LEN 32
|
||||
|
||||
#define EC_CMD_FP_GENERATE_NONCE 0x0413
|
||||
struct ec_response_fp_generate_nonce {
|
||||
uint8_t nonce[FP_CK_AUTH_NONCE_LEN];
|
||||
} __ec_align4;
|
||||
|
||||
#define FP_CONTEXT_USERID_LEN 32
|
||||
#define FP_CONTEXT_USERID_IV_LEN 16
|
||||
#define FP_CONTEXT_KEY_LEN 32
|
||||
|
||||
#define EC_CMD_FP_NONCE_CONTEXT 0x0414
|
||||
struct ec_params_fp_nonce_context {
|
||||
uint8_t gsc_nonce[FP_CK_AUTH_NONCE_LEN];
|
||||
uint8_t enc_user_id[FP_CONTEXT_USERID_LEN];
|
||||
uint8_t enc_user_id_iv[FP_CONTEXT_USERID_IV_LEN];
|
||||
} __ec_align4;
|
||||
|
||||
#define FP_ELLIPTIC_CURVE_PUBLIC_KEY_IV_LEN 16
|
||||
|
||||
#define EC_CMD_FP_READ_MATCH_SECRET_WITH_PUBKEY 0x0415
|
||||
|
||||
struct ec_params_fp_read_match_secret_with_pubkey {
|
||||
uint16_t fgr;
|
||||
uint16_t reserved;
|
||||
struct fp_elliptic_curve_public_key pubkey;
|
||||
} __ec_align4;
|
||||
|
||||
struct ec_response_fp_read_match_secret_with_pubkey {
|
||||
struct fp_elliptic_curve_public_key pubkey;
|
||||
uint8_t iv[FP_ELLIPTIC_CURVE_PUBLIC_KEY_IV_LEN];
|
||||
uint8_t enc_secret[FP_POSITIVE_MATCH_SECRET_BYTES];
|
||||
} __ec_align4;
|
||||
|
||||
/* Preload encrypted template into the MCU buffer */
|
||||
#define EC_CMD_FP_PRELOAD_TEMPLATE 0x0416
|
||||
|
||||
struct ec_params_fp_preload_template {
|
||||
uint32_t offset;
|
||||
uint32_t size;
|
||||
uint16_t fgr;
|
||||
uint8_t reserved[2];
|
||||
uint8_t data[];
|
||||
} __ec_align4;
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Touchpad MCU commands: range 0x0500-0x05FF */
|
||||
|
||||
|
|
Loading…
Reference in New Issue