aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis CIOCCA <denis.ciocca@st.com>2014-10-03 11:35:35 -0400
committerJonathan Cameron <jic23@kernel.org>2014-10-04 06:23:13 -0400
commita7ee8839daf21c4a3ca439733e7bed25f32e7954 (patch)
treeb46f324ed77940c7a33819a3ac30425580e0d1b0
parentc20d4dffd537bee8d3db5ec28ca871ef73d44078 (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.c13
-rw-r--r--drivers/iio/common/st_sensors/st_sensors_core.c126
-rw-r--r--drivers/iio/gyro/st_gyro_core.c13
-rw-r--r--drivers/iio/magnetometer/st_magn_core.c13
-rw-r--r--drivers/iio/pressure/st_pressure_core.c20
-rw-r--r--include/linux/iio/common/st_sensors.h10
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
164static const struct st_sensors st_accel_sensors[] = { 164static 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
47static int st_sensors_match_odr(struct st_sensors *sensor, 47static 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}
99EXPORT_SYMBOL(st_sensors_set_odr); 102EXPORT_SYMBOL(st_sensors_set_odr);
100 103
101static int st_sensors_match_fs(struct st_sensors *sensor, 104static 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
121static int st_sensors_set_fullscale(struct iio_dev *indio_dev, 124static 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
142st_accel_set_fullscale_error: 144st_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}
200EXPORT_SYMBOL(st_sensors_set_axis_enable); 205EXPORT_SYMBOL(st_sensors_set_axis_enable);
201 206
@@ -236,13 +241,13 @@ void st_sensors_power_disable(struct iio_dev *indio_dev)
236EXPORT_SYMBOL(st_sensors_power_disable); 241EXPORT_SYMBOL(st_sensors_power_disable);
237 242
238static int st_sensors_set_drdy_int_pin(struct iio_dev *indio_dev, 243static 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
370st_accel_set_dataready_irq_error: 378st_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
393st_sensors_match_scale_error: 401st_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:
456EXPORT_SYMBOL(st_sensors_read_info_raw); 464EXPORT_SYMBOL(st_sensors_read_info_raw);
457 465
458int st_sensors_check_device_support(struct iio_dev *indio_dev, 466int 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
106static const struct st_sensors st_gyro_sensors[] = { 106static 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
149static const struct st_sensors st_magn_sensors[] = { 149static 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
178static const struct st_sensors st_press_sensors[] = { 178static 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 */
180struct st_sensors { 180struct 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 {
213struct st_sensor_data { 213struct 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
281int st_sensors_check_device_support(struct iio_dev *indio_dev, 281int 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
284ssize_t st_sensors_sysfs_sampling_frequency_avail(struct device *dev, 284ssize_t st_sensors_sysfs_sampling_frequency_avail(struct device *dev,
285 struct device_attribute *attr, char *buf); 285 struct device_attribute *attr, char *buf);