aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/iio/common
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-11-05 14:42:48 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-11-05 14:42:48 -0500
commitbe61a0d78449f53519905640ac3a9f24c197cbaf (patch)
tree216a7655e2d6dc8f751214aa93a4863a27954a98 /drivers/iio/common
parent7be921a226dcbbbd8fb6f5d63bea4856b3a11624 (diff)
parent4e4cd14e7cbead5ca20465f4a7ce973d42434a2f (diff)
Merge tag 'iio-for-3.19a' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes: First round of new drivers, features and cleanups for IIO in the 3.19 cycle. New drivers / supported parts * rockchip - rk3066-tsadc variant * si7020 humidity and temperature sensor * mcp320x - add mcp3001, mcp3002, mcp3004, mcp3008, mcp3201, mcp3202 * bmp280 pressure and temperature sensor * Qualcomm SPMI PMIC current ADC driver * Exynos_adc - support exynos7 New features * vf610-adc - add temperature sensor support * Documentation of current attributes, scaled pressure, offset and scaled humidity, RGBC intensity gain factor and scale applied to differential voltage channels. * Bring iio_event_monitor up to date with newer modifiers. * Add of_xlate function to allow for complex channel mappings from the device tree. * Add -g parameter to generic_buffer example to allow for devices with directly fed (no trigger) buffers. * Move exynos driver over to syscon for PMU register access. Cleanups, fixes for new drivers * lis3l02dq drop an unneeded else. * st sensors - renam st_sensors to st_sensor_settings (for clarity) * st sensors - drop an unused parameter from all the probe utility functions. * vf610 better error handling and tidy up. * si7020 - cleanups following merge * as3935 - drop some unnecessary semicolons. * bmp280 - fix the pressure calculation.
Diffstat (limited to 'drivers/iio/common')
-rw-r--r--drivers/iio/common/st_sensors/st_sensors_core.c126
-rw-r--r--drivers/iio/common/st_sensors/st_sensors_i2c.c1
-rw-r--r--drivers/iio/common/st_sensors/st_sensors_spi.c1
3 files changed, 70 insertions, 58 deletions
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/common/st_sensors/st_sensors_i2c.c b/drivers/iio/common/st_sensors/st_sensors_i2c.c
index bb6f3085f57b..98cfee296d46 100644
--- a/drivers/iio/common/st_sensors/st_sensors_i2c.c
+++ b/drivers/iio/common/st_sensors/st_sensors_i2c.c
@@ -72,6 +72,7 @@ void st_sensors_i2c_configure(struct iio_dev *indio_dev,
72 indio_dev->dev.parent = &client->dev; 72 indio_dev->dev.parent = &client->dev;
73 indio_dev->name = client->name; 73 indio_dev->name = client->name;
74 74
75 sdata->dev = &client->dev;
75 sdata->tf = &st_sensors_tf_i2c; 76 sdata->tf = &st_sensors_tf_i2c;
76 sdata->get_irq_data_ready = st_sensors_i2c_get_irq; 77 sdata->get_irq_data_ready = st_sensors_i2c_get_irq;
77} 78}
diff --git a/drivers/iio/common/st_sensors/st_sensors_spi.c b/drivers/iio/common/st_sensors/st_sensors_spi.c
index 251baf6abc25..78a6a1ab3ece 100644
--- a/drivers/iio/common/st_sensors/st_sensors_spi.c
+++ b/drivers/iio/common/st_sensors/st_sensors_spi.c
@@ -111,6 +111,7 @@ void st_sensors_spi_configure(struct iio_dev *indio_dev,
111 indio_dev->dev.parent = &spi->dev; 111 indio_dev->dev.parent = &spi->dev;
112 indio_dev->name = spi->modalias; 112 indio_dev->name = spi->modalias;
113 113
114 sdata->dev = &spi->dev;
114 sdata->tf = &st_sensors_tf_spi; 115 sdata->tf = &st_sensors_tf_spi;
115 sdata->get_irq_data_ready = st_sensors_spi_get_irq; 116 sdata->get_irq_data_ready = st_sensors_spi_get_irq;
116} 117}