drivers:iio:stm:imu:lsm6ds3h: remove VLA usage
Removing VLAs as per displeasure demonstrated by kernel developers. Additionally, Android kernels built with clang defaults forbids usage of it. Signed-off-by: Denis Ciocca <denis.ciocca@st.com> Change-Id: I22436b560d4a5057fedcba13bb8c4c3ec1ef0555 Reviewed-on: https://gerrit.st.com/c/linuxandroidopen/stm-ldd-iio/+/273649 Tested-by: CITOOLS <MDG-smet-aci-reviews@list.st.com> Reviewed-by: Mario TESI <mario.tesi@st.com>
This commit is contained in:
parent
4f9405d4b1
commit
ed3bbbd4ac
@ -47,10 +47,13 @@ static int st_lsm6ds3h_i2c_read(struct lsm6ds3h_data *cdata,
|
||||
static int st_lsm6ds3h_i2c_write(struct lsm6ds3h_data *cdata,
|
||||
u8 reg_addr, int len, u8 *data, bool b_lock)
|
||||
{
|
||||
int err = 0;
|
||||
u8 send[len + 1];
|
||||
struct i2c_msg msg;
|
||||
struct i2c_client *client = to_i2c_client(cdata->dev);
|
||||
struct i2c_msg msg;
|
||||
int err = 0;
|
||||
u8 send[8];
|
||||
|
||||
if (len >= ARRAY_SIZE(send))
|
||||
return -ENOMEM;
|
||||
|
||||
send[0] = reg_addr;
|
||||
memcpy(&send[1], data, len * sizeof(u8));
|
||||
|
@ -1241,11 +1241,15 @@ static int st_lsm6ds3h_i2c_master_set_enable(
|
||||
}
|
||||
|
||||
static int st_lsm6ds3h_i2c_master_read_raw(struct iio_dev *indio_dev,
|
||||
struct iio_chan_spec const *ch, int *val, int *val2, long mask)
|
||||
struct iio_chan_spec const *ch,
|
||||
int *val, int *val2, long mask)
|
||||
{
|
||||
int err;
|
||||
u8 outdata[(ch->scan_type.storagebits >> 3)];
|
||||
struct lsm6ds3h_sensor_data *sdata = iio_priv(indio_dev);
|
||||
int err, ch_num_byte = ch->scan_type.storagebits >> 3;
|
||||
u8 outdata[4];
|
||||
|
||||
if (ch_num_byte > ARRAY_SIZE(outdata))
|
||||
return -ENOMEM;
|
||||
|
||||
switch (mask) {
|
||||
case IIO_CHAN_INFO_RAW:
|
||||
@ -1270,7 +1274,7 @@ static int st_lsm6ds3h_i2c_master_read_raw(struct iio_dev *indio_dev,
|
||||
msleep((1000U / sdata->cdata->trigger_odr) + 2);
|
||||
|
||||
err = sdata->cdata->tf->read(sdata->cdata, sdata->data_out_reg,
|
||||
ch->scan_type.storagebits >> 3, outdata, true);
|
||||
ch_num_byte, outdata, true);
|
||||
if (err < 0) {
|
||||
st_lsm6ds3h_i2c_master_set_enable(sdata, false, false);
|
||||
mutex_unlock(&sdata->cdata->odr_lock);
|
||||
@ -1285,7 +1289,7 @@ static int st_lsm6ds3h_i2c_master_read_raw(struct iio_dev *indio_dev,
|
||||
return err;
|
||||
}
|
||||
|
||||
if ((ch->scan_type.storagebits >> 3) > 2)
|
||||
if (ch_num_byte > 2)
|
||||
*val = (s32)get_unaligned_le32(outdata);
|
||||
else
|
||||
*val = (s16)get_unaligned_le16(outdata);
|
||||
|
Loading…
Reference in New Issue
Block a user