diff options
author | Randall Spangler <rspangler@chromium.org> | 2012-06-29 10:22:13 -0700 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-06-29 15:01:41 -0700 |
commit | b51386f072a555a4162971b54ca304308f316cab (patch) | |
tree | f0c8f3a1ca2783ced91af13ff656375cb2ab196d | |
parent | 208023afd7e3e2e58dcf112cd464a52a727ad5f8 (diff) | |
download | chrome-ec-b51386f072a555a4162971b54ca304308f316cab.tar.gz |
Tidy ec command header file. Whitespace/comment changes only.
BUG=none
TEST=if it builds, it blends
Change-Id: I619c6ee45eda8e853190ea1267d9751d22afd33d
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/26453
-rw-r--r-- | include/ec_commands.h | 183 |
1 files changed, 127 insertions, 56 deletions
diff --git a/include/ec_commands.h b/include/ec_commands.h index dcbb98f74c..fe786cf036 100644 --- a/include/ec_commands.h +++ b/include/ec_commands.h @@ -92,16 +92,16 @@ #define EC_WIRELESS_SWITCH_WLAN 0x01 #define EC_WIRELESS_SWITCH_BLUETOOTH 0x02 -/* The offset of temperature value stored in mapped memory. - * This allows reporting a temperature range of - * 200K to 454K = -73C to 181C. +/* + * The offset of temperature value stored in mapped memory. This allows + * reporting a temperature range of 200K to 454K = -73C to 181C. */ #define EC_TEMP_SENSOR_OFFSET 200 /* - * This header file is used in coreboot both in C and ACPI code. - * The ACPI code is pre-processed to handle constants but the ASL - * compiler is unable to handle actual C code so keep it separate. + * This header file is used in coreboot both in C and ACPI code. The ACPI code + * is pre-processed to handle constants but the ASL compiler is unable to + * handle actual C code so keep it separate. */ #ifndef __ACPI__ @@ -116,8 +116,7 @@ #define EC_LPC_STATUS_PROCESSING 0x04 /* Last write to EC was a command, not data */ #define EC_LPC_STATUS_LAST_CMD 0x08 -/* EC is in burst mode. Chrome EC doesn't support this, so this bit is never - * set. */ +/* EC is in burst mode. Unsupported by Chrome EC, so this bit is never set */ #define EC_LPC_STATUS_BURST_MODE 0x10 /* SCI event is pending (requesting SCI query) */ #define EC_LPC_STATUS_SCI_PENDING 0x20 @@ -126,8 +125,10 @@ /* (reserved) */ #define EC_LPC_STATUS_RESERVED 0x80 -/* EC is busy. This covers both the EC processing a command, and the host has - * written a new command but the EC hasn't picked it up yet. */ +/* + * EC is busy. This covers both the EC processing a command, and the host has + * written a new command but the EC hasn't picked it up yet. + */ #define EC_LPC_STATUS_BUSY_MASK \ (EC_LPC_STATUS_FROM_HOST | EC_LPC_STATUS_PROCESSING) @@ -141,12 +142,13 @@ enum ec_status { EC_RES_ACCESS_DENIED = 4, }; - -/* Host event codes. Note these are 1-based, not 0-based, because ACPI query +/* + * Host event codes. Note these are 1-based, not 0-based, because ACPI query * EC command uses code 0 to mean "no event pending". We explicitly specify * each value in the enum listing so they won't change if we delete/insert an * item or rearrange the list (it needs to be stable across platforms, not - * just within a single compiled instance). */ + * just within a single compiled instance). + */ enum host_event_code { EC_HOST_EVENT_LID_CLOSED = 1, EC_HOST_EVENT_LID_OPEN = 2, @@ -165,42 +167,54 @@ enum host_event_code { /* Host event mask */ #define EC_HOST_EVENT_MASK(event_code) (1 << ((event_code) - 1)) -/* Notes on commands: +/* + * Notes on commands: * - * Each command is an 8-byte command value. Commands which take - * params or return response data specify structs for that data. If - * no struct is specified, the command does not input or output data, - * respectively. */ + * Each command is an 8-byte command value. Commands which take params or + * return response data specify structs for that data. If no struct is + * specified, the command does not input or output data, respectively. + * 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. + */ /*****************************************************************************/ /* General / test commands */ -/* Get protocol version, used to deal with non-backward compatible protocol - * changes. */ +/* + * Get protocol version, used to deal with non-backward compatible protocol + * changes. + */ #define EC_CMD_PROTO_VERSION 0x00 + struct ec_response_proto_version { uint32_t version; } __packed; -/* Hello. This is a simple command to test the EC is responsive to - * commands. */ +/* + * Hello. This is a simple command to test the EC is responsive to + * commands. + */ #define EC_CMD_HELLO 0x01 + struct ec_params_hello { uint32_t in_data; /* Pass anything here */ } __packed; + struct ec_response_hello { uint32_t out_data; /* Output will be in_data + 0x01020304 */ } __packed; - /* Get version number */ #define EC_CMD_GET_VERSION 0x02 + enum ec_current_image { EC_IMAGE_UNKNOWN = 0, EC_IMAGE_RO, EC_IMAGE_RW_A, EC_IMAGE_RW_B }; + struct ec_response_get_version { /* Null-terminated version strings for RO, RW-A, RW-B */ char version_string_ro[32]; @@ -209,27 +223,28 @@ struct ec_response_get_version { uint32_t current_image; /* One of ec_current_image */ } __packed; - /* Read test */ #define EC_CMD_READ_TEST 0x03 + struct ec_params_read_test { uint32_t offset; /* Starting value for read buffer */ uint32_t size; /* Size to read in bytes */ } __packed; + struct ec_response_read_test { uint32_t data[32]; } __packed; - /* Get build information */ #define EC_CMD_GET_BUILD_INFO 0x04 + struct ec_response_get_build_info { char build_string[EC_PARAM_SIZE]; } __packed; - /* Get chip info */ #define EC_CMD_GET_CHIP_INFO 0x05 + struct ec_response_get_chip_info { /* Null-terminated strings */ char vendor[32]; @@ -239,6 +254,7 @@ struct ec_response_get_chip_info { /* Get board HW version. */ #define EC_CMD_GET_BOARD_VERSION 0x06 + struct ec_params_board_version { uint16_t board_version; /* A monotonously incrementing number. */ } __packed; @@ -249,41 +265,55 @@ struct ec_params_board_version { /* Get flash info */ #define EC_CMD_FLASH_INFO 0x10 + struct ec_response_flash_info { /* Usable flash size, in bytes */ uint32_t flash_size; - /* Write block size. Write offset and size must be a multiple - * of this. */ + /* + * Write block size. Write offset and size must be a multiple + * of this. + */ uint32_t write_block_size; - /* Erase block size. Erase offset and size must be a multiple - * of this. */ + /* + * Erase block size. Erase offset and size must be a multiple + * of this. + */ uint32_t erase_block_size; - /* Protection block size. Protection offset and size must be a - * multiple of this. */ + /* + * Protection block size. Protection offset and size must be a + * multiple of this. + */ uint32_t protect_block_size; } __packed; /* Read flash */ #define EC_CMD_FLASH_READ 0x11 + struct ec_params_flash_read { uint32_t offset; /* Byte offset to read */ uint32_t size; /* Size to read in bytes */ } __packed; + struct ec_response_flash_read { uint8_t data[EC_PARAM_SIZE]; } __packed; /* Write flash */ #define EC_CMD_FLASH_WRITE 0x12 + struct ec_params_flash_write { uint32_t offset; /* Byte offset to write */ uint32_t size; /* Size to write in bytes */ - uint8_t data[64]; /* Could really use EC_PARAM_SIZE - 8, but tidiest - * to use a power of 2 so writes stay aligned. */ + /* + * Data to write. Could really use EC_PARAM_SIZE - 8, but tidiest to + * use a power of 2 so writes stay aligned. + */ + uint8_t data[64]; } __packed; /* Erase flash */ #define EC_CMD_FLASH_ERASE 0x13 + struct ec_params_flash_erase { uint32_t offset; /* Byte offset to erase */ uint32_t size; /* Size to erase in bytes */ @@ -291,24 +321,28 @@ struct ec_params_flash_erase { /* Flashmap offset */ #define EC_CMD_FLASH_GET_FLASHMAP 0x14 + struct ec_response_flash_flashmap { uint32_t offset; /* Flashmap offset */ } __packed; /* Enable/disable flash write protect */ #define EC_CMD_FLASH_WP_ENABLE 0x15 + struct ec_params_flash_wp_enable { uint32_t enable_wp; } __packed; /* Get flash write protection commit state */ #define EC_CMD_FLASH_WP_GET_STATE 0x16 + struct ec_response_flash_wp_enable { uint32_t enable_wp; } __packed; /* Set/get flash write protection range */ #define EC_CMD_FLASH_WP_SET_RANGE 0x17 + struct ec_params_flash_wp_range { /* Byte offset aligned to info.protect_block_size */ uint32_t offset; @@ -317,6 +351,7 @@ struct ec_params_flash_wp_range { } __packed; #define EC_CMD_FLASH_WP_GET_RANGE 0x18 + struct ec_response_flash_wp_range { uint32_t offset; uint32_t size; @@ -324,9 +359,11 @@ struct ec_response_flash_wp_range { /* Read flash write protection GPIO pin */ #define EC_CMD_FLASH_WP_GET_GPIO 0x19 + struct ec_params_flash_wp_gpio { uint32_t pin_no; } __packed; + struct ec_response_flash_wp_gpio { uint32_t value; } __packed; @@ -336,18 +373,21 @@ struct ec_response_flash_wp_gpio { /* Get fan RPM */ #define EC_CMD_PWM_GET_FAN_RPM 0x20 + struct ec_response_pwm_get_fan_rpm { uint32_t rpm; } __packed; /* Set target fan RPM */ #define EC_CMD_PWM_SET_FAN_TARGET_RPM 0x21 + struct ec_params_pwm_set_fan_target_rpm { uint32_t rpm; } __packed; /* Get keyboard backlight */ #define EC_CMD_PWM_GET_KEYBOARD_BACKLIGHT 0x22 + struct ec_response_pwm_get_keyboard_backlight { uint8_t percent; uint8_t enabled; @@ -355,22 +395,27 @@ struct ec_response_pwm_get_keyboard_backlight { /* Set keyboard backlight */ #define EC_CMD_PWM_SET_KEYBOARD_BACKLIGHT 0x23 + struct ec_params_pwm_set_keyboard_backlight { uint8_t percent; } __packed; /* Set target fan PWM duty cycle */ #define EC_CMD_PWM_SET_FAN_DUTY 0x24 + struct ec_params_pwm_set_fan_duty { uint32_t percent; } __packed; /*****************************************************************************/ -/* Lightbar commands. This looks worse than it is. Since we only use one LPC - * command to say "talk to the lightbar", we put the "and tell it to do X" - * part into a subcommand. We'll make separate structs for subcommands with - * different input args, so that we know how much to expect. */ +/* + * Lightbar commands. This looks worse than it is. Since we only use one LPC + * command to say "talk to the lightbar", we put the "and tell it to do X" part + * 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 0x28 + struct ec_params_lightbar_cmd { union { union { @@ -413,8 +458,12 @@ struct ec_params_lightbar_cmd { /*****************************************************************************/ /* Verified boot commands */ -/* Verified boot command. Details still evolving. */ +/* + * Verified boot uber-command. Details still evolving. Like the lightbar + * command above, this takes sub-commands. + */ #define EC_CMD_VBOOT_CMD 0x29 + struct ec_params_vboot_cmd { union { union { @@ -479,12 +528,12 @@ enum ec_vboot_hash_status { EC_VBOOT_HASH_STATUS_BUSY, /* Busy computing a hash */ }; - /*****************************************************************************/ /* USB charging control commands */ /* Set USB port charging mode */ #define EC_CMD_USB_CHARGE_SET_MODE 0x30 + struct ec_params_usb_charge_set_mode { uint8_t usb_port_id; uint8_t mode; @@ -498,26 +547,29 @@ struct ec_params_usb_charge_set_mode { /* Get persistent storage info */ #define EC_CMD_PSTORE_INFO 0x40 + struct ec_response_pstore_info { /* Persistent storage size, in bytes */ uint32_t pstore_size; - /* Access size. Read/write offset and size must be a multiple - * of this. */ + /* Access size; read/write offset and size must be a multiple of this */ uint32_t access_size; } __packed; /* Read persistent storage */ #define EC_CMD_PSTORE_READ 0x41 + struct ec_params_pstore_read { uint32_t offset; /* Byte offset to read */ uint32_t size; /* Size to read in bytes */ } __packed; + struct ec_response_pstore_read { uint8_t data[EC_PSTORE_SIZE_MAX]; } __packed; /* Write persistent storage */ #define EC_CMD_PSTORE_WRITE 0x42 + struct ec_params_pstore_write { uint32_t offset; /* Byte offset to write */ uint32_t size; /* Size to write in bytes */ @@ -529,6 +581,7 @@ struct ec_params_pstore_write { /* Set thershold value */ #define EC_CMD_THERMAL_SET_THRESHOLD 0x50 + struct ec_params_thermal_set_threshold { uint8_t sensor_type; uint8_t threshold_id; @@ -537,10 +590,12 @@ struct ec_params_thermal_set_threshold { /* Get threshold value */ #define EC_CMD_THERMAL_GET_THRESHOLD 0x51 + struct ec_params_thermal_get_threshold { uint8_t sensor_type; uint8_t threshold_id; } __packed; + struct ec_response_thermal_get_threshold { uint16_t value; } __packed; @@ -549,16 +604,18 @@ struct ec_response_thermal_get_threshold { #define EC_CMD_THERMAL_AUTO_FAN_CTRL 0x52 /*****************************************************************************/ -/* Matrix KeyBoard Protocol */ +/* MKBP - Matrix KeyBoard Protocol */ /* Read key state */ #define EC_CMD_MKBP_STATE 0x60 + struct ec_response_mkbp_state { uint8_t cols[32]; } __packed; /* Provide information about the matrix : number of rows and columns */ #define EC_CMD_MKBP_INFO 0x61 + struct ec_response_mkbp_info { uint32_t rows; uint32_t cols; @@ -567,6 +624,7 @@ struct ec_response_mkbp_info { /* Simulate key press */ #define EC_CMD_MKBP_SIMULATE_KEY 0x62 + struct ec_params_mkbp_simulate_key { uint8_t col; uint8_t row; @@ -578,6 +636,7 @@ struct ec_params_mkbp_simulate_key { /* Read temperature sensor info */ #define EC_CMD_TEMP_SENSOR_GET_INFO 0x70 + struct ec_params_temp_sensor_get_info { uint8_t id; } __packed; @@ -590,8 +649,10 @@ struct ec_response_temp_sensor_get_info { /*****************************************************************************/ /* Host event commands */ -/* Host event mask params and response structures, shared by all of the host - * event commands below. */ +/* + * Host event mask params and response structures, shared by all of the host + * event commands below. + */ struct ec_params_host_event_mask { uint32_t mask; } __packed; @@ -616,12 +677,14 @@ struct ec_response_host_event_mask { /* Enable/disable LCD backlight */ #define EC_CMD_SWITCH_ENABLE_BKLIGHT 0x90 + struct ec_params_switch_enable_backlight { uint8_t enabled; } __packed; -/* Enabled/disable WLAN/Bluetooth */ +/* Enable/disable WLAN/Bluetooth */ #define EC_CMD_SWITCH_ENABLE_WIRELESS 0x91 + struct ec_params_switch_enable_wireless { uint8_t enabled; } __packed; @@ -629,8 +692,10 @@ struct ec_params_switch_enable_wireless { /*****************************************************************************/ /* System commands */ -/* TODO: this is a confusing name, since it doesn't necessarily reboot the EC. - * Rename to "set image" or something similar. */ +/* + * TODO: this is a confusing name, since it doesn't necessarily reboot the EC. + * Rename to "set image" or something similar. + */ #define EC_CMD_REBOOT_EC 0xd2 /* Command */ @@ -652,26 +717,32 @@ struct ec_params_reboot_ec { uint8_t flags; /* See EC_REBOOT_FLAG_* */ } __packed; - /*****************************************************************************/ -/* Special commands +/* + * Special commands * * These do not follow the normal rules for commands. See each command for - * details. */ + * details. + */ -/* ACPI Query Embedded Controller +/* + * ACPI Query Embedded Controller * * This clears the lowest-order bit in the currently pending host events, and * sets the result code to the 1-based index of the bit (event 0x00000001 = 1, - * event 0x80000000 = 32), or 0 if no event was pending. */ + * event 0x80000000 = 32), or 0 if no event was pending. + */ #define EC_CMD_ACPI_QUERY_EVENT 0x84 -/* Reboot +/* + * Reboot NOW * * This command will work even when the EC LPC interface is busy, because the * reboot command is processed at interrupt level. Note that when the EC - * reboots, the host will reboot too, so there is no response to this - * command. */ + * reboots, the host will reboot too, so there is no response to this command. + * + * Use EC_CMD_REBOOT_EC to reboot the EC more politely. + */ #define EC_CMD_REBOOT 0xd1 /* Think "die" */ #endif /* !__ACPI__ */ |