@@ -322,57 +322,6 @@ static int ad7192_setup(struct ad7192_state *st,
322
322
return ret ;
323
323
}
324
324
325
- static ssize_t ad7192_read_frequency (struct device * dev ,
326
- struct device_attribute * attr ,
327
- char * buf )
328
- {
329
- struct iio_dev * indio_dev = dev_to_iio_dev (dev );
330
- struct ad7192_state * st = iio_priv (indio_dev );
331
-
332
- return sprintf (buf , "%d\n" , st -> mclk /
333
- (st -> f_order * 1024 * AD7192_MODE_RATE (st -> mode )));
334
- }
335
-
336
- static ssize_t ad7192_write_frequency (struct device * dev ,
337
- struct device_attribute * attr ,
338
- const char * buf ,
339
- size_t len )
340
- {
341
- struct iio_dev * indio_dev = dev_to_iio_dev (dev );
342
- struct ad7192_state * st = iio_priv (indio_dev );
343
- unsigned long lval ;
344
- int div , ret ;
345
-
346
- ret = kstrtoul (buf , 10 , & lval );
347
- if (ret )
348
- return ret ;
349
- if (lval == 0 )
350
- return - EINVAL ;
351
-
352
- ret = iio_device_claim_direct_mode (indio_dev );
353
- if (ret )
354
- return ret ;
355
-
356
- div = st -> mclk / (lval * st -> f_order * 1024 );
357
- if (div < 1 || div > 1023 ) {
358
- ret = - EINVAL ;
359
- goto out ;
360
- }
361
-
362
- st -> mode &= ~AD7192_MODE_RATE (-1 );
363
- st -> mode |= AD7192_MODE_RATE (div );
364
- ad_sd_write_reg (& st -> sd , AD7192_REG_MODE , 3 , st -> mode );
365
-
366
- out :
367
- iio_device_release_direct_mode (indio_dev );
368
-
369
- return ret ? ret : len ;
370
- }
371
-
372
- static IIO_DEV_ATTR_SAMP_FREQ (S_IWUSR | S_IRUGO ,
373
- ad7192_read_frequency ,
374
- ad7192_write_frequency ) ;
375
-
376
325
static ssize_t
377
326
ad7192_show_scale_available (struct device * dev ,
378
327
struct device_attribute * attr , char * buf )
@@ -471,7 +420,6 @@ static IIO_DEVICE_ATTR(ac_excitation_en, S_IRUGO | S_IWUSR,
471
420
AD7192_REG_MODE ) ;
472
421
473
422
static struct attribute * ad7192_attributes [] = {
474
- & iio_dev_attr_sampling_frequency .dev_attr .attr ,
475
423
& iio_dev_attr_in_v_m_v_scale_available .dev_attr .attr ,
476
424
& iio_dev_attr_in_voltage_scale_available .dev_attr .attr ,
477
425
& iio_dev_attr_bridge_switch_en .dev_attr .attr ,
@@ -484,7 +432,6 @@ static const struct attribute_group ad7192_attribute_group = {
484
432
};
485
433
486
434
static struct attribute * ad7195_attributes [] = {
487
- & iio_dev_attr_sampling_frequency .dev_attr .attr ,
488
435
& iio_dev_attr_in_v_m_v_scale_available .dev_attr .attr ,
489
436
& iio_dev_attr_in_voltage_scale_available .dev_attr .attr ,
490
437
& iio_dev_attr_bridge_switch_en .dev_attr .attr ,
@@ -536,6 +483,10 @@ static int ad7192_read_raw(struct iio_dev *indio_dev,
536
483
if (chan -> type == IIO_TEMP )
537
484
* val -= 273 * ad7192_get_temp_scale (unipolar );
538
485
return IIO_VAL_INT ;
486
+ case IIO_CHAN_INFO_SAMP_FREQ :
487
+ * val = st -> mclk /
488
+ (st -> f_order * 1024 * AD7192_MODE_RATE (st -> mode ));
489
+ return IIO_VAL_INT ;
539
490
}
540
491
541
492
return - EINVAL ;
@@ -548,7 +499,7 @@ static int ad7192_write_raw(struct iio_dev *indio_dev,
548
499
long mask )
549
500
{
550
501
struct ad7192_state * st = iio_priv (indio_dev );
551
- int ret , i ;
502
+ int ret , i , div ;
552
503
unsigned int tmp ;
553
504
554
505
ret = iio_device_claim_direct_mode (indio_dev );
@@ -572,6 +523,22 @@ static int ad7192_write_raw(struct iio_dev *indio_dev,
572
523
break ;
573
524
}
574
525
break ;
526
+ case IIO_CHAN_INFO_SAMP_FREQ :
527
+ if (!val ) {
528
+ ret = - EINVAL ;
529
+ break ;
530
+ }
531
+
532
+ div = st -> mclk / (val * st -> f_order * 1024 );
533
+ if (div < 1 || div > 1023 ) {
534
+ ret = - EINVAL ;
535
+ break ;
536
+ }
537
+
538
+ st -> mode &= ~AD7192_MODE_RATE (-1 );
539
+ st -> mode |= AD7192_MODE_RATE (div );
540
+ ad_sd_write_reg (& st -> sd , AD7192_REG_MODE , 3 , st -> mode );
541
+ break ;
575
542
default :
576
543
ret = - EINVAL ;
577
544
}
@@ -585,7 +552,14 @@ static int ad7192_write_raw_get_fmt(struct iio_dev *indio_dev,
585
552
struct iio_chan_spec const * chan ,
586
553
long mask )
587
554
{
588
- return IIO_VAL_INT_PLUS_NANO ;
555
+ switch (mask ) {
556
+ case IIO_CHAN_INFO_SCALE :
557
+ return IIO_VAL_INT_PLUS_NANO ;
558
+ case IIO_CHAN_INFO_SAMP_FREQ :
559
+ return IIO_VAL_INT ;
560
+ default :
561
+ return - EINVAL ;
562
+ }
589
563
}
590
564
591
565
static const struct iio_info ad7192_info = {
0 commit comments