diff options
author | Denis CIOCCA <denis.ciocca@st.com> | 2014-10-03 11:35:35 -0400 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2014-10-04 06:23:13 -0400 |
commit | a7ee8839daf21c4a3ca439733e7bed25f32e7954 (patch) | |
tree | b46f324ed77940c7a33819a3ac30425580e0d1b0 | |
parent | c20d4dffd537bee8d3db5ec28ca871ef73d44078 (diff) |
iio:imu: changed structure name from st_sensors to st_sensor_settings
This patch change structure name and related variables names.
Signed-off-by: Denis Ciocca <denis.ciocca@st.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
-rw-r--r-- | drivers/iio/accel/st_accel_core.c | 13 | ||||
-rw-r--r-- | drivers/iio/common/st_sensors/st_sensors_core.c | 126 | ||||
-rw-r--r-- | drivers/iio/gyro/st_gyro_core.c | 13 | ||||
-rw-r--r-- | drivers/iio/magnetometer/st_magn_core.c | 13 | ||||
-rw-r--r-- | drivers/iio/pressure/st_pressure_core.c | 20 | ||||
-rw-r--r-- | include/linux/iio/common/st_sensors.h | 10 |
6 files changed, 104 insertions, 91 deletions
diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c index 087864854c61..7cbdfae03441 100644 --- a/drivers/iio/accel/st_accel_core.c +++ b/drivers/iio/accel/st_accel_core.c | |||
@@ -161,7 +161,7 @@ static const struct iio_chan_spec st_accel_16bit_channels[] = { | |||
161 | IIO_CHAN_SOFT_TIMESTAMP(3) | 161 | IIO_CHAN_SOFT_TIMESTAMP(3) |
162 | }; | 162 | }; |
163 | 163 | ||
164 | static const struct st_sensors st_accel_sensors[] = { | 164 | static const struct st_sensor_settings st_accel_sensors_settings[] = { |
165 | { | 165 | { |
166 | .wai = ST_ACCEL_1_WAI_EXP, | 166 | .wai = ST_ACCEL_1_WAI_EXP, |
167 | .sensors_supported = { | 167 | .sensors_supported = { |
@@ -470,18 +470,19 @@ int st_accel_common_probe(struct iio_dev *indio_dev, | |||
470 | st_sensors_power_enable(indio_dev); | 470 | st_sensors_power_enable(indio_dev); |
471 | 471 | ||
472 | err = st_sensors_check_device_support(indio_dev, | 472 | err = st_sensors_check_device_support(indio_dev, |
473 | ARRAY_SIZE(st_accel_sensors), st_accel_sensors); | 473 | ARRAY_SIZE(st_accel_sensors_settings), |
474 | st_accel_sensors_settings); | ||
474 | if (err < 0) | 475 | if (err < 0) |
475 | return err; | 476 | return err; |
476 | 477 | ||
477 | adata->num_data_channels = ST_ACCEL_NUMBER_DATA_CHANNELS; | 478 | adata->num_data_channels = ST_ACCEL_NUMBER_DATA_CHANNELS; |
478 | adata->multiread_bit = adata->sensor->multi_read_bit; | 479 | adata->multiread_bit = adata->sensor_settings->multi_read_bit; |
479 | indio_dev->channels = adata->sensor->ch; | 480 | indio_dev->channels = adata->sensor_settings->ch; |
480 | indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS; | 481 | indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS; |
481 | 482 | ||
482 | adata->current_fullscale = (struct st_sensor_fullscale_avl *) | 483 | adata->current_fullscale = (struct st_sensor_fullscale_avl *) |
483 | &adata->sensor->fs.fs_avl[0]; | 484 | &adata->sensor_settings->fs.fs_avl[0]; |
484 | adata->odr = adata->sensor->odr.odr_avl[0].hz; | 485 | adata->odr = adata->sensor_settings->odr.odr_avl[0].hz; |
485 | 486 | ||
486 | if (!plat_data) | 487 | if (!plat_data) |
487 | plat_data = | 488 | plat_data = |
diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c index 24cfe4e044f9..edd13d2b4121 100644 --- a/drivers/iio/common/st_sensors/st_sensors_core.c +++ b/drivers/iio/common/st_sensors/st_sensors_core.c | |||
@@ -44,18 +44,18 @@ st_sensors_write_data_with_mask_error: | |||
44 | return err; | 44 | return err; |
45 | } | 45 | } |
46 | 46 | ||
47 | static int st_sensors_match_odr(struct st_sensors *sensor, | 47 | static int st_sensors_match_odr(struct st_sensor_settings *sensor_settings, |
48 | unsigned int odr, struct st_sensor_odr_avl *odr_out) | 48 | unsigned int odr, struct st_sensor_odr_avl *odr_out) |
49 | { | 49 | { |
50 | int i, ret = -EINVAL; | 50 | int i, ret = -EINVAL; |
51 | 51 | ||
52 | for (i = 0; i < ST_SENSORS_ODR_LIST_MAX; i++) { | 52 | for (i = 0; i < ST_SENSORS_ODR_LIST_MAX; i++) { |
53 | if (sensor->odr.odr_avl[i].hz == 0) | 53 | if (sensor_settings->odr.odr_avl[i].hz == 0) |
54 | goto st_sensors_match_odr_error; | 54 | goto st_sensors_match_odr_error; |
55 | 55 | ||
56 | if (sensor->odr.odr_avl[i].hz == odr) { | 56 | if (sensor_settings->odr.odr_avl[i].hz == odr) { |
57 | odr_out->hz = sensor->odr.odr_avl[i].hz; | 57 | odr_out->hz = sensor_settings->odr.odr_avl[i].hz; |
58 | odr_out->value = sensor->odr.odr_avl[i].value; | 58 | odr_out->value = sensor_settings->odr.odr_avl[i].value; |
59 | ret = 0; | 59 | ret = 0; |
60 | break; | 60 | break; |
61 | } | 61 | } |
@@ -71,23 +71,26 @@ int st_sensors_set_odr(struct iio_dev *indio_dev, unsigned int odr) | |||
71 | struct st_sensor_odr_avl odr_out = {0, 0}; | 71 | struct st_sensor_odr_avl odr_out = {0, 0}; |
72 | struct st_sensor_data *sdata = iio_priv(indio_dev); | 72 | struct st_sensor_data *sdata = iio_priv(indio_dev); |
73 | 73 | ||
74 | err = st_sensors_match_odr(sdata->sensor, odr, &odr_out); | 74 | err = st_sensors_match_odr(sdata->sensor_settings, odr, &odr_out); |
75 | if (err < 0) | 75 | if (err < 0) |
76 | goto st_sensors_match_odr_error; | 76 | goto st_sensors_match_odr_error; |
77 | 77 | ||
78 | if ((sdata->sensor->odr.addr == sdata->sensor->pw.addr) && | 78 | if ((sdata->sensor_settings->odr.addr == |
79 | (sdata->sensor->odr.mask == sdata->sensor->pw.mask)) { | 79 | sdata->sensor_settings->pw.addr) && |
80 | (sdata->sensor_settings->odr.mask == | ||
81 | sdata->sensor_settings->pw.mask)) { | ||
80 | if (sdata->enabled == true) { | 82 | if (sdata->enabled == true) { |
81 | err = st_sensors_write_data_with_mask(indio_dev, | 83 | err = st_sensors_write_data_with_mask(indio_dev, |
82 | sdata->sensor->odr.addr, | 84 | sdata->sensor_settings->odr.addr, |
83 | sdata->sensor->odr.mask, | 85 | sdata->sensor_settings->odr.mask, |
84 | odr_out.value); | 86 | odr_out.value); |
85 | } else { | 87 | } else { |
86 | err = 0; | 88 | err = 0; |
87 | } | 89 | } |
88 | } else { | 90 | } else { |
89 | err = st_sensors_write_data_with_mask(indio_dev, | 91 | err = st_sensors_write_data_with_mask(indio_dev, |
90 | sdata->sensor->odr.addr, sdata->sensor->odr.mask, | 92 | sdata->sensor_settings->odr.addr, |
93 | sdata->sensor_settings->odr.mask, | ||
91 | odr_out.value); | 94 | odr_out.value); |
92 | } | 95 | } |
93 | if (err >= 0) | 96 | if (err >= 0) |
@@ -98,16 +101,16 @@ st_sensors_match_odr_error: | |||
98 | } | 101 | } |
99 | EXPORT_SYMBOL(st_sensors_set_odr); | 102 | EXPORT_SYMBOL(st_sensors_set_odr); |
100 | 103 | ||
101 | static int st_sensors_match_fs(struct st_sensors *sensor, | 104 | static int st_sensors_match_fs(struct st_sensor_settings *sensor_settings, |
102 | unsigned int fs, int *index_fs_avl) | 105 | unsigned int fs, int *index_fs_avl) |
103 | { | 106 | { |
104 | int i, ret = -EINVAL; | 107 | int i, ret = -EINVAL; |
105 | 108 | ||
106 | for (i = 0; i < ST_SENSORS_FULLSCALE_AVL_MAX; i++) { | 109 | for (i = 0; i < ST_SENSORS_FULLSCALE_AVL_MAX; i++) { |
107 | if (sensor->fs.fs_avl[i].num == 0) | 110 | if (sensor_settings->fs.fs_avl[i].num == 0) |
108 | goto st_sensors_match_odr_error; | 111 | goto st_sensors_match_odr_error; |
109 | 112 | ||
110 | if (sensor->fs.fs_avl[i].num == fs) { | 113 | if (sensor_settings->fs.fs_avl[i].num == fs) { |
111 | *index_fs_avl = i; | 114 | *index_fs_avl = i; |
112 | ret = 0; | 115 | ret = 0; |
113 | break; | 116 | break; |
@@ -118,25 +121,24 @@ st_sensors_match_odr_error: | |||
118 | return ret; | 121 | return ret; |
119 | } | 122 | } |
120 | 123 | ||
121 | static int st_sensors_set_fullscale(struct iio_dev *indio_dev, | 124 | static int st_sensors_set_fullscale(struct iio_dev *indio_dev, unsigned int fs) |
122 | unsigned int fs) | ||
123 | { | 125 | { |
124 | int err, i = 0; | 126 | int err, i = 0; |
125 | struct st_sensor_data *sdata = iio_priv(indio_dev); | 127 | struct st_sensor_data *sdata = iio_priv(indio_dev); |
126 | 128 | ||
127 | err = st_sensors_match_fs(sdata->sensor, fs, &i); | 129 | err = st_sensors_match_fs(sdata->sensor_settings, fs, &i); |
128 | if (err < 0) | 130 | if (err < 0) |
129 | goto st_accel_set_fullscale_error; | 131 | goto st_accel_set_fullscale_error; |
130 | 132 | ||
131 | err = st_sensors_write_data_with_mask(indio_dev, | 133 | err = st_sensors_write_data_with_mask(indio_dev, |
132 | sdata->sensor->fs.addr, | 134 | sdata->sensor_settings->fs.addr, |
133 | sdata->sensor->fs.mask, | 135 | sdata->sensor_settings->fs.mask, |
134 | sdata->sensor->fs.fs_avl[i].value); | 136 | sdata->sensor_settings->fs.fs_avl[i].value); |
135 | if (err < 0) | 137 | if (err < 0) |
136 | goto st_accel_set_fullscale_error; | 138 | goto st_accel_set_fullscale_error; |
137 | 139 | ||
138 | sdata->current_fullscale = (struct st_sensor_fullscale_avl *) | 140 | sdata->current_fullscale = (struct st_sensor_fullscale_avl *) |
139 | &sdata->sensor->fs.fs_avl[i]; | 141 | &sdata->sensor_settings->fs.fs_avl[i]; |
140 | return err; | 142 | return err; |
141 | 143 | ||
142 | st_accel_set_fullscale_error: | 144 | st_accel_set_fullscale_error: |
@@ -153,10 +155,12 @@ int st_sensors_set_enable(struct iio_dev *indio_dev, bool enable) | |||
153 | struct st_sensor_data *sdata = iio_priv(indio_dev); | 155 | struct st_sensor_data *sdata = iio_priv(indio_dev); |
154 | 156 | ||
155 | if (enable) { | 157 | if (enable) { |
156 | tmp_value = sdata->sensor->pw.value_on; | 158 | tmp_value = sdata->sensor_settings->pw.value_on; |
157 | if ((sdata->sensor->odr.addr == sdata->sensor->pw.addr) && | 159 | if ((sdata->sensor_settings->odr.addr == |
158 | (sdata->sensor->odr.mask == sdata->sensor->pw.mask)) { | 160 | sdata->sensor_settings->pw.addr) && |
159 | err = st_sensors_match_odr(sdata->sensor, | 161 | (sdata->sensor_settings->odr.mask == |
162 | sdata->sensor_settings->pw.mask)) { | ||
163 | err = st_sensors_match_odr(sdata->sensor_settings, | ||
160 | sdata->odr, &odr_out); | 164 | sdata->odr, &odr_out); |
161 | if (err < 0) | 165 | if (err < 0) |
162 | goto set_enable_error; | 166 | goto set_enable_error; |
@@ -164,8 +168,8 @@ int st_sensors_set_enable(struct iio_dev *indio_dev, bool enable) | |||
164 | found = true; | 168 | found = true; |
165 | } | 169 | } |
166 | err = st_sensors_write_data_with_mask(indio_dev, | 170 | err = st_sensors_write_data_with_mask(indio_dev, |
167 | sdata->sensor->pw.addr, | 171 | sdata->sensor_settings->pw.addr, |
168 | sdata->sensor->pw.mask, tmp_value); | 172 | sdata->sensor_settings->pw.mask, tmp_value); |
169 | if (err < 0) | 173 | if (err < 0) |
170 | goto set_enable_error; | 174 | goto set_enable_error; |
171 | 175 | ||
@@ -175,9 +179,9 @@ int st_sensors_set_enable(struct iio_dev *indio_dev, bool enable) | |||
175 | sdata->odr = odr_out.hz; | 179 | sdata->odr = odr_out.hz; |
176 | } else { | 180 | } else { |
177 | err = st_sensors_write_data_with_mask(indio_dev, | 181 | err = st_sensors_write_data_with_mask(indio_dev, |
178 | sdata->sensor->pw.addr, | 182 | sdata->sensor_settings->pw.addr, |
179 | sdata->sensor->pw.mask, | 183 | sdata->sensor_settings->pw.mask, |
180 | sdata->sensor->pw.value_off); | 184 | sdata->sensor_settings->pw.value_off); |
181 | if (err < 0) | 185 | if (err < 0) |
182 | goto set_enable_error; | 186 | goto set_enable_error; |
183 | 187 | ||
@@ -194,8 +198,9 @@ int st_sensors_set_axis_enable(struct iio_dev *indio_dev, u8 axis_enable) | |||
194 | struct st_sensor_data *sdata = iio_priv(indio_dev); | 198 | struct st_sensor_data *sdata = iio_priv(indio_dev); |
195 | 199 | ||
196 | return st_sensors_write_data_with_mask(indio_dev, | 200 | return st_sensors_write_data_with_mask(indio_dev, |
197 | sdata->sensor->enable_axis.addr, | 201 | sdata->sensor_settings->enable_axis.addr, |
198 | sdata->sensor->enable_axis.mask, axis_enable); | 202 | sdata->sensor_settings->enable_axis.mask, |
203 | axis_enable); | ||
199 | } | 204 | } |
200 | EXPORT_SYMBOL(st_sensors_set_axis_enable); | 205 | EXPORT_SYMBOL(st_sensors_set_axis_enable); |
201 | 206 | ||
@@ -236,13 +241,13 @@ void st_sensors_power_disable(struct iio_dev *indio_dev) | |||
236 | EXPORT_SYMBOL(st_sensors_power_disable); | 241 | EXPORT_SYMBOL(st_sensors_power_disable); |
237 | 242 | ||
238 | static int st_sensors_set_drdy_int_pin(struct iio_dev *indio_dev, | 243 | static int st_sensors_set_drdy_int_pin(struct iio_dev *indio_dev, |
239 | struct st_sensors_platform_data *pdata) | 244 | struct st_sensors_platform_data *pdata) |
240 | { | 245 | { |
241 | struct st_sensor_data *sdata = iio_priv(indio_dev); | 246 | struct st_sensor_data *sdata = iio_priv(indio_dev); |
242 | 247 | ||
243 | switch (pdata->drdy_int_pin) { | 248 | switch (pdata->drdy_int_pin) { |
244 | case 1: | 249 | case 1: |
245 | if (sdata->sensor->drdy_irq.mask_int1 == 0) { | 250 | if (sdata->sensor_settings->drdy_irq.mask_int1 == 0) { |
246 | dev_err(&indio_dev->dev, | 251 | dev_err(&indio_dev->dev, |
247 | "DRDY on INT1 not available.\n"); | 252 | "DRDY on INT1 not available.\n"); |
248 | return -EINVAL; | 253 | return -EINVAL; |
@@ -250,7 +255,7 @@ static int st_sensors_set_drdy_int_pin(struct iio_dev *indio_dev, | |||
250 | sdata->drdy_int_pin = 1; | 255 | sdata->drdy_int_pin = 1; |
251 | break; | 256 | break; |
252 | case 2: | 257 | case 2: |
253 | if (sdata->sensor->drdy_irq.mask_int2 == 0) { | 258 | if (sdata->sensor_settings->drdy_irq.mask_int2 == 0) { |
254 | dev_err(&indio_dev->dev, | 259 | dev_err(&indio_dev->dev, |
255 | "DRDY on INT2 not available.\n"); | 260 | "DRDY on INT2 not available.\n"); |
256 | return -EINVAL; | 261 | return -EINVAL; |
@@ -318,7 +323,7 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev, | |||
318 | 323 | ||
319 | if (sdata->current_fullscale) { | 324 | if (sdata->current_fullscale) { |
320 | err = st_sensors_set_fullscale(indio_dev, | 325 | err = st_sensors_set_fullscale(indio_dev, |
321 | sdata->current_fullscale->num); | 326 | sdata->current_fullscale->num); |
322 | if (err < 0) | 327 | if (err < 0) |
323 | return err; | 328 | return err; |
324 | } else | 329 | } else |
@@ -330,7 +335,8 @@ int st_sensors_init_sensor(struct iio_dev *indio_dev, | |||
330 | 335 | ||
331 | /* set BDU */ | 336 | /* set BDU */ |
332 | err = st_sensors_write_data_with_mask(indio_dev, | 337 | err = st_sensors_write_data_with_mask(indio_dev, |
333 | sdata->sensor->bdu.addr, sdata->sensor->bdu.mask, true); | 338 | sdata->sensor_settings->bdu.addr, |
339 | sdata->sensor_settings->bdu.mask, true); | ||
334 | if (err < 0) | 340 | if (err < 0) |
335 | return err; | 341 | return err; |
336 | 342 | ||
@@ -346,26 +352,28 @@ int st_sensors_set_dataready_irq(struct iio_dev *indio_dev, bool enable) | |||
346 | u8 drdy_mask; | 352 | u8 drdy_mask; |
347 | struct st_sensor_data *sdata = iio_priv(indio_dev); | 353 | struct st_sensor_data *sdata = iio_priv(indio_dev); |
348 | 354 | ||
349 | if (!sdata->sensor->drdy_irq.addr) | 355 | if (!sdata->sensor_settings->drdy_irq.addr) |
350 | return 0; | 356 | return 0; |
351 | 357 | ||
352 | /* Enable/Disable the interrupt generator 1. */ | 358 | /* Enable/Disable the interrupt generator 1. */ |
353 | if (sdata->sensor->drdy_irq.ig1.en_addr > 0) { | 359 | if (sdata->sensor_settings->drdy_irq.ig1.en_addr > 0) { |
354 | err = st_sensors_write_data_with_mask(indio_dev, | 360 | err = st_sensors_write_data_with_mask(indio_dev, |
355 | sdata->sensor->drdy_irq.ig1.en_addr, | 361 | sdata->sensor_settings->drdy_irq.ig1.en_addr, |
356 | sdata->sensor->drdy_irq.ig1.en_mask, (int)enable); | 362 | sdata->sensor_settings->drdy_irq.ig1.en_mask, |
363 | (int)enable); | ||
357 | if (err < 0) | 364 | if (err < 0) |
358 | goto st_accel_set_dataready_irq_error; | 365 | goto st_accel_set_dataready_irq_error; |
359 | } | 366 | } |
360 | 367 | ||
361 | if (sdata->drdy_int_pin == 1) | 368 | if (sdata->drdy_int_pin == 1) |
362 | drdy_mask = sdata->sensor->drdy_irq.mask_int1; | 369 | drdy_mask = sdata->sensor_settings->drdy_irq.mask_int1; |
363 | else | 370 | else |
364 | drdy_mask = sdata->sensor->drdy_irq.mask_int2; | 371 | drdy_mask = sdata->sensor_settings->drdy_irq.mask_int2; |
365 | 372 | ||
366 | /* Enable/Disable the interrupt generator for data ready. */ | 373 | /* Enable/Disable the interrupt generator for data ready. */ |
367 | err = st_sensors_write_data_with_mask(indio_dev, | 374 | err = st_sensors_write_data_with_mask(indio_dev, |
368 | sdata->sensor->drdy_irq.addr, drdy_mask, (int)enable); | 375 | sdata->sensor_settings->drdy_irq.addr, |
376 | drdy_mask, (int)enable); | ||
369 | 377 | ||
370 | st_accel_set_dataready_irq_error: | 378 | st_accel_set_dataready_irq_error: |
371 | return err; | 379 | return err; |
@@ -378,8 +386,8 @@ int st_sensors_set_fullscale_by_gain(struct iio_dev *indio_dev, int scale) | |||
378 | struct st_sensor_data *sdata = iio_priv(indio_dev); | 386 | struct st_sensor_data *sdata = iio_priv(indio_dev); |
379 | 387 | ||
380 | for (i = 0; i < ST_SENSORS_FULLSCALE_AVL_MAX; i++) { | 388 | for (i = 0; i < ST_SENSORS_FULLSCALE_AVL_MAX; i++) { |
381 | if ((sdata->sensor->fs.fs_avl[i].gain == scale) && | 389 | if ((sdata->sensor_settings->fs.fs_avl[i].gain == scale) && |
382 | (sdata->sensor->fs.fs_avl[i].gain != 0)) { | 390 | (sdata->sensor_settings->fs.fs_avl[i].gain != 0)) { |
383 | err = 0; | 391 | err = 0; |
384 | break; | 392 | break; |
385 | } | 393 | } |
@@ -388,7 +396,7 @@ int st_sensors_set_fullscale_by_gain(struct iio_dev *indio_dev, int scale) | |||
388 | goto st_sensors_match_scale_error; | 396 | goto st_sensors_match_scale_error; |
389 | 397 | ||
390 | err = st_sensors_set_fullscale(indio_dev, | 398 | err = st_sensors_set_fullscale(indio_dev, |
391 | sdata->sensor->fs.fs_avl[i].num); | 399 | sdata->sensor_settings->fs.fs_avl[i].num); |
392 | 400 | ||
393 | st_sensors_match_scale_error: | 401 | st_sensors_match_scale_error: |
394 | return err; | 402 | return err; |
@@ -439,7 +447,7 @@ int st_sensors_read_info_raw(struct iio_dev *indio_dev, | |||
439 | if (err < 0) | 447 | if (err < 0) |
440 | goto out; | 448 | goto out; |
441 | 449 | ||
442 | msleep((sdata->sensor->bootime * 1000) / sdata->odr); | 450 | msleep((sdata->sensor_settings->bootime * 1000) / sdata->odr); |
443 | err = st_sensors_read_axis_data(indio_dev, ch, val); | 451 | err = st_sensors_read_axis_data(indio_dev, ch, val); |
444 | if (err < 0) | 452 | if (err < 0) |
445 | goto out; | 453 | goto out; |
@@ -456,7 +464,8 @@ out: | |||
456 | EXPORT_SYMBOL(st_sensors_read_info_raw); | 464 | EXPORT_SYMBOL(st_sensors_read_info_raw); |
457 | 465 | ||
458 | int st_sensors_check_device_support(struct iio_dev *indio_dev, | 466 | int st_sensors_check_device_support(struct iio_dev *indio_dev, |
459 | int num_sensors_list, const struct st_sensors *sensors) | 467 | int num_sensors_list, |
468 | const struct st_sensor_settings *sensor_settings) | ||
460 | { | 469 | { |
461 | u8 wai; | 470 | u8 wai; |
462 | int i, n, err; | 471 | int i, n, err; |
@@ -470,23 +479,24 @@ int st_sensors_check_device_support(struct iio_dev *indio_dev, | |||
470 | } | 479 | } |
471 | 480 | ||
472 | for (i = 0; i < num_sensors_list; i++) { | 481 | for (i = 0; i < num_sensors_list; i++) { |
473 | if (sensors[i].wai == wai) | 482 | if (sensor_settings[i].wai == wai) |
474 | break; | 483 | break; |
475 | } | 484 | } |
476 | if (i == num_sensors_list) | 485 | if (i == num_sensors_list) |
477 | goto device_not_supported; | 486 | goto device_not_supported; |
478 | 487 | ||
479 | for (n = 0; n < ARRAY_SIZE(sensors[i].sensors_supported); n++) { | 488 | for (n = 0; n < ARRAY_SIZE(sensor_settings[i].sensors_supported); n++) { |
480 | if (strcmp(indio_dev->name, | 489 | if (strcmp(indio_dev->name, |
481 | &sensors[i].sensors_supported[n][0]) == 0) | 490 | &sensor_settings[i].sensors_supported[n][0]) == 0) |
482 | break; | 491 | break; |
483 | } | 492 | } |
484 | if (n == ARRAY_SIZE(sensors[i].sensors_supported)) { | 493 | if (n == ARRAY_SIZE(sensor_settings[i].sensors_supported)) { |
485 | dev_err(&indio_dev->dev, "device name and WhoAmI mismatch.\n"); | 494 | dev_err(&indio_dev->dev, "device name and WhoAmI mismatch.\n"); |
486 | goto sensor_name_mismatch; | 495 | goto sensor_name_mismatch; |
487 | } | 496 | } |
488 | 497 | ||
489 | sdata->sensor = (struct st_sensors *)&sensors[i]; | 498 | sdata->sensor_settings = |
499 | (struct st_sensor_settings *)&sensor_settings[i]; | ||
490 | 500 | ||
491 | return i; | 501 | return i; |
492 | 502 | ||
@@ -508,11 +518,11 @@ ssize_t st_sensors_sysfs_sampling_frequency_avail(struct device *dev, | |||
508 | 518 | ||
509 | mutex_lock(&indio_dev->mlock); | 519 | mutex_lock(&indio_dev->mlock); |
510 | for (i = 0; i < ST_SENSORS_ODR_LIST_MAX; i++) { | 520 | for (i = 0; i < ST_SENSORS_ODR_LIST_MAX; i++) { |
511 | if (sdata->sensor->odr.odr_avl[i].hz == 0) | 521 | if (sdata->sensor_settings->odr.odr_avl[i].hz == 0) |
512 | break; | 522 | break; |
513 | 523 | ||
514 | len += scnprintf(buf + len, PAGE_SIZE - len, "%d ", | 524 | len += scnprintf(buf + len, PAGE_SIZE - len, "%d ", |
515 | sdata->sensor->odr.odr_avl[i].hz); | 525 | sdata->sensor_settings->odr.odr_avl[i].hz); |
516 | } | 526 | } |
517 | mutex_unlock(&indio_dev->mlock); | 527 | mutex_unlock(&indio_dev->mlock); |
518 | buf[len - 1] = '\n'; | 528 | buf[len - 1] = '\n'; |
@@ -530,11 +540,11 @@ ssize_t st_sensors_sysfs_scale_avail(struct device *dev, | |||
530 | 540 | ||
531 | mutex_lock(&indio_dev->mlock); | 541 | mutex_lock(&indio_dev->mlock); |
532 | for (i = 0; i < ST_SENSORS_FULLSCALE_AVL_MAX; i++) { | 542 | for (i = 0; i < ST_SENSORS_FULLSCALE_AVL_MAX; i++) { |
533 | if (sdata->sensor->fs.fs_avl[i].num == 0) | 543 | if (sdata->sensor_settings->fs.fs_avl[i].num == 0) |
534 | break; | 544 | break; |
535 | 545 | ||
536 | len += scnprintf(buf + len, PAGE_SIZE - len, "0.%06u ", | 546 | len += scnprintf(buf + len, PAGE_SIZE - len, "0.%06u ", |
537 | sdata->sensor->fs.fs_avl[i].gain); | 547 | sdata->sensor_settings->fs.fs_avl[i].gain); |
538 | } | 548 | } |
539 | mutex_unlock(&indio_dev->mlock); | 549 | mutex_unlock(&indio_dev->mlock); |
540 | buf[len - 1] = '\n'; | 550 | buf[len - 1] = '\n'; |
diff --git a/drivers/iio/gyro/st_gyro_core.c b/drivers/iio/gyro/st_gyro_core.c index f156fc6c5c6c..9d41b68d24b2 100644 --- a/drivers/iio/gyro/st_gyro_core.c +++ b/drivers/iio/gyro/st_gyro_core.c | |||
@@ -103,7 +103,7 @@ static const struct iio_chan_spec st_gyro_16bit_channels[] = { | |||
103 | IIO_CHAN_SOFT_TIMESTAMP(3) | 103 | IIO_CHAN_SOFT_TIMESTAMP(3) |
104 | }; | 104 | }; |
105 | 105 | ||
106 | static const struct st_sensors st_gyro_sensors[] = { | 106 | static const struct st_sensor_settings st_gyro_sensors_settings[] = { |
107 | { | 107 | { |
108 | .wai = ST_GYRO_1_WAI_EXP, | 108 | .wai = ST_GYRO_1_WAI_EXP, |
109 | .sensors_supported = { | 109 | .sensors_supported = { |
@@ -322,18 +322,19 @@ int st_gyro_common_probe(struct iio_dev *indio_dev, | |||
322 | st_sensors_power_enable(indio_dev); | 322 | st_sensors_power_enable(indio_dev); |
323 | 323 | ||
324 | err = st_sensors_check_device_support(indio_dev, | 324 | err = st_sensors_check_device_support(indio_dev, |
325 | ARRAY_SIZE(st_gyro_sensors), st_gyro_sensors); | 325 | ARRAY_SIZE(st_gyro_sensors_settings), |
326 | st_gyro_sensors_settings); | ||
326 | if (err < 0) | 327 | if (err < 0) |
327 | return err; | 328 | return err; |
328 | 329 | ||
329 | gdata->num_data_channels = ST_GYRO_NUMBER_DATA_CHANNELS; | 330 | gdata->num_data_channels = ST_GYRO_NUMBER_DATA_CHANNELS; |
330 | gdata->multiread_bit = gdata->sensor->multi_read_bit; | 331 | gdata->multiread_bit = gdata->sensor_settings->multi_read_bit; |
331 | indio_dev->channels = gdata->sensor->ch; | 332 | indio_dev->channels = gdata->sensor_settings->ch; |
332 | indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS; | 333 | indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS; |
333 | 334 | ||
334 | gdata->current_fullscale = (struct st_sensor_fullscale_avl *) | 335 | gdata->current_fullscale = (struct st_sensor_fullscale_avl *) |
335 | &gdata->sensor->fs.fs_avl[0]; | 336 | &gdata->sensor_settings->fs.fs_avl[0]; |
336 | gdata->odr = gdata->sensor->odr.odr_avl[0].hz; | 337 | gdata->odr = gdata->sensor_settings->odr.odr_avl[0].hz; |
337 | 338 | ||
338 | err = st_sensors_init_sensor(indio_dev, pdata); | 339 | err = st_sensors_init_sensor(indio_dev, pdata); |
339 | if (err < 0) | 340 | if (err < 0) |
diff --git a/drivers/iio/magnetometer/st_magn_core.c b/drivers/iio/magnetometer/st_magn_core.c index a4b64130ac2f..b65405fada45 100644 --- a/drivers/iio/magnetometer/st_magn_core.c +++ b/drivers/iio/magnetometer/st_magn_core.c | |||
@@ -146,7 +146,7 @@ static const struct iio_chan_spec st_magn_2_16bit_channels[] = { | |||
146 | IIO_CHAN_SOFT_TIMESTAMP(3) | 146 | IIO_CHAN_SOFT_TIMESTAMP(3) |
147 | }; | 147 | }; |
148 | 148 | ||
149 | static const struct st_sensors st_magn_sensors[] = { | 149 | static const struct st_sensor_settings st_magn_sensors_settings[] = { |
150 | { | 150 | { |
151 | .wai = ST_MAGN_1_WAI_EXP, | 151 | .wai = ST_MAGN_1_WAI_EXP, |
152 | .sensors_supported = { | 152 | .sensors_supported = { |
@@ -366,18 +366,19 @@ int st_magn_common_probe(struct iio_dev *indio_dev, | |||
366 | st_sensors_power_enable(indio_dev); | 366 | st_sensors_power_enable(indio_dev); |
367 | 367 | ||
368 | err = st_sensors_check_device_support(indio_dev, | 368 | err = st_sensors_check_device_support(indio_dev, |
369 | ARRAY_SIZE(st_magn_sensors), st_magn_sensors); | 369 | ARRAY_SIZE(st_magn_sensors_settings), |
370 | st_magn_sensors_settings); | ||
370 | if (err < 0) | 371 | if (err < 0) |
371 | return err; | 372 | return err; |
372 | 373 | ||
373 | mdata->num_data_channels = ST_MAGN_NUMBER_DATA_CHANNELS; | 374 | mdata->num_data_channels = ST_MAGN_NUMBER_DATA_CHANNELS; |
374 | mdata->multiread_bit = mdata->sensor->multi_read_bit; | 375 | mdata->multiread_bit = mdata->sensor_settings->multi_read_bit; |
375 | indio_dev->channels = mdata->sensor->ch; | 376 | indio_dev->channels = mdata->sensor_settings->ch; |
376 | indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS; | 377 | indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS; |
377 | 378 | ||
378 | mdata->current_fullscale = (struct st_sensor_fullscale_avl *) | 379 | mdata->current_fullscale = (struct st_sensor_fullscale_avl *) |
379 | &mdata->sensor->fs.fs_avl[0]; | 380 | &mdata->sensor_settings->fs.fs_avl[0]; |
380 | mdata->odr = mdata->sensor->odr.odr_avl[0].hz; | 381 | mdata->odr = mdata->sensor_settings->odr.odr_avl[0].hz; |
381 | 382 | ||
382 | err = st_sensors_init_sensor(indio_dev, pdata); | 383 | err = st_sensors_init_sensor(indio_dev, pdata); |
383 | if (err < 0) | 384 | if (err < 0) |
diff --git a/drivers/iio/pressure/st_pressure_core.c b/drivers/iio/pressure/st_pressure_core.c index 473d914ef470..9563118c4d36 100644 --- a/drivers/iio/pressure/st_pressure_core.c +++ b/drivers/iio/pressure/st_pressure_core.c | |||
@@ -175,7 +175,7 @@ static const struct iio_chan_spec st_press_lps001wp_channels[] = { | |||
175 | IIO_CHAN_SOFT_TIMESTAMP(1) | 175 | IIO_CHAN_SOFT_TIMESTAMP(1) |
176 | }; | 176 | }; |
177 | 177 | ||
178 | static const struct st_sensors st_press_sensors[] = { | 178 | static const struct st_sensor_settings st_press_sensors_settings[] = { |
179 | { | 179 | { |
180 | .wai = ST_PRESS_LPS331AP_WAI_EXP, | 180 | .wai = ST_PRESS_LPS331AP_WAI_EXP, |
181 | .sensors_supported = { | 181 | .sensors_supported = { |
@@ -422,24 +422,24 @@ int st_press_common_probe(struct iio_dev *indio_dev, | |||
422 | st_sensors_power_enable(indio_dev); | 422 | st_sensors_power_enable(indio_dev); |
423 | 423 | ||
424 | err = st_sensors_check_device_support(indio_dev, | 424 | err = st_sensors_check_device_support(indio_dev, |
425 | ARRAY_SIZE(st_press_sensors), | 425 | ARRAY_SIZE(st_press_sensors_settings), |
426 | st_press_sensors); | 426 | st_press_sensors_settings); |
427 | if (err < 0) | 427 | if (err < 0) |
428 | return err; | 428 | return err; |
429 | 429 | ||
430 | pdata->num_data_channels = ST_PRESS_NUMBER_DATA_CHANNELS; | 430 | pdata->num_data_channels = ST_PRESS_NUMBER_DATA_CHANNELS; |
431 | pdata->multiread_bit = pdata->sensor->multi_read_bit; | 431 | pdata->multiread_bit = pdata->sensor_settings->multi_read_bit; |
432 | indio_dev->channels = pdata->sensor->ch; | 432 | indio_dev->channels = pdata->sensor_settings->ch; |
433 | indio_dev->num_channels = pdata->sensor->num_ch; | 433 | indio_dev->num_channels = pdata->sensor_settings->num_ch; |
434 | 434 | ||
435 | if (pdata->sensor->fs.addr != 0) | 435 | if (pdata->sensor_settings->fs.addr != 0) |
436 | pdata->current_fullscale = (struct st_sensor_fullscale_avl *) | 436 | pdata->current_fullscale = (struct st_sensor_fullscale_avl *) |
437 | &pdata->sensor->fs.fs_avl[0]; | 437 | &pdata->sensor_settings->fs.fs_avl[0]; |
438 | 438 | ||
439 | pdata->odr = pdata->sensor->odr.odr_avl[0].hz; | 439 | pdata->odr = pdata->sensor_settings->odr.odr_avl[0].hz; |
440 | 440 | ||
441 | /* Some devices don't support a data ready pin. */ | 441 | /* Some devices don't support a data ready pin. */ |
442 | if (!plat_data && pdata->sensor->drdy_irq.addr) | 442 | if (!plat_data && pdata->sensor_settings->drdy_irq.addr) |
443 | plat_data = | 443 | plat_data = |
444 | (struct st_sensors_platform_data *)&default_press_pdata; | 444 | (struct st_sensors_platform_data *)&default_press_pdata; |
445 | 445 | ||
diff --git a/include/linux/iio/common/st_sensors.h b/include/linux/iio/common/st_sensors.h index d8257ab60bac..2c476acb87d9 100644 --- a/include/linux/iio/common/st_sensors.h +++ b/include/linux/iio/common/st_sensors.h | |||
@@ -164,7 +164,7 @@ struct st_sensor_transfer_function { | |||
164 | }; | 164 | }; |
165 | 165 | ||
166 | /** | 166 | /** |
167 | * struct st_sensors - ST sensors list | 167 | * struct st_sensor_settings - ST specific sensor settings |
168 | * @wai: Contents of WhoAmI register. | 168 | * @wai: Contents of WhoAmI register. |
169 | * @sensors_supported: List of supported sensors by struct itself. | 169 | * @sensors_supported: List of supported sensors by struct itself. |
170 | * @ch: IIO channels for the sensor. | 170 | * @ch: IIO channels for the sensor. |
@@ -177,7 +177,7 @@ struct st_sensor_transfer_function { | |||
177 | * @multi_read_bit: Use or not particular bit for [I2C/SPI] multi-read. | 177 | * @multi_read_bit: Use or not particular bit for [I2C/SPI] multi-read. |
178 | * @bootime: samples to discard when sensor passing from power-down to power-up. | 178 | * @bootime: samples to discard when sensor passing from power-down to power-up. |
179 | */ | 179 | */ |
180 | struct st_sensors { | 180 | struct st_sensor_settings { |
181 | u8 wai; | 181 | u8 wai; |
182 | char sensors_supported[ST_SENSORS_MAX_4WAI][ST_SENSORS_MAX_NAME]; | 182 | char sensors_supported[ST_SENSORS_MAX_4WAI][ST_SENSORS_MAX_NAME]; |
183 | struct iio_chan_spec *ch; | 183 | struct iio_chan_spec *ch; |
@@ -196,7 +196,7 @@ struct st_sensors { | |||
196 | * struct st_sensor_data - ST sensor device status | 196 | * struct st_sensor_data - ST sensor device status |
197 | * @dev: Pointer to instance of struct device (I2C or SPI). | 197 | * @dev: Pointer to instance of struct device (I2C or SPI). |
198 | * @trig: The trigger in use by the core driver. | 198 | * @trig: The trigger in use by the core driver. |
199 | * @sensor: Pointer to the current sensor struct in use. | 199 | * @sensor_settings: Pointer to the specific sensor settings in use. |
200 | * @current_fullscale: Maximum range of measure by the sensor. | 200 | * @current_fullscale: Maximum range of measure by the sensor. |
201 | * @vdd: Pointer to sensor's Vdd power supply | 201 | * @vdd: Pointer to sensor's Vdd power supply |
202 | * @vdd_io: Pointer to sensor's Vdd-IO power supply | 202 | * @vdd_io: Pointer to sensor's Vdd-IO power supply |
@@ -213,7 +213,7 @@ struct st_sensors { | |||
213 | struct st_sensor_data { | 213 | struct st_sensor_data { |
214 | struct device *dev; | 214 | struct device *dev; |
215 | struct iio_trigger *trig; | 215 | struct iio_trigger *trig; |
216 | struct st_sensors *sensor; | 216 | struct st_sensor_settings *sensor_settings; |
217 | struct st_sensor_fullscale_avl *current_fullscale; | 217 | struct st_sensor_fullscale_avl *current_fullscale; |
218 | struct regulator *vdd; | 218 | struct regulator *vdd; |
219 | struct regulator *vdd_io; | 219 | struct regulator *vdd_io; |
@@ -279,7 +279,7 @@ int st_sensors_read_info_raw(struct iio_dev *indio_dev, | |||
279 | struct iio_chan_spec const *ch, int *val); | 279 | struct iio_chan_spec const *ch, int *val); |
280 | 280 | ||
281 | int st_sensors_check_device_support(struct iio_dev *indio_dev, | 281 | int st_sensors_check_device_support(struct iio_dev *indio_dev, |
282 | int num_sensors_list, const struct st_sensors *sensors); | 282 | int num_sensors_list, const struct st_sensor_settings *sensor_settings); |
283 | 283 | ||
284 | ssize_t st_sensors_sysfs_sampling_frequency_avail(struct device *dev, | 284 | ssize_t st_sensors_sysfs_sampling_frequency_avail(struct device *dev, |
285 | struct device_attribute *attr, char *buf); | 285 | struct device_attribute *attr, char *buf); |