ec/google/chromeec: Add ec_cmd_api.h, update ec_commands.h
The new util/chromeos/update_ec_headers.sh utility is used to update ec_commands.h and introduce ec_cmd_api.h from the chrome EC repo. ec_cmd_api.h is a new file from the chrome EC repo which defines the API for communicating with the EC. It is a companion to the existing ec_commands.h by defining functions corresponding to EC host command opcodes and request/response struct definitions. See $EC/docs/ec-host-command-api.md for details. Generated using update_ec_headers.sh [EC-DIR]. The original include/ec_commands.h version in the EC repo is: 3e35858003 ec: Add another #line directive The original include/ec_cmd_api.h version in the EC repo is: 59de61f2db zephyr: Add support for RNG devices BUG=b:258126464 BRANCH=none TEST=none Change-Id: I30f20e34d31b7e19cf03f65fefd58ae64eef1d41 Signed-off-by: Caveh Jalali <caveh@chromium.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/73324 Reviewed-by: Yu-Ping Wu <yupingso@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
fe95f83fd8
commit
839ada15ff
|
@ -0,0 +1,415 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause */
|
||||
|
||||
|
||||
|
||||
|
||||
#ifndef __CROS_EC_EC_CMD_API_H
|
||||
#define __CROS_EC_EC_CMD_API_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
* This file consists of 3 sections corresponding to the different
|
||||
* methods used to determine the host command API function signature:
|
||||
*
|
||||
* 1. This section consists of functions that do not follow a simple
|
||||
* pattern and need to be specified explicitly.
|
||||
*
|
||||
* 2. This section consists of functions that can be generated with the
|
||||
* help of template macros.
|
||||
*
|
||||
* Note:
|
||||
*
|
||||
* A CROS_EC_COMMAND_INFO macro must be defined before including this
|
||||
* file. This is the data type holding the context info identifying the
|
||||
* EC performing the command.
|
||||
*
|
||||
* A CROS_EC_COMMAND macro must be defined before including this file
|
||||
* with the following signature:
|
||||
*
|
||||
* int CROS_EC_COMMAND(CROS_EC_COMMAND_INFO *h,
|
||||
* int command, int version,
|
||||
* const void *outdata, int outsize,
|
||||
* void *indata, int insize)
|
||||
*
|
||||
* This is the function implementing host command messaging with the EC.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Section 1: Functions that need to be implemented explicitly because
|
||||
* they do not adhere to simple naming that would permit
|
||||
* auto-generation.
|
||||
*
|
||||
* Please keep this list sorted by function name.
|
||||
*/
|
||||
|
||||
static inline int ec_cmd_get_sku_id(CROS_EC_COMMAND_INFO *h,
|
||||
struct ec_sku_id_info *r)
|
||||
{
|
||||
return CROS_EC_COMMAND(h, EC_CMD_GET_SKU_ID, 0, NULL, 0, r, sizeof(*r));
|
||||
}
|
||||
|
||||
static inline int
|
||||
ec_cmd_mkbp_info_get_next_data(CROS_EC_COMMAND_INFO *h,
|
||||
const struct ec_params_mkbp_info *p,
|
||||
union ec_response_get_next_data *r)
|
||||
{
|
||||
return CROS_EC_COMMAND(h, EC_CMD_MKBP_INFO, 0, p, sizeof(*p), r,
|
||||
sizeof(*r));
|
||||
}
|
||||
|
||||
static inline int ec_cmd_set_sku_id(CROS_EC_COMMAND_INFO *h,
|
||||
const struct ec_sku_id_info *p)
|
||||
{
|
||||
return CROS_EC_COMMAND(h, EC_CMD_SET_SKU_ID, 0, p, sizeof(*p), NULL, 0);
|
||||
}
|
||||
|
||||
static inline int ec_cmd_thermal_get_threshold_v1(
|
||||
CROS_EC_COMMAND_INFO *h,
|
||||
const struct ec_params_thermal_get_threshold_v1 *p,
|
||||
struct ec_thermal_config *r)
|
||||
{
|
||||
return CROS_EC_COMMAND(h, EC_CMD_THERMAL_GET_THRESHOLD, 1, p,
|
||||
sizeof(*p), r, sizeof(*r));
|
||||
}
|
||||
|
||||
static inline int
|
||||
ec_cmd_usb_pd_dev_info(CROS_EC_COMMAND_INFO *h,
|
||||
const struct ec_params_usb_pd_info_request *p,
|
||||
struct ec_params_usb_pd_rw_hash_entry *r)
|
||||
{
|
||||
return CROS_EC_COMMAND(h, EC_CMD_USB_PD_DEV_INFO, 0, p, sizeof(*p), r,
|
||||
sizeof(*r));
|
||||
}
|
||||
|
||||
static inline int
|
||||
ec_cmd_usb_pd_discovery(CROS_EC_COMMAND_INFO *h,
|
||||
const struct ec_params_usb_pd_info_request *p,
|
||||
struct ec_params_usb_pd_discovery_entry *r)
|
||||
{
|
||||
return CROS_EC_COMMAND(h, EC_CMD_USB_PD_DISCOVERY, 0, p, sizeof(*p), r,
|
||||
sizeof(*r));
|
||||
}
|
||||
|
||||
static inline int
|
||||
ec_cmd_usb_pd_set_amode(CROS_EC_COMMAND_INFO *h,
|
||||
const struct ec_params_usb_pd_set_mode_request *p)
|
||||
{
|
||||
return CROS_EC_COMMAND(h, EC_CMD_USB_PD_SET_AMODE, 0, p, sizeof(*p),
|
||||
NULL, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Section 2: EC interface functions that can be generated with the help
|
||||
* of template macros.
|
||||
*
|
||||
* _cmd host command name
|
||||
* _v host command version number
|
||||
* _fn host command function name (will be prefixed with ec_cmd_)
|
||||
* _in host command input (param) data type (will be prefixed with
|
||||
* ec_params_)
|
||||
* _out host command output (response) data type (will be prefixed with
|
||||
* ec_response_)
|
||||
*
|
||||
* Template macros follow a naming scheme based on the arguments they
|
||||
* require:
|
||||
*
|
||||
* C0 host command version 0, does not need to be specified (most
|
||||
* common/default case)
|
||||
* CV host command with specified version
|
||||
* one of C0, CV is required
|
||||
* F function name generated (the lower case version of the _cmd arg)
|
||||
* (required)
|
||||
* PF parameter type derived from function name (_fn arg)
|
||||
* P parameter type specified explicitly (i.e. can not be derived from
|
||||
* _fn arg)
|
||||
* PF, P are mutually exclusive and optional
|
||||
* RF response type derived from function name (_fn arg)
|
||||
* R response type specified explicitly (i.e. can not be derived from
|
||||
* _fn arg)
|
||||
* RF, R are mutually exclusive and optional
|
||||
*/
|
||||
|
||||
/*
|
||||
* Template for EC interface functions that take a param and returns a
|
||||
* response.
|
||||
*/
|
||||
#define _CROS_EC_CV_F_P_R(_cmd, _v, _fn, _in, _out) \
|
||||
static inline int ec_cmd_##_fn(CROS_EC_COMMAND_INFO *h, \
|
||||
const struct ec_params_##_in *p, \
|
||||
struct ec_response_##_out *r) \
|
||||
{ \
|
||||
return CROS_EC_COMMAND(h, (_cmd), (_v), p, sizeof(*p), r, \
|
||||
sizeof(*r)); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Template for EC interface functions that take a param but do not
|
||||
* return a response.
|
||||
*/
|
||||
#define _CROS_EC_CV_F_P(_cmd, _v, _fn, _in) \
|
||||
static inline int ec_cmd_##_fn(CROS_EC_COMMAND_INFO *h, \
|
||||
const struct ec_params_##_in *p) \
|
||||
{ \
|
||||
return CROS_EC_COMMAND(h, (_cmd), (_v), p, sizeof(*p), NULL, \
|
||||
0); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Template for EC interface functions that do not take a param but do
|
||||
* return a response.
|
||||
*/
|
||||
#define _CROS_EC_CV_F_R(_cmd, _v, _fn, _out) \
|
||||
static inline int ec_cmd_##_fn(CROS_EC_COMMAND_INFO *h, \
|
||||
struct ec_response_##_out *r) \
|
||||
{ \
|
||||
return CROS_EC_COMMAND(h, (_cmd), (_v), NULL, 0, r, \
|
||||
sizeof(*r)); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Template for EC interface functions that do not take a param and do
|
||||
* not return a response.
|
||||
*/
|
||||
#define _CROS_EC_CV_F(_cmd, _v, _fn) \
|
||||
static inline int ec_cmd_##_fn(CROS_EC_COMMAND_INFO *h) \
|
||||
{ \
|
||||
return CROS_EC_COMMAND(h, (_cmd), (_v), NULL, 0, NULL, 0); \
|
||||
}
|
||||
|
||||
/*
|
||||
* Shorthand for host command version 0 where param and response name is
|
||||
* derived from the function name.
|
||||
*/
|
||||
#define _CROS_EC_C0_F_PF_RF(_cmd, _fn) _CROS_EC_CV_F_P_R(_cmd, 0, _fn, _fn, _fn)
|
||||
|
||||
/*
|
||||
* Shorthand for host command version 1 where param and response name is
|
||||
* derived from the function name.
|
||||
*/
|
||||
#define _CROS_EC_C1_F_PF_RF(_cmd, _fn) \
|
||||
_CROS_EC_CV_F_P_R(_cmd, 1, _fn##_v1, _fn##_v1, _fn##_v1)
|
||||
|
||||
/*
|
||||
* Shorthand for host command version 0 where param name is
|
||||
* derived from the function name and there is no response.
|
||||
*/
|
||||
#define _CROS_EC_C0_F_PF(_cmd, _fn) _CROS_EC_CV_F_P(_cmd, 0, _fn, _fn)
|
||||
|
||||
/*
|
||||
* Shorthand for host command version 1 where param name is
|
||||
* derived from the function name and there is no response.
|
||||
*/
|
||||
#define _CROS_EC_C1_F_PF(_cmd, _fn) _CROS_EC_CV_F_P(_cmd, 1, _fn##_v1, _fn##_v1)
|
||||
|
||||
/*
|
||||
* Shorthand for host command version 0 where response name is derived
|
||||
* from the function name and there is no param.
|
||||
*/
|
||||
#define _CROS_EC_C0_F_RF(_cmd, _fn) _CROS_EC_CV_F_R(_cmd, 0, _fn, _fn)
|
||||
|
||||
/*
|
||||
* Shorthand for host command version 1 where response name is derived
|
||||
* from the function name and there is no param.
|
||||
*/
|
||||
#define _CROS_EC_C1_F_RF(_cmd, _fn) _CROS_EC_CV_F_R(_cmd, 1, _fn##_v1, _fn##_v1)
|
||||
|
||||
/*
|
||||
* Shorthand for host command version 0 where response and there are no
|
||||
* params or response.
|
||||
*/
|
||||
#define _CROS_EC_C0_F(_cmd, _fn) _CROS_EC_CV_F(_cmd, 0, _fn)
|
||||
|
||||
/*
|
||||
* Please keep this list sorted by host command. Sort with:
|
||||
*
|
||||
* clang-format '--style={BasedOnStyle: InheritParentConfig,
|
||||
* ColumnLimit: 888 }' include/ec_cmd_api.h | grep '^_CROS' |
|
||||
* LC_COLLATE=C sort -t '(' -k 2,2 | clang-format
|
||||
*/
|
||||
|
||||
_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(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);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_BATTERY_GET_DYNAMIC, 0, battery_get_dynamic,
|
||||
battery_dynamic_info, battery_dynamic_info);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_BATTERY_GET_STATIC, 0, battery_get_static,
|
||||
battery_static_info, battery_static_info);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_BATTERY_GET_STATIC, 1, battery_get_static_v1,
|
||||
battery_static_info, battery_static_info_v1);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_BATTERY_GET_STATIC, 2, battery_get_static_v2,
|
||||
battery_static_info, battery_static_info_v2);
|
||||
_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_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);
|
||||
_CROS_EC_CV_F_P(EC_CMD_CHARGE_CURRENT_LIMIT, 0, charge_current_limit,
|
||||
current_limit);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_CHARGE_PORT_COUNT, charge_port_count);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_CHARGE_STATE, charge_state);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_CONFIG_POWER_BUTTON, config_power_button);
|
||||
_CROS_EC_C0_F(EC_CMD_CONSOLE_SNAPSHOT, console_snapshot);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_DEVICE_EVENT, device_event);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_DISPLAY_SOC, display_soc);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_EFS_VERIFY, efs_verify);
|
||||
_CROS_EC_C1_F_PF(EC_CMD_EXTERNAL_POWER_LIMIT, external_power_limit);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_FLASH_ERASE, flash_erase);
|
||||
_CROS_EC_CV_F_R(EC_CMD_FLASH_INFO, 1, flash_info_v1, flash_info_1);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_FLASH_INFO, flash_info);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_FLASH_PROTECT, 1, flash_protect_v1, flash_protect,
|
||||
flash_protect);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_FLASH_PROTECT, flash_protect);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_FLASH_REGION_INFO, 1, flash_region_info_v1,
|
||||
flash_region_info, flash_region_info);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_FLASH_SPI_INFO, flash_spi_info);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_FORCE_LID_OPEN, force_lid_open);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_FP_MODE, fp_mode);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_FP_SEED, fp_seed);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_FP_STATS, fp_stats);
|
||||
_CROS_EC_CV_F_R(EC_CMD_GET_BOARD_VERSION, 0, get_board_version, board_version);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_GET_BOOT_TIME, get_boot_time);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_GET_CHIP_INFO, get_chip_info);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_GET_CMD_VERSIONS, 1, get_cmd_versions_v1,
|
||||
get_cmd_versions_v1, get_cmd_versions);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_GET_CMD_VERSIONS, get_cmd_versions);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_GET_COMMS_STATUS, get_comms_status);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_GET_FEATURES, get_features);
|
||||
_CROS_EC_CV_F_R(EC_CMD_GET_KEYBD_CONFIG, 0, get_keybd_config, keybd_config);
|
||||
_CROS_EC_CV_F_R(EC_CMD_GET_NEXT_EVENT, 2, get_next_event_v2, get_next_event);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_GET_NEXT_EVENT, get_next_event);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_GET_PD_PORT_CAPS, get_pd_port_caps);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_GET_PROTOCOL_INFO, get_protocol_info);
|
||||
_CROS_EC_CV_F_R(EC_CMD_GET_UPTIME_INFO, 0, get_uptime_info, uptime_info);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_GET_VERSION, get_version);
|
||||
_CROS_EC_C1_F_RF(EC_CMD_GET_VERSION, get_version);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_GPIO_GET, gpio_get);
|
||||
_CROS_EC_C1_F_PF_RF(EC_CMD_GPIO_GET, gpio_get);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_GPIO_SET, gpio_set);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_GSV_PAUSE_IN_S5, 0, gsv_pause_in_s5, get_set_value,
|
||||
get_set_value);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_HANG_DETECT, hang_detect);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_HELLO, hello);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_HIBERNATION_DELAY, hibernation_delay);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_HOST_EVENT, host_event);
|
||||
_CROS_EC_CV_F_P(EC_CMD_HOST_EVENT_CLEAR, 0, host_event_clear, host_event_mask);
|
||||
_CROS_EC_CV_F_P(EC_CMD_HOST_EVENT_CLEAR_B, 0, host_event_clear_b,
|
||||
host_event_mask);
|
||||
_CROS_EC_CV_F_R(EC_CMD_HOST_EVENT_GET_B, 0, host_event_get_b, host_event_mask);
|
||||
_CROS_EC_CV_F_R(EC_CMD_HOST_EVENT_GET_SCI_MASK, 0, host_event_get_sci_mask,
|
||||
host_event_mask);
|
||||
_CROS_EC_CV_F_R(EC_CMD_HOST_EVENT_GET_SMI_MASK, 0, host_event_get_smi_mask,
|
||||
host_event_mask);
|
||||
_CROS_EC_CV_F_R(EC_CMD_HOST_EVENT_GET_WAKE_MASK, 0, host_event_get_wake_mask,
|
||||
host_event_mask);
|
||||
_CROS_EC_CV_F_P(EC_CMD_HOST_EVENT_SET_SCI_MASK, 0, host_event_set_sci_mask,
|
||||
host_event_mask);
|
||||
_CROS_EC_CV_F_P(EC_CMD_HOST_EVENT_SET_SMI_MASK, 0, host_event_set_smi_mask,
|
||||
host_event_mask);
|
||||
_CROS_EC_CV_F_P(EC_CMD_HOST_EVENT_SET_WAKE_MASK, 0, host_event_set_wake_mask,
|
||||
host_event_mask);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_HOST_SLEEP_EVENT, host_sleep_event);
|
||||
_CROS_EC_C1_F_PF_RF(EC_CMD_HOST_SLEEP_EVENT, host_sleep_event);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_I2C_CONTROL, i2c_control);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_I2C_PASSTHRU_PROTECT, i2c_passthru_protect);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_KEYBOARD_FACTORY_TEST, keyboard_factory_test);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_LED_CONTROL, 1, led_control_v1, led_control,
|
||||
led_control);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_LOCATE_CHIP, locate_chip);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_MKBP_GET_CONFIG, mkbp_get_config);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_MKBP_INFO, mkbp_info);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_MKBP_SET_CONFIG, mkbp_set_config);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_MKBP_SIMULATE_KEY, mkbp_simulate_key);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_MKBP_WAKE_MASK, 0, mkbp_wake_mask,
|
||||
mkbp_event_wake_mask, mkbp_event_wake_mask);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_MOTION_SENSE_CMD, 1, motion_sense_cmd_v1, motion_sense,
|
||||
motion_sense);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_MOTION_SENSE_CMD, 2, motion_sense_cmd_v2, motion_sense,
|
||||
motion_sense);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_MOTION_SENSE_CMD, 4, motion_sense_cmd_v4, motion_sense,
|
||||
motion_sense);
|
||||
_CROS_EC_CV_F_P(EC_CMD_OVERRIDE_DEDICATED_CHARGER_LIMIT, 0,
|
||||
override_dedicated_charger_limit, dedicated_charger_limit);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_PCHG_COUNT, pchg_count);
|
||||
_CROS_EC_CV_F_P(EC_CMD_PD_CHARGE_PORT_OVERRIDE, 0, pd_charge_port_override,
|
||||
charge_port_override);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_PD_CHIP_INFO, 1, pd_chip_info_v1, pd_chip_info,
|
||||
pd_chip_info_v1);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_PD_CHIP_INFO, pd_chip_info);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_PD_CONTROL, pd_control);
|
||||
_CROS_EC_CV_F_R(EC_CMD_PD_HOST_EVENT_STATUS, 0, pd_host_event_status,
|
||||
host_event_status);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_PD_WRITE_LOG_ENTRY, pd_write_log_entry);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_PORT80_LAST_BOOT, port80_last_boot);
|
||||
_CROS_EC_C1_F_RF(EC_CMD_POWER_INFO, power_info);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_PSE, 0, pse, pse, pse_status);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_PSTORE_INFO, pstore_info);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_PSTORE_WRITE, pstore_write);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_PWM_GET_DUTY, pwm_get_duty);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_PWM_GET_KEYBOARD_BACKLIGHT, pwm_get_keyboard_backlight);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_PWM_SET_DUTY, pwm_set_duty);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_PWM_SET_FAN_DUTY, pwm_set_fan_duty_v0);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_PWM_SET_KEYBOARD_BACKLIGHT, pwm_set_keyboard_backlight);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_RAND_NUM, rand_num);
|
||||
_CROS_EC_C0_F(EC_CMD_REBOOT, reboot);
|
||||
_CROS_EC_C0_F(EC_CMD_REBOOT_AP_ON_G3, reboot_ap_on_g3);
|
||||
_CROS_EC_C1_F_PF(EC_CMD_REBOOT_AP_ON_G3, reboot_ap_on_g3);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_REBOOT_EC, reboot_ec);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_REGULATOR_ENABLE, regulator_enable);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_REGULATOR_GET_VOLTAGE, regulator_get_voltage);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_REGULATOR_IS_ENABLED, regulator_is_enabled);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_REGULATOR_SET_VOLTAGE, regulator_set_voltage);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_RGBKBD, rgbkbd);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_ROLLBACK_INFO, rollback_info);
|
||||
_CROS_EC_CV_F_R(EC_CMD_RTC_GET_ALARM, 0, rtc_get_alarm, rtc);
|
||||
_CROS_EC_CV_F_R(EC_CMD_RTC_GET_VALUE, 0, rtc_get_value, rtc);
|
||||
_CROS_EC_CV_F_P(EC_CMD_RTC_SET_ALARM, 0, rtc_set_alarm, rtc);
|
||||
_CROS_EC_CV_F_P(EC_CMD_RTC_SET_VALUE, 0, rtc_set_value, rtc);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_RWSIG_ACTION, rwsig_action);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_RWSIG_CHECK_STATUS, rwsig_check_status);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_RWSIG_INFO, rwsig_info);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_SET_BASE_STATE, set_base_state);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_SET_TABLET_MODE, set_tablet_mode);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_SMART_DISCHARGE, smart_discharge);
|
||||
_CROS_EC_CV_F_P(EC_CMD_SWITCH_ENABLE_BKLIGHT, 0, switch_enable_bklight,
|
||||
switch_enable_backlight);
|
||||
_CROS_EC_CV_F_P(EC_CMD_SWITCH_ENABLE_WIRELESS, 0, switch_enable_wireless,
|
||||
switch_enable_wireless_v0);
|
||||
_CROS_EC_C1_F_PF_RF(EC_CMD_SWITCH_ENABLE_WIRELESS, switch_enable_wireless);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_SYSINFO, sysinfo);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_TEMP_SENSOR_GET_INFO, temp_sensor_get_info);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_TEST_PROTOCOL, test_protocol);
|
||||
_CROS_EC_C0_F(EC_CMD_THERMAL_AUTO_FAN_CTRL, thermal_auto_fan_ctrl);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_THERMAL_GET_THRESHOLD, thermal_get_threshold);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_THERMAL_SET_THRESHOLD, thermal_set_threshold);
|
||||
_CROS_EC_C1_F_PF(EC_CMD_THERMAL_SET_THRESHOLD, thermal_set_threshold);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_TMP006_GET_RAW, tmp006_get_raw);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_TYPEC_CONTROL, typec_control);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_TYPEC_STATUS, typec_status);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_TYPEC_VDM_RESPONSE, typec_vdm_response);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_USB_CHARGE_SET_MODE, usb_charge_set_mode);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_USB_MUX, usb_mux);
|
||||
_CROS_EC_CV_F_P_R(EC_CMD_USB_PD_CONTROL, 2, usb_pd_control_v2, usb_pd_control,
|
||||
usb_pd_control_v2);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_USB_PD_CONTROL, usb_pd_control);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_USB_PD_DPS_CONTROL, usb_pd_dps_control);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_USB_PD_MUX_ACK, usb_pd_mux_ack);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_USB_PD_MUX_INFO, usb_pd_mux_info);
|
||||
_CROS_EC_C0_F_RF(EC_CMD_USB_PD_PORTS, usb_pd_ports);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_USB_PD_POWER_INFO, usb_pd_power_info);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_USB_PD_RW_HASH_ENTRY, usb_pd_rw_hash_entry);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_VBOOT_HASH, vboot_hash);
|
||||
_CROS_EC_C0_F_PF_RF(EC_CMD_VSTORE_READ, vstore_read);
|
||||
_CROS_EC_C0_F_PF(EC_CMD_VSTORE_WRITE, vstore_write);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __CROS_EC_EC_CMD_API_H */
|
|
@ -1,7 +1,16 @@
|
|||
/* SPDX-License-Identifier: BSD-3-Clause */
|
||||
|
||||
|
||||
|
||||
|
||||
/* Host communication command constants for Chrome EC */
|
||||
|
||||
/*
|
||||
* TODO(b/272518464): Work around coreboot GCC preprocessor bug.
|
||||
* #line marks the *next* line, so it is off by one.
|
||||
*/
|
||||
#line 13
|
||||
|
||||
#ifndef __CROS_EC_EC_COMMANDS_H
|
||||
#define __CROS_EC_EC_COMMANDS_H
|
||||
|
||||
|
@ -1270,7 +1279,7 @@ struct ec_response_get_version_v1 {
|
|||
char cros_fwid_rw[32]; /* Added in version 1 */
|
||||
} __ec_align4;
|
||||
|
||||
/* Read test - DEPRECATED */
|
||||
/* Read test - OBSOLETE */
|
||||
#define EC_CMD_READ_TEST 0x0003
|
||||
|
||||
/*
|
||||
|
@ -3722,17 +3731,6 @@ struct ec_params_mkbp_simulate_key {
|
|||
uint8_t pressed;
|
||||
} __ec_align1;
|
||||
|
||||
#define EC_CMD_GET_KEYBOARD_ID 0x0063
|
||||
|
||||
struct ec_response_keyboard_id {
|
||||
uint32_t keyboard_id;
|
||||
} __ec_align4;
|
||||
|
||||
enum keyboard_id {
|
||||
KEYBOARD_ID_UNSUPPORTED = 0,
|
||||
KEYBOARD_ID_UNREADABLE = 0xffffffff,
|
||||
};
|
||||
|
||||
/* Configure keyboard scanning */
|
||||
#define EC_CMD_MKBP_SET_CONFIG 0x0064
|
||||
#define EC_CMD_MKBP_GET_CONFIG 0x0065
|
||||
|
@ -4785,8 +4783,10 @@ struct ec_response_charge_state {
|
|||
|
||||
struct ec_params_current_limit {
|
||||
uint32_t limit; /* in mA */
|
||||
} __ec_align4;
|
||||
|
||||
/* Added in v1 */
|
||||
struct ec_params_current_limit_v1 {
|
||||
uint32_t limit; /* in mA */
|
||||
/*
|
||||
* Battery state of charge is the minimum charge percentage at which
|
||||
* the battery charge current limit will apply.
|
||||
|
@ -4989,41 +4989,36 @@ struct ec_response_device_event {
|
|||
uint32_t event_mask;
|
||||
} __ec_align4;
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Get s0ix counter */
|
||||
#define EC_CMD_GET_S0IX_COUNTER 0x00AB
|
||||
|
||||
/* Flag use to reset the counter */
|
||||
#define EC_S0IX_COUNTER_RESET 0x1
|
||||
|
||||
struct ec_params_s0ix_cnt {
|
||||
/* If EC_S0IX_COUNTER_RESET then reset otherwise get the counter */
|
||||
uint32_t flags;
|
||||
} __ec_align4;
|
||||
|
||||
struct ec_response_s0ix_cnt {
|
||||
/* Value of the s0ix_counter */
|
||||
uint32_t s0ix_counter;
|
||||
} __ec_align4;
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Smart battery pass-through */
|
||||
|
||||
/* Get / Set 16-bit smart battery registers */
|
||||
/* Get / Set 16-bit smart battery registers - OBSOLETE */
|
||||
#define EC_CMD_SB_READ_WORD 0x00B0
|
||||
#define EC_CMD_SB_WRITE_WORD 0x00B1
|
||||
|
||||
/* Get / Set string smart battery parameters
|
||||
* formatted as SMBUS "block".
|
||||
* formatted as SMBUS "block". - OBSOLETE
|
||||
*/
|
||||
#define EC_CMD_SB_READ_BLOCK 0x00B2
|
||||
#define EC_CMD_SB_WRITE_BLOCK 0x00B3
|
||||
|
||||
struct ec_params_sb_rd {
|
||||
uint8_t reg;
|
||||
} __ec_align1;
|
||||
|
||||
struct ec_response_sb_rd_word {
|
||||
uint16_t value;
|
||||
} __ec_align2;
|
||||
|
||||
struct ec_params_sb_wr_word {
|
||||
uint8_t reg;
|
||||
uint16_t value;
|
||||
} __ec_align1;
|
||||
|
||||
struct ec_response_sb_rd_block {
|
||||
uint8_t data[32];
|
||||
} __ec_align1;
|
||||
|
||||
struct ec_params_sb_wr_block {
|
||||
uint8_t reg;
|
||||
uint16_t data[32];
|
||||
} __ec_align1;
|
||||
|
||||
/*****************************************************************************/
|
||||
/* Battery vendor parameters
|
||||
*
|
||||
|
@ -5052,62 +5047,10 @@ struct ec_response_battery_vendor_param {
|
|||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* Smart Battery Firmware Update Commands
|
||||
* Smart Battery Firmware Update Command - OBSOLETE
|
||||
*/
|
||||
#define EC_CMD_SB_FW_UPDATE 0x00B5
|
||||
|
||||
enum ec_sb_fw_update_subcmd {
|
||||
EC_SB_FW_UPDATE_PREPARE = 0x0,
|
||||
EC_SB_FW_UPDATE_INFO = 0x1, /*query sb info */
|
||||
EC_SB_FW_UPDATE_BEGIN = 0x2, /*check if protected */
|
||||
EC_SB_FW_UPDATE_WRITE = 0x3, /*check if protected */
|
||||
EC_SB_FW_UPDATE_END = 0x4,
|
||||
EC_SB_FW_UPDATE_STATUS = 0x5,
|
||||
EC_SB_FW_UPDATE_PROTECT = 0x6,
|
||||
EC_SB_FW_UPDATE_MAX = 0x7,
|
||||
};
|
||||
|
||||
#define SB_FW_UPDATE_CMD_WRITE_BLOCK_SIZE 32
|
||||
#define SB_FW_UPDATE_CMD_STATUS_SIZE 2
|
||||
#define SB_FW_UPDATE_CMD_INFO_SIZE 8
|
||||
|
||||
struct ec_sb_fw_update_header {
|
||||
uint16_t subcmd; /* enum ec_sb_fw_update_subcmd */
|
||||
uint16_t fw_id; /* firmware id */
|
||||
} __ec_align4;
|
||||
|
||||
struct ec_params_sb_fw_update {
|
||||
struct ec_sb_fw_update_header hdr;
|
||||
union {
|
||||
/* EC_SB_FW_UPDATE_PREPARE = 0x0 */
|
||||
/* EC_SB_FW_UPDATE_INFO = 0x1 */
|
||||
/* EC_SB_FW_UPDATE_BEGIN = 0x2 */
|
||||
/* EC_SB_FW_UPDATE_END = 0x4 */
|
||||
/* EC_SB_FW_UPDATE_STATUS = 0x5 */
|
||||
/* EC_SB_FW_UPDATE_PROTECT = 0x6 */
|
||||
/* Those have no args */
|
||||
|
||||
/* EC_SB_FW_UPDATE_WRITE = 0x3 */
|
||||
struct __ec_align4 {
|
||||
uint8_t data[SB_FW_UPDATE_CMD_WRITE_BLOCK_SIZE];
|
||||
} write;
|
||||
};
|
||||
} __ec_align4;
|
||||
|
||||
struct ec_response_sb_fw_update {
|
||||
union {
|
||||
/* EC_SB_FW_UPDATE_INFO = 0x1 */
|
||||
struct __ec_align1 {
|
||||
uint8_t data[SB_FW_UPDATE_CMD_INFO_SIZE];
|
||||
} info;
|
||||
|
||||
/* EC_SB_FW_UPDATE_STATUS = 0x5 */
|
||||
struct __ec_align1 {
|
||||
uint8_t data[SB_FW_UPDATE_CMD_STATUS_SIZE];
|
||||
} status;
|
||||
};
|
||||
} __ec_align1;
|
||||
|
||||
/*
|
||||
* Entering Verified Boot Mode Command
|
||||
* Default mode is VBOOT_MODE_NORMAL if EC did not receive this command.
|
||||
|
@ -5571,6 +5514,54 @@ struct ec_params_reboot_ec {
|
|||
*/
|
||||
#define EC_CMD_VERSION0 0x00DC
|
||||
|
||||
/*
|
||||
* Memory Dump Commands
|
||||
*
|
||||
* Since the HOSTCMD response size is limited, depending on the
|
||||
* protocol, retrieving a memory dump is split into 3 commands.
|
||||
*
|
||||
* 1. EC_CMD_MEMORY_DUMP_GET_METADATA returns the number of memory dump entries,
|
||||
* and the total dump size.
|
||||
* 2. EC_CMD_MEMORY_DUMP_GET_ENTRY_INFO returns the address and size for a given
|
||||
* memory dump entry index.
|
||||
* 3. EC_CMD_MEMORY_DUMP_READ_MEMORY returns the actual memory at a given
|
||||
* address. The address and size must be within the bounds of the given
|
||||
* memory dump entry index. Each response is limited to the max response size
|
||||
* of the host protocol, so this may need to be called repeatedly to retrieve
|
||||
* the entire memory dump entry.
|
||||
*
|
||||
* Memory entries may overlap and may be out of order.
|
||||
* The host should check for overlaps to optimize transfer rate.
|
||||
*/
|
||||
#define EC_CMD_MEMORY_DUMP_GET_METADATA 0x00DD
|
||||
struct ec_response_memory_dump_get_metadata {
|
||||
uint16_t memory_dump_entry_count;
|
||||
uint32_t memory_dump_total_size;
|
||||
} __ec_align4;
|
||||
|
||||
#define EC_CMD_MEMORY_DUMP_GET_ENTRY_INFO 0x00DE
|
||||
struct ec_params_memory_dump_get_entry_info {
|
||||
uint16_t memory_dump_entry_index;
|
||||
} __ec_align4;
|
||||
|
||||
struct ec_response_memory_dump_get_entry_info {
|
||||
uint32_t address;
|
||||
uint32_t size;
|
||||
} __ec_align4;
|
||||
|
||||
#define EC_CMD_MEMORY_DUMP_READ_MEMORY 0x00DF
|
||||
|
||||
struct ec_params_memory_dump_read_memory {
|
||||
uint16_t memory_dump_entry_index;
|
||||
uint32_t address;
|
||||
uint32_t size;
|
||||
} __ec_align4;
|
||||
|
||||
/*
|
||||
* EC_CMD_MEMORY_DUMP_READ_MEMORY response buffer is written directly into
|
||||
* host_cmd_handler_args.response and host_cmd_handler_args.response_size.
|
||||
*/
|
||||
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* PD commands
|
||||
|
@ -5739,6 +5730,8 @@ enum pd_cc_states {
|
|||
#define USB_PD_CTRL_TBT_LEGACY_ADAPTER BIT(2)
|
||||
/* Active Link Uni-Direction */
|
||||
#define USB_PD_CTRL_ACTIVE_LINK_UNIDIR BIT(3)
|
||||
/* Retimer/Redriver cable */
|
||||
#define USB_PD_CTRL_RETIMER_CABLE BIT(4)
|
||||
|
||||
struct ec_response_usb_pd_control_v2 {
|
||||
uint8_t enabled;
|
||||
|
@ -5992,10 +5985,14 @@ struct ec_params_usb_pd_get_mode_request {
|
|||
uint8_t port; /* port */
|
||||
} __ec_align_size1;
|
||||
|
||||
#define VDO_MAX_SIZE 7
|
||||
/* Max number of VDM data objects without VDM header */
|
||||
#define VDO_MAX_OBJECTS (VDO_MAX_SIZE - 1)
|
||||
|
||||
struct ec_params_usb_pd_get_mode_response {
|
||||
uint16_t svid; /* SVID */
|
||||
uint16_t opos; /* Object Position */
|
||||
uint32_t vdo[6]; /* Mode VDOs */
|
||||
uint32_t vdo[VDO_MAX_OBJECTS]; /* Mode VDOs */
|
||||
} __ec_align4;
|
||||
|
||||
#define EC_CMD_USB_PD_SET_AMODE 0x0117
|
||||
|
@ -6779,14 +6776,14 @@ struct ec_params_typec_discovery {
|
|||
struct svid_mode_info {
|
||||
uint16_t svid;
|
||||
uint16_t mode_count; /* Number of modes partner sent */
|
||||
uint32_t mode_vdo[6]; /* Max VDOs allowed after VDM header is 6 */
|
||||
uint32_t mode_vdo[VDO_MAX_OBJECTS];
|
||||
};
|
||||
|
||||
struct ec_response_typec_discovery {
|
||||
uint8_t identity_count; /* Number of identity VDOs partner sent */
|
||||
uint8_t svid_count; /* Number of SVIDs partner sent */
|
||||
uint16_t reserved;
|
||||
uint32_t discovery_vdo[6]; /* Max VDOs allowed after VDM header is 6 */
|
||||
uint32_t discovery_vdo[VDO_MAX_OBJECTS];
|
||||
struct svid_mode_info svids[0];
|
||||
} __ec_align1;
|
||||
|
||||
|
@ -6826,8 +6823,6 @@ struct typec_usb_mux_set {
|
|||
uint8_t mux_flags;
|
||||
} __ec_align1;
|
||||
|
||||
#define VDO_MAX_SIZE 7
|
||||
|
||||
struct typec_vdm_req {
|
||||
/* VDM data, including VDM header */
|
||||
uint32_t vdm_data[VDO_MAX_SIZE];
|
||||
|
@ -7057,7 +7052,12 @@ struct ec_params_typec_status {
|
|||
uint8_t port;
|
||||
} __ec_align1;
|
||||
|
||||
struct ec_response_typec_status {
|
||||
/*
|
||||
* ec_response_typec_status is deprecated. Use ec_response_typec_status_v1.
|
||||
* If you need to support old ECs who speak only v0, use
|
||||
* ec_response_typec_status_v0 instead. They're binary-compatible.
|
||||
*/
|
||||
struct ec_response_typec_status /* DEPRECATED */ {
|
||||
uint8_t pd_enabled; /* PD communication enabled - bool */
|
||||
uint8_t dev_connected; /* Device connected - bool */
|
||||
uint8_t sop_connected; /* Device is SOP PD capable - bool */
|
||||
|
@ -7096,6 +7096,53 @@ struct ec_response_typec_status {
|
|||
uint32_t sink_cap_pdos[7]; /* Max 7 PDOs can be present */
|
||||
} __ec_align1;
|
||||
|
||||
struct cros_ec_typec_status {
|
||||
uint8_t pd_enabled; /* PD communication enabled - bool */
|
||||
uint8_t dev_connected; /* Device connected - bool */
|
||||
uint8_t sop_connected; /* Device is SOP PD capable - bool */
|
||||
uint8_t source_cap_count; /* Number of Source Cap PDOs */
|
||||
|
||||
uint8_t power_role; /* enum pd_power_role */
|
||||
uint8_t data_role; /* enum pd_data_role */
|
||||
uint8_t vconn_role; /* enum pd_vconn_role */
|
||||
uint8_t sink_cap_count; /* Number of Sink Cap PDOs */
|
||||
|
||||
uint8_t polarity; /* enum tcpc_cc_polarity */
|
||||
uint8_t cc_state; /* enum pd_cc_states */
|
||||
uint8_t dp_pin; /* DP pin mode (MODE_DP_IN_[A-E]) */
|
||||
uint8_t mux_state; /* USB_PD_MUX* - encoded mux state */
|
||||
|
||||
char tc_state[32]; /* TC state name */
|
||||
|
||||
uint32_t events; /* PD_STATUS_EVENT bitmask */
|
||||
|
||||
/*
|
||||
* BCD PD revisions for partners
|
||||
*
|
||||
* The format has the PD major revision in the upper nibble, and the PD
|
||||
* minor revision in the next nibble. The following two nibbles hold the
|
||||
* major and minor specification version. If a partner does not support
|
||||
* the Revision message, only the major revision will be given.
|
||||
* ex. PD Revision 3.2 Version 1.9 would map to 0x3219
|
||||
*
|
||||
* PD revision/version will be 0 if no PD device is connected.
|
||||
*/
|
||||
uint16_t sop_revision;
|
||||
uint16_t sop_prime_revision;
|
||||
} __ec_align1;
|
||||
|
||||
struct ec_response_typec_status_v0 {
|
||||
struct cros_ec_typec_status typec_status;
|
||||
uint32_t source_cap_pdos[7]; /* Max 7 PDOs can be present */
|
||||
uint32_t sink_cap_pdos[7]; /* Max 7 PDOs can be present */
|
||||
} __ec_align1;
|
||||
|
||||
struct ec_response_typec_status_v1 {
|
||||
struct cros_ec_typec_status typec_status;
|
||||
uint32_t source_cap_pdos[11]; /* Max 11 PDOs can be present */
|
||||
uint32_t sink_cap_pdos[11]; /* Max 11 PDOs can be present */
|
||||
} __ec_align1;
|
||||
|
||||
/**
|
||||
* Get the number of peripheral charge ports
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue