/* 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 */
