diff options
Diffstat (limited to 'include/host_command.h')
-rw-r--r-- | include/host_command.h | 103 |
1 files changed, 55 insertions, 48 deletions
diff --git a/include/host_command.h b/include/host_command.h index 3ab3d54351..59389107c7 100644 --- a/include/host_command.h +++ b/include/host_command.h @@ -1,4 +1,4 @@ -/* Copyright 2012 The Chromium OS Authors. All rights reserved. +/* Copyright 2012 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -12,6 +12,10 @@ #include "common.h" #include "ec_commands.h" +#ifdef __cplusplus +extern "C" { +#endif + /* Args for host command handler */ struct host_cmd_handler_args { /* @@ -20,11 +24,11 @@ struct host_cmd_handler_args { * send the response back to the host. */ void (*send_response)(struct host_cmd_handler_args *args); - uint16_t command; /* Command (e.g., EC_CMD_FLASH_GET_INFO) */ - uint8_t version; /* Version of command (0-31) */ + uint16_t command; /* Command (e.g., EC_CMD_FLASH_GET_INFO) */ + uint8_t version; /* Version of command (0-31) */ const void *params; /* Input parameters */ - uint16_t params_size; /* Size of input parameters in bytes */ + uint16_t params_size; /* Size of input parameters in bytes */ /* * Pointer to output response data buffer. On input to the handler, @@ -130,14 +134,13 @@ struct host_command { #ifdef CONFIG_HOST_EVENT64 typedef uint64_t host_event_t; -#define HOST_EVENT_CPRINTS(str, e) CPRINTS("%s 0x%016" PRIx64, str, e) -#define HOST_EVENT_CCPRINTF(str, e) \ - ccprintf("%s 0x%016" PRIx64 "\n", str, e) +#define HOST_EVENT_CPRINTS(str, e) CPRINTS("%s 0x%016" PRIx64, str, e) +#define HOST_EVENT_CCPRINTF(str, e) ccprintf("%s 0x%016" PRIx64 "\n", str, e) #else typedef uint32_t host_event_t; -#define HOST_EVENT_CPRINTS(str, e) CPRINTS("%s 0x%08x", str, e) -#define HOST_EVENT_CCPRINTF(str, e) ccprintf("%s 0x%08x\n", str, e) +#define HOST_EVENT_CPRINTS(str, e) CPRINTS("%s 0x%08x", str, e) +#define HOST_EVENT_CCPRINTF(str, e) ccprintf("%s 0x%08x\n", str, e) #endif /** @@ -256,44 +259,46 @@ void host_packet_receive(struct host_packet *pkt); #ifndef CONFIG_ZEPHYR __error("This function should only be called from Zephyr OS code") #endif -struct host_command *zephyr_find_host_command(int command); + struct host_command *zephyr_find_host_command(int command); #if defined(CONFIG_ZEPHYR) #include "zephyr_host_command.h" #elif defined(HAS_TASK_HOSTCMD) #define EXPAND(off, cmd) __host_cmd_(off, cmd) #define __host_cmd_(off, cmd) __host_cmd_##off##cmd -#define EXPANDSTR(off, cmd) "__host_cmd_"#off#cmd +#define EXPANDSTR(off, cmd) "__host_cmd_" #off #cmd /* * Register a host command handler with * commands starting at offset 0x0000 */ -#define DECLARE_HOST_COMMAND(command, routine, version_mask) \ - static enum ec_status(routine)(struct host_cmd_handler_args *args); \ - const struct host_command __keep __no_sanitize_address \ - EXPAND(0x0000, command) \ - __attribute__((section(".rodata.hcmds." EXPANDSTR(0x0000, command)))) \ - = {routine, command, version_mask} +#define DECLARE_HOST_COMMAND(command, routine, version_mask) \ + static enum ec_status(routine)(struct host_cmd_handler_args * args); \ + const struct host_command __keep __no_sanitize_address EXPAND(0x0000, \ + command) \ + __attribute__((section(".rodata.hcmds." EXPANDSTR( \ + 0x0000, command)))) = { routine, command, \ + version_mask } /* * Register a private host command handler with * commands starting at offset EC_CMD_BOARD_SPECIFIC_BASE, */ -#define DECLARE_PRIVATE_HOST_COMMAND(command, routine, version_mask) \ - static enum ec_status(routine)(struct host_cmd_handler_args *args); \ - const struct host_command __keep __no_sanitize_address \ - EXPAND(EC_CMD_BOARD_SPECIFIC_BASE, command) \ - __attribute__((section(".rodata.hcmds."\ - EXPANDSTR(EC_CMD_BOARD_SPECIFIC_BASE, command)))) \ - = {routine, EC_PRIVATE_HOST_COMMAND_VALUE(command), \ - version_mask} +#define DECLARE_PRIVATE_HOST_COMMAND(command, routine, version_mask) \ + static enum ec_status(routine)(struct host_cmd_handler_args * args); \ + const struct host_command __keep __no_sanitize_address EXPAND( \ + EC_CMD_BOARD_SPECIFIC_BASE, command) \ + __attribute__((section(".rodata.hcmds." EXPANDSTR( \ + EC_CMD_BOARD_SPECIFIC_BASE, command)))) = { \ + routine, EC_PRIVATE_HOST_COMMAND_VALUE(command), \ + version_mask \ + } #else /* !CONFIG_ZEPHYR && !HAS_TASK_HOSTCMD */ -#define DECLARE_HOST_COMMAND(command, routine, version_mask) \ - static enum ec_status (routine)(struct host_cmd_handler_args *args) \ +#define DECLARE_HOST_COMMAND(command, routine, version_mask) \ + static enum ec_status(routine)(struct host_cmd_handler_args * args) \ __attribute__((unused)) -#define DECLARE_PRIVATE_HOST_COMMAND(command, routine, version_mask) \ +#define DECLARE_PRIVATE_HOST_COMMAND(command, routine, version_mask) \ DECLARE_HOST_COMMAND(command, routine, version_mask) #endif /* CONFIG_ZEPHYR */ @@ -304,7 +309,6 @@ struct host_command *zephyr_find_host_command(int command); */ void host_throttle_cpu(int throttle); - /** * Signal host command task to send status to PD MCU. * @@ -335,8 +339,7 @@ int pd_get_active_charge_port(void); * @param indata Pointer to buffer to store response * @param insize Size of buffer to store response */ -int pd_host_command(int command, int version, - const void *outdata, int outsize, +int pd_host_command(int command, int version, const void *outdata, int outsize, void *indata, int insize); /* @@ -358,29 +361,33 @@ stub_send_response_callback(struct host_cmd_handler_args *args) ARG_UNUSED(args); } -#define BUILD_HOST_COMMAND(CMD, VERSION, RESPONSE, PARAMS) \ - { \ - .command = (CMD), .version = (VERSION), \ - .send_response = stub_send_response_callback, \ - .response_size = 0, \ - COND_CODE_0(IS_EMPTY(RESPONSE), \ - (.response = &(RESPONSE), \ - .response_max = sizeof(RESPONSE)), \ - (.response = NULL, .response_max = 0)), \ - COND_CODE_0(IS_EMPTY(PARAMS), \ - (.params = &(PARAMS), \ - .params_size = sizeof(PARAMS)), \ - (.params = NULL, .params_size = 0)) \ +#define BUILD_HOST_COMMAND(CMD, VERSION, RESPONSE, PARAMS) \ + { \ + .send_response = stub_send_response_callback, \ + .command = (CMD), .version = (VERSION), \ + COND_CODE_0(IS_EMPTY(PARAMS), \ + (.params = &(PARAMS), \ + .params_size = sizeof(PARAMS)), \ + (.params = NULL, .params_size = 0)), \ + COND_CODE_0(IS_EMPTY(RESPONSE), \ + (.response = &(RESPONSE), \ + .response_max = sizeof(RESPONSE)), \ + (.response = NULL, .response_max = 0)), \ + .response_size = 0, \ } -#define BUILD_HOST_COMMAND_RESPONSE(CMD, VERSION, RESPONSE) \ +#define BUILD_HOST_COMMAND_RESPONSE(CMD, VERSION, RESPONSE) \ BUILD_HOST_COMMAND(CMD, VERSION, RESPONSE, EMPTY) -#define BUILD_HOST_COMMAND_PARAMS(CMD, VERSION, PARAMS) \ +#define BUILD_HOST_COMMAND_PARAMS(CMD, VERSION, PARAMS) \ BUILD_HOST_COMMAND(CMD, VERSION, EMPTY, PARAMS) -#define BUILD_HOST_COMMAND_SIMPLE(CMD, VERSION) \ +#define BUILD_HOST_COMMAND_SIMPLE(CMD, VERSION) \ BUILD_HOST_COMMAND(CMD, VERSION, EMPTY, EMPTY) #endif /* CONFIG_ZTEST */ -#endif /* __CROS_EC_HOST_COMMAND_H */ +#ifdef __cplusplus +} +#endif + +#endif /* __CROS_EC_HOST_COMMAND_H */ |