@@ -95,7 +95,6 @@ struct admv1013_state {
95
95
struct clk * clkin ;
96
96
/* Protect against concurrent accesses to the device and to data */
97
97
struct mutex lock ;
98
- struct regulator * reg ;
99
98
struct notifier_block nb ;
100
99
unsigned int input_mode ;
101
100
unsigned int quad_se_mode ;
@@ -342,14 +341,9 @@ static int admv1013_update_quad_filters(struct admv1013_state *st)
342
341
FIELD_PREP (ADMV1013_QUAD_FILTERS_MSK , filt_raw ));
343
342
}
344
343
345
- static int admv1013_update_mixer_vgate (struct admv1013_state * st )
344
+ static int admv1013_update_mixer_vgate (struct admv1013_state * st , int vcm )
346
345
{
347
346
unsigned int mixer_vgate ;
348
- int vcm ;
349
-
350
- vcm = regulator_get_voltage (st -> reg );
351
- if (vcm < 0 )
352
- return vcm ;
353
347
354
348
if (vcm <= 1800000 )
355
349
mixer_vgate = (2389 * vcm / 1000000 + 8100 ) / 100 ;
@@ -443,7 +437,7 @@ static const struct iio_chan_spec admv1013_channels[] = {
443
437
ADMV1013_CHAN_CALIB (1 , Q ),
444
438
};
445
439
446
- static int admv1013_init (struct admv1013_state * st )
440
+ static int admv1013_init (struct admv1013_state * st , int vcm_uv )
447
441
{
448
442
int ret ;
449
443
unsigned int data ;
@@ -483,7 +477,7 @@ static int admv1013_init(struct admv1013_state *st)
483
477
if (ret )
484
478
return ret ;
485
479
486
- ret = admv1013_update_mixer_vgate (st );
480
+ ret = admv1013_update_mixer_vgate (st , vcm_uv );
487
481
if (ret )
488
482
return ret ;
489
483
@@ -498,11 +492,6 @@ static int admv1013_init(struct admv1013_state *st)
498
492
st -> input_mode );
499
493
}
500
494
501
- static void admv1013_reg_disable (void * data )
502
- {
503
- regulator_disable (data );
504
- }
505
-
506
495
static void admv1013_powerdown (void * data )
507
496
{
508
497
unsigned int enable_reg , enable_reg_msk ;
@@ -557,11 +546,6 @@ static int admv1013_properties_parse(struct admv1013_state *st)
557
546
else
558
547
return - EINVAL ;
559
548
560
- st -> reg = devm_regulator_get (& spi -> dev , "vcm" );
561
- if (IS_ERR (st -> reg ))
562
- return dev_err_probe (& spi -> dev , PTR_ERR (st -> reg ),
563
- "failed to get the common-mode voltage\n" );
564
-
565
549
ret = devm_regulator_bulk_get_enable (& st -> spi -> dev ,
566
550
ARRAY_SIZE (admv1013_vcc_regs ),
567
551
admv1013_vcc_regs );
@@ -578,7 +562,7 @@ static int admv1013_probe(struct spi_device *spi)
578
562
{
579
563
struct iio_dev * indio_dev ;
580
564
struct admv1013_state * st ;
581
- int ret ;
565
+ int ret , vcm_uv ;
582
566
583
567
indio_dev = devm_iio_device_alloc (& spi -> dev , sizeof (* st ));
584
568
if (!indio_dev )
@@ -597,16 +581,12 @@ static int admv1013_probe(struct spi_device *spi)
597
581
if (ret )
598
582
return ret ;
599
583
600
- ret = regulator_enable (st -> reg );
601
- if (ret ) {
602
- dev_err (& spi -> dev , "Failed to enable specified Common-Mode Voltage!\n" );
603
- return ret ;
604
- }
584
+ ret = devm_regulator_get_enable_read_voltage (& spi -> dev , "vcm" );
585
+ if (ret < 0 )
586
+ return dev_err_probe (& spi -> dev , ret ,
587
+ "failed to get the common-mode voltage\n" );
605
588
606
- ret = devm_add_action_or_reset (& spi -> dev , admv1013_reg_disable ,
607
- st -> reg );
608
- if (ret )
609
- return ret ;
589
+ vcm_uv = ret ;
610
590
611
591
st -> clkin = devm_clk_get_enabled (& spi -> dev , "lo_in" );
612
592
if (IS_ERR (st -> clkin ))
@@ -620,7 +600,7 @@ static int admv1013_probe(struct spi_device *spi)
620
600
621
601
mutex_init (& st -> lock );
622
602
623
- ret = admv1013_init (st );
603
+ ret = admv1013_init (st , vcm_uv );
624
604
if (ret ) {
625
605
dev_err (& spi -> dev , "admv1013 init failed\n" );
626
606
return ret ;
0 commit comments