diff options
author | Michał Barnaś <mb@semihalf.com> | 2022-01-21 16:43:53 +0100 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2022-02-17 15:56:34 +0000 |
commit | 926a15d2fec5f07169965d5dda3ba5180b68325f (patch) | |
tree | 1e15f80a54d641ac9b13c236b47a20ee0de94a04 | |
parent | 55680f70d2a1e61c193fc78ff1d51c7437803683 (diff) | |
download | chrome-ec-926a15d2fec5f07169965d5dda3ba5180b68325f.tar.gz |
zephyr: suppress warnings about pointers to unaligned data
Zephyr has enabled warnings about pointers to members of packed
structs. This resulted in failing compilation process.
This commit supresses some warnings by using void* intermediate
pointers and by using temporary variables if possible.
BUG=b:210501420
BRANCH=main
TEST=zmake testall && make buildall
Change-Id: Ia03322e80ae2b4ba42731b066066cc466bd92baf
Signed-off-by: Michał Barnaś <mb@semihalf.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3405041
Reviewed-by: Ting Shen <phoenixshen@chromium.org>
Reviewed-by: Sam Hurst <shurst@google.com>
-rw-r--r-- | common/motion_sense.c | 38 | ||||
-rw-r--r-- | common/regulator.c | 11 | ||||
-rw-r--r-- | common/uptime.c | 7 | ||||
-rw-r--r-- | driver/als_tcs3400.c | 4 | ||||
-rw-r--r-- | zephyr/CMakeLists.txt | 6 |
5 files changed, 43 insertions, 23 deletions
diff --git a/common/motion_sense.c b/common/motion_sense.c index afffb02e78..46972de886 100644 --- a/common/motion_sense.c +++ b/common/motion_sense.c @@ -1070,6 +1070,12 @@ static enum ec_status host_cmd_motion_sense(struct host_cmd_handler_args *args) struct ec_response_motion_sense *out = args->response; struct motion_sensor_t *sensor; int i, ret = EC_RES_INVALID_PARAM, reported; + const void *in_offset; + const void *in_scale; + void *out_calib_read; + void *out_scale; + void *out_offset; + int16_t out_temp; switch (in->cmd) { case MOTIONSENSE_CMD_DUMP: @@ -1236,8 +1242,9 @@ static enum ec_status host_cmd_motion_sense(struct host_cmd_handler_args *args) if (!sensor->drv->set_offset) return EC_RES_INVALID_COMMAND; + in_offset = in->sensor_offset.offset; ret = sensor->drv->set_offset(sensor, - in->sensor_offset.offset, + in_offset, in->sensor_offset.temp); if (ret != EC_SUCCESS) return ret; @@ -1246,10 +1253,12 @@ static enum ec_status host_cmd_motion_sense(struct host_cmd_handler_args *args) if (!sensor->drv->get_offset) return EC_RES_INVALID_COMMAND; - ret = sensor->drv->get_offset(sensor, out->sensor_offset.offset, - &out->sensor_offset.temp); + out_offset = out->sensor_offset.offset; + ret = sensor->drv->get_offset(sensor, out_offset, &out_temp); if (ret != EC_SUCCESS) return ret; + + out->sensor_offset.temp = out_temp; args->response_size = sizeof(out->sensor_offset); break; @@ -1264,9 +1273,10 @@ static enum ec_status host_cmd_motion_sense(struct host_cmd_handler_args *args) if (!sensor->drv->set_scale) return EC_RES_INVALID_COMMAND; + in_scale = in->sensor_scale.scale; ret = sensor->drv->set_scale(sensor, - in->sensor_scale.scale, - in->sensor_scale.temp); + in_scale, + in->sensor_scale.temp); if (ret != EC_SUCCESS) return ret; } @@ -1274,10 +1284,13 @@ static enum ec_status host_cmd_motion_sense(struct host_cmd_handler_args *args) if (!sensor->drv->get_scale) return EC_RES_INVALID_COMMAND; - ret = sensor->drv->get_scale(sensor, out->sensor_scale.scale, - &out->sensor_scale.temp); + out_scale = out->sensor_scale.scale; + ret = sensor->drv->get_scale(sensor, out_scale, + &out_temp); if (ret != EC_SUCCESS) return ret; + + out->sensor_scale.temp = out_temp; args->response_size = sizeof(out->sensor_scale); break; @@ -1294,10 +1307,13 @@ static enum ec_status host_cmd_motion_sense(struct host_cmd_handler_args *args) sensor, in->perform_calib.enable); if (ret != EC_SUCCESS) return ret; - ret = sensor->drv->get_offset(sensor, out->perform_calib.offset, - &out->perform_calib.temp); + + out_offset = out->perform_calib.offset; + ret = sensor->drv->get_offset(sensor, out_offset, &out_temp); if (ret != EC_SUCCESS) return ret; + + out->perform_calib.temp = out_temp; args->response_size = sizeof(out->perform_calib); break; @@ -1367,9 +1383,9 @@ static enum ec_status host_cmd_motion_sense(struct host_cmd_handler_args *args) if (sensor == NULL) return EC_RES_INVALID_PARAM; - + out_calib_read = &out->online_calib_read; args->response_size = - online_calibration_read(sensor, &out->online_calib_read) + online_calibration_read(sensor, out_calib_read) ? sizeof(struct ec_response_online_calibration_data) : 0; break; diff --git a/common/regulator.c b/common/regulator.c index c3f5d0b99d..54d9e87521 100644 --- a/common/regulator.c +++ b/common/regulator.c @@ -16,14 +16,17 @@ hc_regulator_get_info(struct host_cmd_handler_args *args) { const struct ec_params_regulator_get_info *p = args->params; struct ec_response_regulator_get_info *r = args->response; + void *voltages_mv = r->voltages_mv; + uint16_t num_voltages; int rv; - rv = board_regulator_get_info(p->index, r->name, &r->num_voltages, - r->voltages_mv); + rv = board_regulator_get_info(p->index, r->name, &num_voltages, + voltages_mv); if (rv) return EC_RES_ERROR; + r->num_voltages = num_voltages; args->response_size = sizeof(*r); return EC_RES_SUCCESS; } @@ -69,13 +72,15 @@ hc_regulator_get_voltage(struct host_cmd_handler_args *args) { const struct ec_params_regulator_get_voltage *p = args->params; struct ec_response_regulator_get_voltage *r = args->response; + uint32_t voltage_mv; int rv; - rv = board_regulator_get_voltage(p->index, &r->voltage_mv); + rv = board_regulator_get_voltage(p->index, &voltage_mv); if (rv) return EC_RES_ERROR; + r->voltage_mv = voltage_mv; args->response_size = sizeof(*r); return EC_RES_SUCCESS; } diff --git a/common/uptime.c b/common/uptime.c index 2fdd8bdb19..3c3be3e55c 100644 --- a/common/uptime.c +++ b/common/uptime.c @@ -24,16 +24,19 @@ host_command_get_uptime_info(struct host_cmd_handler_args *args) struct ec_response_uptime_info *r = args->response; timestamp_t now = get_time(); uint32_t now_ms = (uint32_t)(now.val / MSEC); + void *recent_ap_reset = r->recent_ap_reset; + uint32_t ap_resets_since_ec_boot = 0; enum ec_error_list rc; r->time_since_ec_boot_ms = now_ms; r->ec_reset_flags = system_get_reset_flags(); memset(r->recent_ap_reset, 0, sizeof(r->recent_ap_reset)); - rc = get_ap_reset_stats(r->recent_ap_reset, + rc = get_ap_reset_stats(recent_ap_reset, ARRAY_SIZE(r->recent_ap_reset), - &r->ap_resets_since_ec_boot); + &ap_resets_since_ec_boot); + r->ap_resets_since_ec_boot = ap_resets_since_ec_boot; args->response_size = sizeof(*r); return rc == EC_SUCCESS ? EC_RES_SUCCESS : EC_RES_ERROR; } diff --git a/driver/als_tcs3400.c b/driver/als_tcs3400.c index b2c2041c70..048e7b6395 100644 --- a/driver/als_tcs3400.c +++ b/driver/als_tcs3400.c @@ -492,6 +492,8 @@ static int tcs3400_post_events(struct motion_sensor_t *s, (raw_data[BLUE_CRGB_IDX] != TCS_SATURATION_LEVEL) && (raw_data[GREEN_CRGB_IDX] != TCS_SATURATION_LEVEL)))) { + void *udata = vector.udata; + if (is_spoof(rgb_s)) { memcpy(last_v, rgb_s->spoof_xyz, sizeof(rgb_s->spoof_xyz)); } else if (is_calibration) { @@ -502,7 +504,7 @@ static int tcs3400_post_events(struct motion_sensor_t *s, memcpy(last_v, xyz_data, sizeof(xyz_data)); } - ec_motion_sensor_clamp_u16s(vector.udata, last_v); + ec_motion_sensor_clamp_u16s(udata, last_v); if (IS_ENABLED(CONFIG_ACCEL_FIFO)) { vector.sensor_num = rgb_s - motion_sensors; diff --git a/zephyr/CMakeLists.txt b/zephyr/CMakeLists.txt index a2513a611a..89bcad1362 100644 --- a/zephyr/CMakeLists.txt +++ b/zephyr/CMakeLists.txt @@ -61,12 +61,6 @@ if(DEFINED CONFIG_PLATFORM_EC) set_property(TARGET app PROPERTY INTERPROCEDURAL_OPTIMIZATION True) endif() endif() - - set_compiler_property(APPEND PROPERTY warning_base - # TODO(b/210501420): Make EC code compatible with - # -W-address-of-packed-member - -Wno-address-of-packed-member - ) endif() # Switch from the "zephyr" library to the "app" library for all Chromium OS |