diff options
author | Tomasz Michalec <tm@semihalf.com> | 2021-12-01 15:08:12 +0100 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-12-03 06:45:34 +0000 |
commit | 2049c3f715ab4f60fcde66172c9c0ff93af1d893 (patch) | |
tree | 49bdb6abcb8a401ce1a2515056a0e9bd25e1c9fb | |
parent | b30c15a73448eed93c6d6997a033d706c0541b50 (diff) | |
download | chrome-ec-2049c3f715ab4f60fcde66172c9c0ff93af1d893.tar.gz |
zephyr: drivers: Extend BUILD_HOST_COMMAND macro
Now BUILD_HOST_COMMAND macro accepts params argument to setup parameters
of host command. New variants of BUILD_HOST_COMMAND are added:
- BUILD_HOST_COMMAND_RESPONSE
- BUILD_HOST_COMMAND_PARAMS
- BUILD_HOST_COMMAND_SIMPLE
They allow to declare host command with only response, params or
neither.
The response_size field is intentionally set to 0, because this is
default value. Command returning data should update this field.
BUG=none
BRANCH=none
TEST=make configure --test zephyr/test/drivers
Signed-off-by: Tomasz Michalec <tm@semihalf.com>
Change-Id: I31021db3790dfa3e0ad15128daf455d14a9c071c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3310858
Tested-by: Tomasz Michalec <tmichalec@google.com>
Commit-Queue: Tomasz Michalec <tmichalec@google.com>
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
-rw-r--r-- | include/host_command.h | 28 | ||||
-rw-r--r-- | zephyr/test/drivers/src/espi.c | 3 | ||||
-rw-r--r-- | zephyr/test/drivers/src/power_common.c | 20 | ||||
-rw-r--r-- | zephyr/test/drivers/src/usb_mux.c | 6 |
4 files changed, 30 insertions, 27 deletions
diff --git a/include/host_command.h b/include/host_command.h index 8a66776ce9..74f68f9891 100644 --- a/include/host_command.h +++ b/include/host_command.h @@ -358,13 +358,29 @@ stub_send_response_callback(struct host_cmd_handler_args *args) ARG_UNUSED(args); } -#define BUILD_HOST_COMMAND(CMD, VERSION, RESPONSE) \ - { \ - .command = (CMD), .version = (VERSION), \ - .send_response = stub_send_response_callback, \ - .response = &(RESPONSE), .response_max = sizeof(RESPONSE), \ - .response_size = sizeof(RESPONSE) \ +#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_RESPONSE(CMD, VERSION, RESPONSE) \ + BUILD_HOST_COMMAND(CMD, VERSION, RESPONSE, EMPTY) + +#define BUILD_HOST_COMMAND_PARAMS(CMD, VERSION, PARAMS) \ + BUILD_HOST_COMMAND(CMD, VERSION, EMPTY, PARAMS) + +#define BUILD_HOST_COMMAND_SIMPLE(CMD, VERSION) \ + BUILD_HOST_COMMAND(CMD, VERSION, EMPTY, EMPTY) #endif /* CONFIG_ZTEST */ #endif /* __CROS_EC_HOST_COMMAND_H */ diff --git a/zephyr/test/drivers/src/espi.c b/zephyr/test/drivers/src/espi.c index c852f1b771..81cbac30da 100644 --- a/zephyr/test/drivers/src/espi.c +++ b/zephyr/test/drivers/src/espi.c @@ -13,7 +13,8 @@ static void test_host_command_get_protocol_info(void) { struct ec_response_get_protocol_info response; struct host_cmd_handler_args args = - BUILD_HOST_COMMAND(EC_CMD_GET_PROTOCOL_INFO, 0, response); + BUILD_HOST_COMMAND_RESPONSE(EC_CMD_GET_PROTOCOL_INFO, 0, + response); zassert_ok(host_command_process(&args), NULL); zassert_ok(args.result, NULL); diff --git a/zephyr/test/drivers/src/power_common.c b/zephyr/test/drivers/src/power_common.c index 19003c8dde..86e03ea38c 100644 --- a/zephyr/test/drivers/src/power_common.c +++ b/zephyr/test/drivers/src/power_common.c @@ -297,7 +297,7 @@ static void test_power_hc_smart_discharge(void) struct ec_response_smart_discharge response; struct ec_params_smart_discharge params; struct host_cmd_handler_args args = - BUILD_HOST_COMMAND(EC_CMD_SMART_DISCHARGE, 0, response); + BUILD_HOST_COMMAND(EC_CMD_SMART_DISCHARGE, 0, response, params); struct i2c_emul *emul; int hours_to_zero; int hibern_drate; @@ -308,9 +308,6 @@ static void test_power_hc_smart_discharge(void) emul = sbat_emul_get_ptr(BATTERY_ORD); /* Set up host command parameters */ - args.params = ¶ms; - args.params_size = sizeof(params); - params.flags = EC_SMART_DISCHARGE_FLAGS_SET; /* Test fail when battery capacity is not available */ @@ -394,7 +391,7 @@ static void test_power_board_system_is_idle(void) struct ec_response_smart_discharge response; struct ec_params_smart_discharge params; struct host_cmd_handler_args args = - BUILD_HOST_COMMAND(EC_CMD_SMART_DISCHARGE, 0, response); + BUILD_HOST_COMMAND(EC_CMD_SMART_DISCHARGE, 0, response, params); struct sbat_emul_bat_data *bat; struct i2c_emul *emul; uint64_t last_shutdown_time = 0; @@ -405,8 +402,6 @@ static void test_power_board_system_is_idle(void) bat = sbat_emul_get_bat_data(emul); /* Set up host command parameters */ - args.params = ¶ms; - args.params_size = sizeof(params); params.drate.hibern = 100; /* uA */ params.drate.cutoff = 10; /* uA */ params.hours_to_zero = 1000; /* h */ @@ -463,7 +458,7 @@ static void setup_hibernation_delay(void) struct ec_response_smart_discharge response; struct ec_params_smart_discharge params; struct host_cmd_handler_args args = - BUILD_HOST_COMMAND(EC_CMD_SMART_DISCHARGE, 0, response); + BUILD_HOST_COMMAND(EC_CMD_SMART_DISCHARGE, 0, response, params); const struct device *acok_dev = DEVICE_DT_GET(DT_GPIO_CTLR(GPIO_ACOK_OD_NODE, gpios)); struct sbat_emul_bat_data *bat; @@ -473,8 +468,6 @@ static void setup_hibernation_delay(void) bat = sbat_emul_get_bat_data(emul); /* Setup smart discharge zone and set capacity to safe zone */ - args.params = ¶ms; - args.params_size = sizeof(params); params.drate.hibern = 100; /* uA */ params.drate.cutoff = 10; /* uA */ params.hours_to_zero = 10000; /* h */ @@ -508,16 +501,13 @@ static void test_power_hc_hibernation_delay(void) struct ec_response_hibernation_delay response; struct ec_params_hibernation_delay params; struct host_cmd_handler_args args = - BUILD_HOST_COMMAND(EC_CMD_HIBERNATION_DELAY, 0, response); + BUILD_HOST_COMMAND(EC_CMD_HIBERNATION_DELAY, 0, response, + params); const struct device *acok_dev = DEVICE_DT_GET(DT_GPIO_CTLR(GPIO_ACOK_OD_NODE, gpios)); uint32_t h_delay; int sleep_time; - /* Setup hibernation delay host command */ - args.params = ¶ms; - args.params_size = sizeof(params); - /* Set hibernate delay */ h_delay = 9; params.seconds = h_delay; diff --git a/zephyr/test/drivers/src/usb_mux.c b/zephyr/test/drivers/src/usb_mux.c index ff5d934d50..d2833650b4 100644 --- a/zephyr/test/drivers/src/usb_mux.c +++ b/zephyr/test/drivers/src/usb_mux.c @@ -603,13 +603,9 @@ static void test_usb_mux_hc_mux_info(void) struct ec_response_usb_pd_mux_info response; struct ec_params_usb_pd_mux_info params; struct host_cmd_handler_args args = - BUILD_HOST_COMMAND(EC_CMD_USB_PD_MUX_INFO, 0, response); + BUILD_HOST_COMMAND(EC_CMD_USB_PD_MUX_INFO, 0, response, params); mux_state_t exp_mode; - /* Set up host command parameters */ - args.params = ¶ms; - args.params_size = sizeof(params); - /* Test invalid port parameter */ params.port = 5; zassert_equal(EC_RES_INVALID_PARAM, host_command_process(&args), NULL); |