summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/kevin/board.h3
-rw-r--r--common/host_command.c25
-rw-r--r--core/cortex-m/ec.lds.S2
-rw-r--r--core/cortex-m0/ec.lds.S2
-rw-r--r--core/host/host_exe.lds2
-rw-r--r--core/minute-ia/ec.lds.S2
-rw-r--r--core/nds32/ec.lds.S2
-rw-r--r--include/config.h6
-rw-r--r--include/ec_commands.h249
-rw-r--r--include/host_command.h15
10 files changed, 133 insertions, 175 deletions
diff --git a/board/kevin/board.h b/board/kevin/board.h
index aaeb81494e..fc550fd7c1 100644
--- a/board/kevin/board.h
+++ b/board/kevin/board.h
@@ -8,9 +8,6 @@
#ifndef __CROS_EC_BOARD_H
#define __CROS_EC_BOARD_H
-/* Host commands are sorted. */
-#define CONFIG_HOSTCMD_SECTION_SORTED
-
/* Optional modules */
#define CONFIG_ADC
#define CONFIG_CHIPSET_RK3399
diff --git a/common/host_command.c b/common/host_command.c
index 6a4b491936..3034419503 100644
--- a/common/host_command.c
+++ b/common/host_command.c
@@ -363,30 +363,6 @@ host_packet_bad:
*/
static const struct host_command *find_host_command(int command)
{
-#ifdef CONFIG_HOSTCMD_SECTION_SORTED
- const struct host_command *l, *r, *m;
- uint32_t num, hc_size;
-
-/* Use binary search to locate host command handler */
- l = __hcmds;
- r = __hcmds_end;
- hc_size = sizeof(struct host_command);
-
- while (1) {
- if (l > r)
- return NULL;
-
- num = ((intptr_t)r - (intptr_t)l) / hc_size;
- m = l + (num / 2);
-
- if (m->command < command)
- l = m + 1;
- else if (m->command > command)
- r = m - 1;
- else
- return m;
- }
-#else
const struct host_command *cmd;
for (cmd = __hcmds; cmd < __hcmds_end; cmd++) {
@@ -395,7 +371,6 @@ static const struct host_command *find_host_command(int command)
}
return NULL;
-#endif
}
static void host_command_init(void)
diff --git a/core/cortex-m/ec.lds.S b/core/cortex-m/ec.lds.S
index 90212a5389..9e791f0380 100644
--- a/core/cortex-m/ec.lds.S
+++ b/core/cortex-m/ec.lds.S
@@ -123,7 +123,7 @@ SECTIONS
. = ALIGN(4);
__hcmds = .;
- KEEP(*(SORT(.rodata.hcmds*)))
+ KEEP(*(.rodata.hcmds))
__hcmds_end = .;
. = ALIGN(4);
diff --git a/core/cortex-m0/ec.lds.S b/core/cortex-m0/ec.lds.S
index 6102bfa973..d2bee481a9 100644
--- a/core/cortex-m0/ec.lds.S
+++ b/core/cortex-m0/ec.lds.S
@@ -70,7 +70,7 @@ SECTIONS
. = ALIGN(4);
__hcmds = .;
- KEEP(*(SORT(.rodata.hcmds*)))
+ KEEP(*(.rodata.hcmds))
__hcmds_end = .;
. = ALIGN(4);
diff --git a/core/host/host_exe.lds b/core/host/host_exe.lds
index 2c4eabdeeb..0763002945 100644
--- a/core/host/host_exe.lds
+++ b/core/host/host_exe.lds
@@ -16,7 +16,7 @@ SECTIONS {
. = ALIGN(8);
__hcmds = .;
- *(SORT(.rodata.hcmds*))
+ *(.rodata.hcmds)
__hcmds_end = .;
. = ALIGN(4);
diff --git a/core/minute-ia/ec.lds.S b/core/minute-ia/ec.lds.S
index 63db8f1e2a..2bdcc91e25 100644
--- a/core/minute-ia/ec.lds.S
+++ b/core/minute-ia/ec.lds.S
@@ -41,7 +41,7 @@ SECTIONS
. = ALIGN(4);
__hcmds = .;
- KEEP(*(SORT(.rodata.hcmds*)))
+ KEEP(*(.rodata.hcmds))
__hcmds_end = .;
. = ALIGN(4);
diff --git a/core/nds32/ec.lds.S b/core/nds32/ec.lds.S
index a888654781..43b905c899 100644
--- a/core/nds32/ec.lds.S
+++ b/core/nds32/ec.lds.S
@@ -65,7 +65,7 @@ SECTIONS
. = ALIGN(4);
__hcmds = .;
- KEEP(*(SORT(.rodata.hcmds*)))
+ KEEP(*(.rodata.hcmds))
__hcmds_end = .;
. = ALIGN(4);
diff --git a/include/config.h b/include/config.h
index c082f06d2c..b1655d1017 100644
--- a/include/config.h
+++ b/include/config.h
@@ -1166,12 +1166,6 @@
#undef CONFIG_HOST_COMMAND_STATUS
/*
- * The host commands are sorted in the .rodata.hcmds section so use the binary
- * search algorithm to match a command to its handler
- */
-#undef CONFIG_HOSTCMD_SECTION_SORTED
-
-/*
* Host command parameters and response are 32-bit aligned. This generates
* much more efficient code on ARM.
*/
diff --git a/include/ec_commands.h b/include/ec_commands.h
index 283ad2a7df..c7bc3c8b8e 100644
--- a/include/ec_commands.h
+++ b/include/ec_commands.h
@@ -792,9 +792,6 @@ struct __ec_align4 ec_host_response {
* Parameter/response length is implicit in the structs. Some underlying
* communication protocols (I2C, SPI) may add length or checksum headers, but
* those are implementation-dependent and not defined here.
- *
- * All commands MUST be #defined to be 4-digit hex values (e.g., 0x00ab,
- * not 0xab) for CONFIG_HOSTCMD_SECTION_SORTED to work.
*/
/*****************************************************************************/
@@ -804,7 +801,7 @@ struct __ec_align4 ec_host_response {
* Get protocol version, used to deal with non-backward compatible protocol
* changes.
*/
-#define EC_CMD_PROTO_VERSION 0x0000
+#define EC_CMD_PROTO_VERSION 0x00
struct __ec_align4 ec_response_proto_version {
uint32_t version;
@@ -814,7 +811,7 @@ struct __ec_align4 ec_response_proto_version {
* Hello. This is a simple command to test the EC is responsive to
* commands.
*/
-#define EC_CMD_HELLO 0x0001
+#define EC_CMD_HELLO 0x01
struct __ec_align4 ec_params_hello {
uint32_t in_data; /* Pass anything here */
@@ -825,7 +822,7 @@ struct __ec_align4 ec_response_hello {
};
/* Get version number */
-#define EC_CMD_GET_VERSION 0x0002
+#define EC_CMD_GET_VERSION 0x02
enum ec_current_image {
EC_IMAGE_UNKNOWN = 0,
@@ -842,7 +839,7 @@ struct __ec_align4 ec_response_get_version {
};
/* Read test */
-#define EC_CMD_READ_TEST 0x0003
+#define EC_CMD_READ_TEST 0x03
struct __ec_align4 ec_params_read_test {
uint32_t offset; /* Starting value for read buffer */
@@ -858,10 +855,10 @@ struct __ec_align4 ec_response_read_test {
*
* Response is null-terminated string.
*/
-#define EC_CMD_GET_BUILD_INFO 0x0004
+#define EC_CMD_GET_BUILD_INFO 0x04
/* Get chip info */
-#define EC_CMD_GET_CHIP_INFO 0x0005
+#define EC_CMD_GET_CHIP_INFO 0x05
struct __ec_align4 ec_response_get_chip_info {
/* Null-terminated strings */
@@ -871,7 +868,7 @@ struct __ec_align4 ec_response_get_chip_info {
};
/* Get board HW version */
-#define EC_CMD_GET_BOARD_VERSION 0x0006
+#define EC_CMD_GET_BOARD_VERSION 0x06
struct __ec_align2 ec_response_board_version {
uint16_t board_version; /* A monotonously incrementing number. */
@@ -885,7 +882,7 @@ struct __ec_align2 ec_response_board_version {
*
* Response is params.size bytes of data.
*/
-#define EC_CMD_READ_MEMMAP 0x0007
+#define EC_CMD_READ_MEMMAP 0x07
struct __ec_align1 ec_params_read_memmap {
uint8_t offset; /* Offset in memmap (EC_MEMMAP_*) */
@@ -893,7 +890,7 @@ struct __ec_align1 ec_params_read_memmap {
};
/* Read versions supported for a command */
-#define EC_CMD_GET_CMD_VERSIONS 0x0008
+#define EC_CMD_GET_CMD_VERSIONS 0x08
struct __ec_align1 ec_params_get_cmd_versions {
uint8_t cmd; /* Command to check */
@@ -918,7 +915,7 @@ struct __ec_align4 ec_response_get_cmd_versions {
* lpc must read the status from the command register. Attempting this on
* lpc will overwrite the args/parameter space and corrupt its data.
*/
-#define EC_CMD_GET_COMMS_STATUS 0x0009
+#define EC_CMD_GET_COMMS_STATUS 0x09
/* Avoid using ec_status which is for return values */
enum ec_comms_status {
@@ -930,7 +927,7 @@ struct __ec_align4 ec_response_get_comms_status {
};
/* Fake a variety of responses, purely for testing purposes. */
-#define EC_CMD_TEST_PROTOCOL 0x000a
+#define EC_CMD_TEST_PROTOCOL 0x0a
/* Tell the EC what to send back to us. */
struct __ec_align4 ec_params_test_protocol {
@@ -945,7 +942,7 @@ struct __ec_align4 ec_response_test_protocol {
};
/* Get protocol information */
-#define EC_CMD_GET_PROTOCOL_INFO 0x000b
+#define EC_CMD_GET_PROTOCOL_INFO 0x0b
/* Flags for ec_response_get_protocol_info.flags */
/* EC_RES_IN_PROGRESS may be returned if a command is slow */
@@ -989,11 +986,11 @@ struct __ec_align4 ec_response_get_set_value {
};
/* More than one command can use these structs to get/set parameters. */
-#define EC_CMD_GSV_PAUSE_IN_S5 0x000c
+#define EC_CMD_GSV_PAUSE_IN_S5 0x0c
/*****************************************************************************/
/* List the features supported by the firmware */
-#define EC_CMD_GET_FEATURES 0x000d
+#define EC_CMD_GET_FEATURES 0x0d
/* Supported features */
enum ec_feature_code {
@@ -1086,7 +1083,7 @@ struct __ec_align4 ec_response_get_features {
/* Flash commands */
/* Get flash info */
-#define EC_CMD_FLASH_INFO 0x0010
+#define EC_CMD_FLASH_INFO 0x10
/* Version 0 returns these fields */
struct __ec_align4 ec_response_flash_info {
@@ -1146,7 +1143,7 @@ struct __ec_align4 ec_response_flash_info_1 {
*
* Response is params.size bytes of data.
*/
-#define EC_CMD_FLASH_READ 0x0011
+#define EC_CMD_FLASH_READ 0x11
struct __ec_align4 ec_params_flash_read {
uint32_t offset; /* Byte offset to read */
@@ -1154,7 +1151,7 @@ struct __ec_align4 ec_params_flash_read {
};
/* Write flash */
-#define EC_CMD_FLASH_WRITE 0x0012
+#define EC_CMD_FLASH_WRITE 0x12
#define EC_VER_FLASH_WRITE 1
/* Version 0 of the flash command supported only 64 bytes of data */
@@ -1167,7 +1164,7 @@ struct __ec_align4 ec_params_flash_write {
};
/* Erase flash */
-#define EC_CMD_FLASH_ERASE 0x0013
+#define EC_CMD_FLASH_ERASE 0x13
struct __ec_align4 ec_params_flash_erase {
uint32_t offset; /* Byte offset to erase */
@@ -1184,7 +1181,7 @@ struct __ec_align4 ec_params_flash_erase {
*
* If mask=0, simply returns the current flags state.
*/
-#define EC_CMD_FLASH_PROTECT 0x0015
+#define EC_CMD_FLASH_PROTECT 0x15
#define EC_VER_FLASH_PROTECT 1 /* Command version 1 */
/* Flags for flash protection */
@@ -1234,7 +1231,7 @@ struct __ec_align4 ec_response_flash_protect {
*/
/* Get the region offset/size */
-#define EC_CMD_FLASH_REGION_INFO 0x0016
+#define EC_CMD_FLASH_REGION_INFO 0x16
#define EC_VER_FLASH_REGION_INFO 1
enum ec_flash_region {
@@ -1261,7 +1258,7 @@ struct __ec_align4 ec_response_flash_region_info {
};
/* Read/write VbNvContext */
-#define EC_CMD_VBNV_CONTEXT 0x0017
+#define EC_CMD_VBNV_CONTEXT 0x17
#define EC_VER_VBNV_CONTEXT 1
#define EC_VBNV_BLOCK_SIZE 16
@@ -1281,7 +1278,7 @@ struct __ec_align4 ec_response_vbnvcontext {
/* Get SPI flash information */
-#define EC_CMD_FLASH_SPI_INFO 0x0018
+#define EC_CMD_FLASH_SPI_INFO 0x18
struct __ec_align1 ec_response_flash_spi_info {
/* JEDEC info from command 0x9F (manufacturer, memory type, size) */
@@ -1301,14 +1298,14 @@ struct __ec_align1 ec_response_flash_spi_info {
/* PWM commands */
/* Get fan target RPM */
-#define EC_CMD_PWM_GET_FAN_TARGET_RPM 0x0020
+#define EC_CMD_PWM_GET_FAN_TARGET_RPM 0x20
struct __ec_align4 ec_response_pwm_get_fan_rpm {
uint32_t rpm;
};
/* Set target fan RPM */
-#define EC_CMD_PWM_SET_FAN_TARGET_RPM 0x0021
+#define EC_CMD_PWM_SET_FAN_TARGET_RPM 0x21
/* Version 0 of input params */
struct __ec_align4 ec_params_pwm_set_fan_target_rpm_v0 {
@@ -1323,7 +1320,7 @@ struct __ec_align_size1 ec_params_pwm_set_fan_target_rpm_v1 {
/* Get keyboard backlight */
/* OBSOLETE - Use EC_CMD_PWM_SET_DUTY */
-#define EC_CMD_PWM_GET_KEYBOARD_BACKLIGHT 0x0022
+#define EC_CMD_PWM_GET_KEYBOARD_BACKLIGHT 0x22
struct __ec_align1 ec_response_pwm_get_keyboard_backlight {
uint8_t percent;
@@ -1332,14 +1329,14 @@ struct __ec_align1 ec_response_pwm_get_keyboard_backlight {
/* Set keyboard backlight */
/* OBSOLETE - Use EC_CMD_PWM_SET_DUTY */
-#define EC_CMD_PWM_SET_KEYBOARD_BACKLIGHT 0x0023
+#define EC_CMD_PWM_SET_KEYBOARD_BACKLIGHT 0x23
struct __ec_align1 ec_params_pwm_set_keyboard_backlight {
uint8_t percent;
};
/* Set target fan PWM duty cycle */
-#define EC_CMD_PWM_SET_FAN_DUTY 0x0024
+#define EC_CMD_PWM_SET_FAN_DUTY 0x24
/* Version 0 of input params */
struct __ec_align4 ec_params_pwm_set_fan_duty_v0 {
@@ -1352,7 +1349,7 @@ struct __ec_align_size1 ec_params_pwm_set_fan_duty_v1 {
uint8_t fan_idx;
};
-#define EC_CMD_PWM_SET_DUTY 0x0025
+#define EC_CMD_PWM_SET_DUTY 0x25
/* 16 bit duty cycle, 0xffff = 100% */
#define EC_PWM_MAX_DUTY 0xffff
@@ -1372,7 +1369,7 @@ struct __ec_align4 ec_params_pwm_set_duty {
uint8_t index; /* Type-specific index, or 0 if unique */
};
-#define EC_CMD_PWM_GET_DUTY 0x0026
+#define EC_CMD_PWM_GET_DUTY 0x26
struct __ec_align1 ec_params_pwm_get_duty {
uint8_t pwm_type; /* ec_pwm_type */
@@ -1390,7 +1387,7 @@ struct __ec_align2 ec_response_pwm_get_duty {
* into a subcommand. We'll make separate structs for subcommands with
* different input args, so that we know how much to expect.
*/
-#define EC_CMD_LIGHTBAR_CMD 0x0028
+#define EC_CMD_LIGHTBAR_CMD 0x28
struct __ec_todo_unpacked rgb_s {
uint8_t r, g, b;
@@ -1690,7 +1687,7 @@ enum lightbar_command {
/*****************************************************************************/
/* LED control commands */
-#define EC_CMD_LED_CONTROL 0x0029
+#define EC_CMD_LED_CONTROL 0x29
enum ec_led_id {
/* LED to indicate battery state of charge */
@@ -1748,7 +1745,7 @@ struct __ec_align1 ec_response_led_control {
*/
/* Verified boot hash command */
-#define EC_CMD_VBOOT_HASH 0x002a
+#define EC_CMD_VBOOT_HASH 0x2a
struct __ec_align4 ec_params_vboot_hash {
uint8_t cmd; /* enum ec_vboot_hash_cmd */
@@ -1800,7 +1797,7 @@ enum ec_vboot_hash_status {
* Motion sense commands. We'll make separate structs for sub-commands with
* different input args, so that we know how much to expect.
*/
-#define EC_CMD_MOTION_SENSE_CMD 0x002b
+#define EC_CMD_MOTION_SENSE_CMD 0x2b
/* Motion sense commands */
enum motionsense_command {
@@ -2212,7 +2209,7 @@ struct __ec_todo_packed ec_response_motion_sense {
/* Force lid open command */
/* Make lid event always open */
-#define EC_CMD_FORCE_LID_OPEN 0x002c
+#define EC_CMD_FORCE_LID_OPEN 0x2c
struct __ec_align1 ec_params_force_lid_open {
uint8_t enabled;
@@ -2222,7 +2219,7 @@ struct __ec_align1 ec_params_force_lid_open {
/* USB charging control commands */
/* Set USB port charging mode */
-#define EC_CMD_USB_CHARGE_SET_MODE 0x0030
+#define EC_CMD_USB_CHARGE_SET_MODE 0x30
struct __ec_align1 ec_params_usb_charge_set_mode {
uint8_t usb_port_id;
@@ -2236,7 +2233,7 @@ struct __ec_align1 ec_params_usb_charge_set_mode {
#define EC_PSTORE_SIZE_MAX 64
/* Get persistent storage info */
-#define EC_CMD_PSTORE_INFO 0x0040
+#define EC_CMD_PSTORE_INFO 0x40
struct __ec_align4 ec_response_pstore_info {
/* Persistent storage size, in bytes */
@@ -2250,7 +2247,7 @@ struct __ec_align4 ec_response_pstore_info {
*
* Response is params.size bytes of data.
*/
-#define EC_CMD_PSTORE_READ 0x0041
+#define EC_CMD_PSTORE_READ 0x41
struct __ec_align4 ec_params_pstore_read {
uint32_t offset; /* Byte offset to read */
@@ -2258,7 +2255,7 @@ struct __ec_align4 ec_params_pstore_read {
};
/* Write persistent storage */
-#define EC_CMD_PSTORE_WRITE 0x0042
+#define EC_CMD_PSTORE_WRITE 0x42
struct __ec_align4 ec_params_pstore_write {
uint32_t offset; /* Byte offset to write */
@@ -2279,12 +2276,12 @@ struct __ec_align4 ec_response_rtc {
};
/* These use ec_response_rtc */
-#define EC_CMD_RTC_GET_VALUE 0x0044
-#define EC_CMD_RTC_GET_ALARM 0x0045
+#define EC_CMD_RTC_GET_VALUE 0x44
+#define EC_CMD_RTC_GET_ALARM 0x45
/* These all use ec_params_rtc */
-#define EC_CMD_RTC_SET_VALUE 0x0046
-#define EC_CMD_RTC_SET_ALARM 0x0047
+#define EC_CMD_RTC_SET_VALUE 0x46
+#define EC_CMD_RTC_SET_ALARM 0x47
/* Pass as time param to SET_ALARM to clear the current alarm */
#define EC_RTC_ALARM_CLEAR 0
@@ -2296,8 +2293,8 @@ struct __ec_align4 ec_response_rtc {
#define EC_PORT80_SIZE_MAX 32
/* Get last port80 code from previous boot */
-#define EC_CMD_PORT80_LAST_BOOT 0x0048
-#define EC_CMD_PORT80_READ 0x0048
+#define EC_CMD_PORT80_LAST_BOOT 0x48
+#define EC_CMD_PORT80_READ 0x48
enum ec_port80_subcmd {
EC_PORT80_GET_INFO = 0,
@@ -2341,7 +2338,7 @@ struct __ec_align2 ec_response_port80_last_boot {
#define EC_VSTORE_SLOT_MAX 32
/* Get persistent storage info */
-#define EC_CMD_VSTORE_INFO 0x0049
+#define EC_CMD_VSTORE_INFO 0x49
struct __ec_align_size1 ec_response_vstore_info {
/* Indicates which slots are locked */
uint32_t slot_locked;
@@ -2354,7 +2351,7 @@ struct __ec_align_size1 ec_response_vstore_info {
*
* Response is EC_VSTORE_SLOT_SIZE bytes of data.
*/
-#define EC_CMD_VSTORE_READ 0x004a
+#define EC_CMD_VSTORE_READ 0x4a
struct __ec_align1 ec_params_vstore_read {
uint8_t slot; /* Slot to read from */
@@ -2367,7 +2364,7 @@ struct __ec_align1 ec_response_vstore_read {
/*
* Write temporary secure storage and lock it.
*/
-#define EC_CMD_VSTORE_WRITE 0x004b
+#define EC_CMD_VSTORE_WRITE 0x4b
struct __ec_align1 ec_params_vstore_write {
uint8_t slot; /* Slot to write to */
@@ -2381,8 +2378,8 @@ struct __ec_align1 ec_params_vstore_write {
* Version 1 separates the CPU thermal limits from the fan control.
*/
-#define EC_CMD_THERMAL_SET_THRESHOLD 0x0050
-#define EC_CMD_THERMAL_GET_THRESHOLD 0x0051
+#define EC_CMD_THERMAL_SET_THRESHOLD 0x50
+#define EC_CMD_THERMAL_GET_THRESHOLD 0x51
/* The version 0 structs are opaque. You have to know what they are for
* the get/set commands to make any sense.
@@ -2445,7 +2442,7 @@ struct __ec_align4 ec_params_thermal_set_threshold_v1 {
/****************************************************************************/
/* Toggle automatic fan control */
-#define EC_CMD_THERMAL_AUTO_FAN_CTRL 0x0052
+#define EC_CMD_THERMAL_AUTO_FAN_CTRL 0x52
/* Version 1 of input params */
struct __ec_align1 ec_params_auto_fan_ctrl_v1 {
@@ -2453,8 +2450,8 @@ struct __ec_align1 ec_params_auto_fan_ctrl_v1 {
};
/* Get/Set TMP006 calibration data */
-#define EC_CMD_TMP006_GET_CALIBRATION 0x0053
-#define EC_CMD_TMP006_SET_CALIBRATION 0x0054
+#define EC_CMD_TMP006_GET_CALIBRATION 0x53
+#define EC_CMD_TMP006_SET_CALIBRATION 0x54
/*
* The original TMP006 calibration only needed four params, but now we need
@@ -2505,7 +2502,7 @@ struct __ec_align4 ec_params_tmp006_set_calibration_v1 {
/* Read raw TMP006 data */
-#define EC_CMD_TMP006_GET_RAW 0x0055
+#define EC_CMD_TMP006_GET_RAW 0x55
struct __ec_align1 ec_params_tmp006_get_raw {
uint8_t index;
@@ -2529,12 +2526,12 @@ struct __ec_align4 ec_response_tmp006_get_raw {
* to obtain the instantaneous state, use EC_CMD_MKBP_INFO with the type
* EC_MKBP_INFO_CURRENT and event EC_MKBP_EVENT_KEY_MATRIX.
*/
-#define EC_CMD_MKBP_STATE 0x0060
+#define EC_CMD_MKBP_STATE 0x60
/*
* Provide information about various MKBP things. See enum ec_mkbp_info_type.
*/
-#define EC_CMD_MKBP_INFO 0x0061
+#define EC_CMD_MKBP_INFO 0x61
struct __ec_align_size1 ec_response_mkbp_info {
uint32_t rows;
@@ -2588,7 +2585,7 @@ enum ec_mkbp_info_type {
};
/* Simulate key press */
-#define EC_CMD_MKBP_SIMULATE_KEY 0x0062
+#define EC_CMD_MKBP_SIMULATE_KEY 0x62
struct __ec_align1 ec_params_mkbp_simulate_key {
uint8_t col;
@@ -2597,8 +2594,8 @@ struct __ec_align1 ec_params_mkbp_simulate_key {
};
/* Configure keyboard scanning */
-#define EC_CMD_MKBP_SET_CONFIG 0x0064
-#define EC_CMD_MKBP_GET_CONFIG 0x0065
+#define EC_CMD_MKBP_SET_CONFIG 0x64
+#define EC_CMD_MKBP_GET_CONFIG 0x65
/* flags */
enum mkbp_config_flags {
@@ -2651,7 +2648,7 @@ struct __ec_align_size1 ec_response_mkbp_get_config {
};
/* Run the key scan emulation */
-#define EC_CMD_KEYSCAN_SEQ_CTRL 0x0066
+#define EC_CMD_KEYSCAN_SEQ_CTRL 0x66
enum ec_keyscan_seq_cmd {
EC_KEYSCAN_SEQ_STATUS = 0, /* Get status information */
@@ -2712,7 +2709,7 @@ struct __ec_todo_packed ec_result_keyscan_seq_ctrl {
*
* Returns EC_RES_UNAVAILABLE if there is no event pending.
*/
-#define EC_CMD_GET_NEXT_EVENT 0x0067
+#define EC_CMD_GET_NEXT_EVENT 0x67
enum ec_mkbp_event {
/* Keyboard matrix changed. The event data is the new matrix state. */
@@ -2768,7 +2765,7 @@ struct __ec_align1 ec_response_get_next_event {
#define EC_MKBP_TABLET_MODE 1
/* Run keyboard factory test scanning */
-#define EC_CMD_KEYBOARD_FACTORY_TEST 0x0068
+#define EC_CMD_KEYBOARD_FACTORY_TEST 0x68
struct __ec_align2 ec_response_keyboard_factory_test {
uint16_t shorted; /* Keyboard pins are shorted */
@@ -2778,7 +2775,7 @@ struct __ec_align2 ec_response_keyboard_factory_test {
/* Temperature sensor commands */
/* Read temperature sensor info */
-#define EC_CMD_TEMP_SENSOR_GET_INFO 0x0070
+#define EC_CMD_TEMP_SENSOR_GET_INFO 0x70
struct __ec_align1 ec_params_temp_sensor_get_info {
uint8_t id;
@@ -2813,30 +2810,30 @@ struct __ec_align4 ec_response_host_event_mask {
};
/* These all use ec_response_host_event_mask */
-#define EC_CMD_HOST_EVENT_GET_B 0x0087
-#define EC_CMD_HOST_EVENT_GET_SMI_MASK 0x0088
-#define EC_CMD_HOST_EVENT_GET_SCI_MASK 0x0089
-#define EC_CMD_HOST_EVENT_GET_WAKE_MASK 0x008d
+#define EC_CMD_HOST_EVENT_GET_B 0x87
+#define EC_CMD_HOST_EVENT_GET_SMI_MASK 0x88
+#define EC_CMD_HOST_EVENT_GET_SCI_MASK 0x89
+#define EC_CMD_HOST_EVENT_GET_WAKE_MASK 0x8d
/* These all use ec_params_host_event_mask */
-#define EC_CMD_HOST_EVENT_SET_SMI_MASK 0x008a
-#define EC_CMD_HOST_EVENT_SET_SCI_MASK 0x008b
-#define EC_CMD_HOST_EVENT_CLEAR 0x008c
-#define EC_CMD_HOST_EVENT_SET_WAKE_MASK 0x008e
-#define EC_CMD_HOST_EVENT_CLEAR_B 0x008f
+#define EC_CMD_HOST_EVENT_SET_SMI_MASK 0x8a
+#define EC_CMD_HOST_EVENT_SET_SCI_MASK 0x8b
+#define EC_CMD_HOST_EVENT_CLEAR 0x8c
+#define EC_CMD_HOST_EVENT_SET_WAKE_MASK 0x8e
+#define EC_CMD_HOST_EVENT_CLEAR_B 0x8f
/*****************************************************************************/
/* Switch commands */
/* Enable/disable LCD backlight */
-#define EC_CMD_SWITCH_ENABLE_BKLIGHT 0x0090
+#define EC_CMD_SWITCH_ENABLE_BKLIGHT 0x90
struct __ec_align1 ec_params_switch_enable_backlight {
uint8_t enabled;
};
/* Enable/disable WLAN/Bluetooth */
-#define EC_CMD_SWITCH_ENABLE_WIRELESS 0x0091
+#define EC_CMD_SWITCH_ENABLE_WIRELESS 0x91
#define EC_VER_SWITCH_ENABLE_WIRELESS 1
/* Version 0 params; no response */
@@ -2876,7 +2873,7 @@ struct __ec_align1 ec_response_switch_enable_wireless_v1 {
/* GPIO commands. Only available on EC if write protect has been disabled. */
/* Set GPIO output value */
-#define EC_CMD_GPIO_SET 0x0092
+#define EC_CMD_GPIO_SET 0x92
struct __ec_align1 ec_params_gpio_set {
char name[32];
@@ -2884,7 +2881,7 @@ struct __ec_align1 ec_params_gpio_set {
};
/* Get GPIO value */
-#define EC_CMD_GPIO_GET 0x0093
+#define EC_CMD_GPIO_GET 0x93
/* Version 0 of input params and response */
struct __ec_align1 ec_params_gpio_get {
@@ -2938,7 +2935,7 @@ enum gpio_get_subcmd {
*/
/* Read I2C bus */
-#define EC_CMD_I2C_READ 0x0094
+#define EC_CMD_I2C_READ 0x94
struct __ec_align_size1 ec_params_i2c_read {
uint16_t addr; /* 8-bit address (7-bit shifted << 1) */
@@ -2952,7 +2949,7 @@ struct __ec_align2 ec_response_i2c_read {
};
/* Write I2C bus */
-#define EC_CMD_I2C_WRITE 0x0095
+#define EC_CMD_I2C_WRITE 0x95
struct __ec_align_size1 ec_params_i2c_write {
uint16_t data;
@@ -2968,7 +2965,7 @@ struct __ec_align_size1 ec_params_i2c_write {
/* Force charge state machine to stop charging the battery or force it to
* discharge the battery.
*/
-#define EC_CMD_CHARGE_CONTROL 0x0096
+#define EC_CMD_CHARGE_CONTROL 0x96
#define EC_VER_CHARGE_CONTROL 1
enum ec_charge_control_mode {
@@ -2985,7 +2982,7 @@ struct __ec_align4 ec_params_charge_control {
/* Console commands. Only available when flash write protect is unlocked. */
/* Snapshot console output buffer for use by EC_CMD_CONSOLE_READ. */
-#define EC_CMD_CONSOLE_SNAPSHOT 0x0097
+#define EC_CMD_CONSOLE_SNAPSHOT 0x97
/*
* Read data from the saved snapshot. If the subcmd parameter is
@@ -2999,7 +2996,7 @@ struct __ec_align4 ec_params_charge_control {
* Response is null-terminated string. Empty string, if there is no more
* remaining output.
*/
-#define EC_CMD_CONSOLE_READ 0x0098
+#define EC_CMD_CONSOLE_READ 0x98
enum ec_console_read_subcmd {
CONSOLE_READ_NEXT = 0,
@@ -3019,7 +3016,7 @@ struct __ec_align1 ec_params_console_read_v1 {
* EC_RES_SUCCESS if the command was successful.
* EC_RES_ERROR if the cut off command failed.
*/
-#define EC_CMD_BATTERY_CUT_OFF 0x0099
+#define EC_CMD_BATTERY_CUT_OFF 0x99
#define EC_BATTERY_CUTOFF_FLAG_AT_SHUTDOWN (1 << 0)
@@ -3033,7 +3030,7 @@ struct __ec_align1 ec_params_battery_cutoff {
/*
* Switch USB mux or return to automatic switching.
*/
-#define EC_CMD_USB_MUX 0x009a
+#define EC_CMD_USB_MUX 0x9a
struct __ec_align1 ec_params_usb_mux {
uint8_t mux;
@@ -3050,7 +3047,7 @@ enum ec_ldo_state {
/*
* Switch on/off a LDO.
*/
-#define EC_CMD_LDO_SET 0x009b
+#define EC_CMD_LDO_SET 0x9b
struct __ec_align1 ec_params_ldo_set {
uint8_t index;
@@ -3060,7 +3057,7 @@ struct __ec_align1 ec_params_ldo_set {
/*
* Get LDO state.
*/
-#define EC_CMD_LDO_GET 0x009c
+#define EC_CMD_LDO_GET 0x9c
struct __ec_align1 ec_params_ldo_get {
uint8_t index;
@@ -3076,7 +3073,7 @@ struct __ec_align1 ec_response_ldo_get {
/*
* Get power info.
*/
-#define EC_CMD_POWER_INFO 0x009d
+#define EC_CMD_POWER_INFO 0x9d
struct __ec_align4 ec_response_power_info {
uint32_t usb_dev_type;
@@ -3089,7 +3086,7 @@ struct __ec_align4 ec_response_power_info {
/*****************************************************************************/
/* I2C passthru command */
-#define EC_CMD_I2C_PASSTHRU 0x009e
+#define EC_CMD_I2C_PASSTHRU 0x9e
/* Read data; if not present, message is a write */
#define EC_I2C_FLAG_READ (1 << 15)
@@ -3124,7 +3121,7 @@ struct __ec_align1 ec_response_i2c_passthru {
/*****************************************************************************/
/* Power button hang detect */
-#define EC_CMD_HANG_DETECT 0x009f
+#define EC_CMD_HANG_DETECT 0x9f
/* Reasons to start hang detection timer */
/* Power button pressed */
@@ -3183,7 +3180,7 @@ struct __ec_align4 ec_params_hang_detect {
* This is the single catch-all host command to exchange data regarding the
* charge state machine (v2 and up).
*/
-#define EC_CMD_CHARGE_STATE 0x00a0
+#define EC_CMD_CHARGE_STATE 0xa0
/* Subcommands for this host command */
enum charge_state_command {
@@ -3259,7 +3256,7 @@ struct __ec_align4 ec_response_charge_state {
/*
* Set maximum battery charging current.
*/
-#define EC_CMD_CHARGE_CURRENT_LIMIT 0x00a1
+#define EC_CMD_CHARGE_CURRENT_LIMIT 0xa1
struct __ec_align4 ec_params_current_limit {
uint32_t limit; /* in mA */
@@ -3268,7 +3265,7 @@ struct __ec_align4 ec_params_current_limit {
/*
* Set maximum external voltage / current.
*/
-#define EC_CMD_EXTERNAL_POWER_LIMIT 0x00a2
+#define EC_CMD_EXTERNAL_POWER_LIMIT 0xa2
/* Command v0 is used only on Spring and is obsolete + unsupported */
struct __ec_align2 ec_params_external_power_limit_v1 {
@@ -3282,7 +3279,7 @@ struct __ec_align2 ec_params_external_power_limit_v1 {
/* Hibernate/Deep Sleep Commands */
/* Set the delay before going into hibernation. */
-#define EC_CMD_HIBERNATION_DELAY 0x00a8
+#define EC_CMD_HIBERNATION_DELAY 0xa8
struct __ec_align4 ec_params_hibernation_delay {
/*
@@ -3313,7 +3310,7 @@ struct __ec_align4 ec_response_hibernation_delay {
};
/* Inform the EC when entering a sleep state */
-#define EC_CMD_HOST_SLEEP_EVENT 0x00a9
+#define EC_CMD_HOST_SLEEP_EVENT 0xa9
enum host_sleep_event {
HOST_SLEEP_EVENT_S3_SUSPEND = 1,
@@ -3330,14 +3327,14 @@ struct __ec_align1 ec_params_host_sleep_event {
/* Smart battery pass-through */
/* Get / Set 16-bit smart battery registers */
-#define EC_CMD_SB_READ_WORD 0x00b0
-#define EC_CMD_SB_WRITE_WORD 0x00b1
+#define EC_CMD_SB_READ_WORD 0xb0
+#define EC_CMD_SB_WRITE_WORD 0xb1
/* Get / Set string smart battery parameters
* formatted as SMBUS "block".
*/
-#define EC_CMD_SB_READ_BLOCK 0x00b2
-#define EC_CMD_SB_WRITE_BLOCK 0x00b3
+#define EC_CMD_SB_READ_BLOCK 0xb2
+#define EC_CMD_SB_WRITE_BLOCK 0xb3
struct __ec_align1 ec_params_sb_rd {
uint8_t reg;
@@ -3370,7 +3367,7 @@ struct __ec_align1 ec_params_sb_wr_block {
* requested value.
*/
-#define EC_CMD_BATTERY_VENDOR_PARAM 0x00b4
+#define EC_CMD_BATTERY_VENDOR_PARAM 0xb4
enum ec_battery_vendor_param_mode {
BATTERY_VENDOR_PARAM_MODE_GET = 0,
@@ -3391,7 +3388,7 @@ struct __ec_align4 ec_response_battery_vendor_param {
/*
* Smart Battery Firmware Update Commands
*/
-#define EC_CMD_SB_FW_UPDATE 0x00b5
+#define EC_CMD_SB_FW_UPDATE 0xb5
enum ec_sb_fw_update_subcmd {
EC_SB_FW_UPDATE_PREPARE = 0x0,
@@ -3452,7 +3449,7 @@ struct __ec_align1 ec_response_sb_fw_update {
* Default mode is VBOOT_MODE_NORMAL if EC did not receive this command.
* Valid Modes are: normal, developer, and recovery.
*/
-#define EC_CMD_ENTERING_MODE 0x00b6
+#define EC_CMD_ENTERING_MODE 0xb6
struct __ec_align4 ec_params_entering_mode {
int vboot_mode;
@@ -3467,7 +3464,7 @@ struct __ec_align4 ec_params_entering_mode {
* I2C passthru protection command: Protects I2C tunnels against access on
* certain addresses (board-specific).
*/
-#define EC_CMD_I2C_PASSTHRU_PROTECT 0x00b7
+#define EC_CMD_I2C_PASSTHRU_PROTECT 0xb7
enum ec_i2c_passthru_protect_subcmd {
EC_CMD_I2C_PASSTHRU_PROTECT_STATUS = 0x0,
@@ -3490,7 +3487,7 @@ struct __ec_align1 ec_response_i2c_passthru_protect {
* TODO(crosbug.com/p/23747): This is a confusing name, since it doesn't
* necessarily reboot the EC. Rename to "image" or something similar?
*/
-#define EC_CMD_REBOOT_EC 0x00d2
+#define EC_CMD_REBOOT_EC 0xd2
/* Command */
enum ec_reboot_cmd {
@@ -3518,7 +3515,7 @@ struct __ec_align1 ec_params_reboot_ec {
* Returns variable-length platform-dependent panic information. See panic.h
* for details.
*/
-#define EC_CMD_GET_PANIC_INFO 0x00d3
+#define EC_CMD_GET_PANIC_INFO 0xd3
/*****************************************************************************/
/*
@@ -3537,7 +3534,7 @@ struct __ec_align1 ec_params_reboot_ec {
*
* Use EC_CMD_REBOOT_EC to reboot the EC more politely.
*/
-#define EC_CMD_REBOOT 0x00d1 /* Think "die" */
+#define EC_CMD_REBOOT 0xd1 /* Think "die" */
/*
* Resend last response (not supported on LPC).
@@ -3546,7 +3543,7 @@ struct __ec_align1 ec_params_reboot_ec {
* there was no previous command, or the previous command's response was too
* big to save.
*/
-#define EC_CMD_RESEND_RESPONSE 0x00db
+#define EC_CMD_RESEND_RESPONSE 0xdb
/*
* This header byte on a command indicate version 0. Any header byte less
@@ -3558,7 +3555,7 @@ struct __ec_align1 ec_params_reboot_ec {
*
* The old EC interface must not use commands 0xdc or higher.
*/
-#define EC_CMD_VERSION0 0x00dc
+#define EC_CMD_VERSION0 0xdc
/*****************************************************************************/
/*
@@ -3568,7 +3565,7 @@ struct __ec_align1 ec_params_reboot_ec {
*/
/* EC to PD MCU exchange status command */
-#define EC_CMD_PD_EXCHANGE_STATUS 0x0100
+#define EC_CMD_PD_EXCHANGE_STATUS 0x100
#define EC_VER_PD_EXCHANGE_STATUS 2
enum pd_charge_state {
@@ -3605,7 +3602,7 @@ struct __ec_align_size1 ec_response_pd_status {
};
/* AP to PD MCU host event status command, cleared on read */
-#define EC_CMD_PD_HOST_EVENT_STATUS 0x0104
+#define EC_CMD_PD_HOST_EVENT_STATUS 0x104
/* PD MCU host event status bits */
#define PD_EVENT_UPDATE_DEVICE (1 << 0)
@@ -3617,7 +3614,7 @@ struct __ec_align4 ec_response_host_event_status {
};
/* Set USB type-C port role and muxes */
-#define EC_CMD_USB_PD_CONTROL 0x0101
+#define EC_CMD_USB_PD_CONTROL 0x101
enum usb_pd_control_role {
USB_PD_CTRL_ROLE_NO_CHANGE = 0,
@@ -3679,13 +3676,13 @@ struct __ec_align1 ec_response_usb_pd_control_v1 {
char state[32];
};
-#define EC_CMD_USB_PD_PORTS 0x0102
+#define EC_CMD_USB_PD_PORTS 0x102
struct __ec_align1 ec_response_usb_pd_ports {
uint8_t num_ports;
};
-#define EC_CMD_USB_PD_POWER_INFO 0x0103
+#define EC_CMD_USB_PD_POWER_INFO 0x103
#define PD_POWER_CHARGING_PORT 0xff
struct __ec_align1 ec_params_usb_pd_power_info {
@@ -3728,7 +3725,7 @@ struct __ec_align4 ec_response_usb_pd_power_info {
};
/* Write USB-PD device FW */
-#define EC_CMD_USB_PD_FW_UPDATE 0x0110
+#define EC_CMD_USB_PD_FW_UPDATE 0x110
enum usb_pd_fw_update_cmds {
USB_PD_FW_REBOOT,
@@ -3746,7 +3743,7 @@ struct __ec_align4 ec_params_usb_pd_fw_update {
};
/* Write USB-PD Accessory RW_HASH table entry */
-#define EC_CMD_USB_PD_RW_HASH_ENTRY 0x0111
+#define EC_CMD_USB_PD_RW_HASH_ENTRY 0x111
/* RW hash is first 20 bytes of SHA-256 of RW section */
#define PD_RW_HASH_SIZE 20
struct __ec_align1 ec_params_usb_pd_rw_hash_entry {
@@ -3759,14 +3756,14 @@ struct __ec_align1 ec_params_usb_pd_rw_hash_entry {
};
/* Read USB-PD Accessory info */
-#define EC_CMD_USB_PD_DEV_INFO 0x0112
+#define EC_CMD_USB_PD_DEV_INFO 0x112
struct __ec_align1 ec_params_usb_pd_info_request {
uint8_t port;
};
/* Read USB-PD Device discovery info */
-#define EC_CMD_USB_PD_DISCOVERY 0x0113
+#define EC_CMD_USB_PD_DISCOVERY 0x113
struct __ec_align_size1 ec_params_usb_pd_discovery_entry {
uint16_t vid; /* USB-IF VID */
uint16_t pid; /* USB-IF PID */
@@ -3774,7 +3771,7 @@ struct __ec_align_size1 ec_params_usb_pd_discovery_entry {
};
/* Override default charge behavior */
-#define EC_CMD_PD_CHARGE_PORT_OVERRIDE 0x0114
+#define EC_CMD_PD_CHARGE_PORT_OVERRIDE 0x114
/* Negative port parameters have special meaning */
enum usb_pd_override_ports {
@@ -3788,7 +3785,7 @@ struct __ec_align2 ec_params_charge_port_override {
};
/* Read (and delete) one entry of PD event log */
-#define EC_CMD_PD_GET_LOG_ENTRY 0x0115
+#define EC_CMD_PD_GET_LOG_ENTRY 0x115
struct __ec_align4 ec_response_pd_log {
uint32_t timestamp; /* relative timestamp in milliseconds */
@@ -3877,7 +3874,7 @@ struct __ec_align4 mcdp_info {
#define MCDP_FAMILY(family) ((family[0] << 8) | family[1])
/* Get/Set USB-PD Alternate mode info */
-#define EC_CMD_USB_PD_GET_AMODE 0x0116
+#define EC_CMD_USB_PD_GET_AMODE 0x116
struct __ec_align_size1 ec_params_usb_pd_get_mode_request {
uint16_t svid_idx; /* SVID index to get */
uint8_t port; /* port */
@@ -3889,7 +3886,7 @@ struct __ec_align4 ec_params_usb_pd_get_mode_response {
uint32_t vdo[6]; /* Mode VDOs */
};
-#define EC_CMD_USB_PD_SET_AMODE 0x0117
+#define EC_CMD_USB_PD_SET_AMODE 0x117
enum pd_mode_cmd {
PD_EXIT_MODE = 0,
@@ -3906,7 +3903,7 @@ struct __ec_align4 ec_params_usb_pd_set_mode_request {
};
/* Ask the PD MCU to record a log of a requested type */
-#define EC_CMD_PD_WRITE_LOG_ENTRY 0x0118
+#define EC_CMD_PD_WRITE_LOG_ENTRY 0x118
struct __ec_align1 ec_params_pd_write_log_entry {
uint8_t type; /* event type : see PD_EVENT_xx above */
@@ -3915,7 +3912,7 @@ struct __ec_align1 ec_params_pd_write_log_entry {
/* Control USB-PD chip */
-#define EC_CMD_PD_CONTROL 0x0119
+#define EC_CMD_PD_CONTROL 0x119
enum ec_pd_control_cmd {
PD_SUSPEND = 0, /* Suspend the PD chip (EC: stop talking to PD) */
@@ -3930,7 +3927,7 @@ struct __ec_align1 ec_params_pd_control {
};
/* Get info about USB-C SS muxes */
-#define EC_CMD_USB_PD_MUX_INFO 0x011a
+#define EC_CMD_USB_PD_MUX_INFO 0x11a
struct __ec_align1 ec_params_usb_pd_mux_info {
uint8_t port; /* USB-C port number */
@@ -3955,8 +3952,8 @@ struct __ec_align1 ec_response_usb_pd_mux_info {
/*
* Reserve a range of host commands for the CR51 firmware.
*/
-#define EC_CMD_CR51_BASE 0x0300
-#define EC_CMD_CR51_LAST 0x03FF
+#define EC_CMD_CR51_BASE 0x300
+#define EC_CMD_CR51_LAST 0x3FF
/*****************************************************************************/
/*
diff --git a/include/host_command.h b/include/host_command.h
index 52ea73ee53..720492158e 100644
--- a/include/host_command.h
+++ b/include/host_command.h
@@ -197,18 +197,13 @@ void host_packet_receive(struct host_packet *pkt);
/* Register a host command handler */
#ifdef HAS_TASK_HOSTCMD
-#define EXPAND(cmd) __host_cmd_(cmd)
-#define __host_cmd_(cmd) __host_cmd_##cmd
-#define EXPANDSTR(cmd) __host_cmd_str(cmd)
-#define __host_cmd_str(cmd) #cmd
-#define DECLARE_HOST_COMMAND(command, routine, version_mask) \
- const struct host_command __keep EXPAND(command) \
- __attribute__((section(".rodata.hcmds.__host_cmd_" \
- EXPANDSTR(command)))) \
+#define DECLARE_HOST_COMMAND(command, routine, version_mask) \
+ const struct host_command __keep __host_cmd_##command \
+ __attribute__((section(".rodata.hcmds"))) \
= {routine, command, version_mask}
#else
-#define DECLARE_HOST_COMMAND(command, routine, version_mask) \
- int (routine)(struct host_cmd_handler_args *args) \
+#define DECLARE_HOST_COMMAND(command, routine, version_mask) \
+ int (routine)(struct host_cmd_handler_args *args) \
__attribute__((unused))
#endif