summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Barnaś <mb@semihalf.com>2022-01-21 16:43:53 +0100
committerCommit Bot <commit-bot@chromium.org>2022-02-17 15:56:34 +0000
commit926a15d2fec5f07169965d5dda3ba5180b68325f (patch)
tree1e15f80a54d641ac9b13c236b47a20ee0de94a04
parent55680f70d2a1e61c193fc78ff1d51c7437803683 (diff)
downloadchrome-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.c38
-rw-r--r--common/regulator.c11
-rw-r--r--common/uptime.c7
-rw-r--r--driver/als_tcs3400.c4
-rw-r--r--zephyr/CMakeLists.txt6
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