@@ -95,7 +95,6 @@ struct admv1013_state {
9595 struct clk * clkin ;
9696 /* Protect against concurrent accesses to the device and to data */
9797 struct mutex lock ;
98- struct regulator * reg ;
9998 struct notifier_block nb ;
10099 unsigned int input_mode ;
101100 unsigned int quad_se_mode ;
@@ -342,14 +341,9 @@ static int admv1013_update_quad_filters(struct admv1013_state *st)
342341 FIELD_PREP (ADMV1013_QUAD_FILTERS_MSK , filt_raw ));
343342}
344343
345- static int admv1013_update_mixer_vgate (struct admv1013_state * st )
344+ static int admv1013_update_mixer_vgate (struct admv1013_state * st , int vcm )
346345{
347346 unsigned int mixer_vgate ;
348- int vcm ;
349-
350- vcm = regulator_get_voltage (st -> reg );
351- if (vcm < 0 )
352- return vcm ;
353347
354348 if (vcm <= 1800000 )
355349 mixer_vgate = (2389 * vcm / 1000000 + 8100 ) / 100 ;
@@ -443,7 +437,7 @@ static const struct iio_chan_spec admv1013_channels[] = {
443437 ADMV1013_CHAN_CALIB (1 , Q ),
444438};
445439
446- static int admv1013_init (struct admv1013_state * st )
440+ static int admv1013_init (struct admv1013_state * st , int vcm_uv )
447441{
448442 int ret ;
449443 unsigned int data ;
@@ -483,7 +477,7 @@ static int admv1013_init(struct admv1013_state *st)
483477 if (ret )
484478 return ret ;
485479
486- ret = admv1013_update_mixer_vgate (st );
480+ ret = admv1013_update_mixer_vgate (st , vcm_uv );
487481 if (ret )
488482 return ret ;
489483
@@ -498,11 +492,6 @@ static int admv1013_init(struct admv1013_state *st)
498492 st -> input_mode );
499493}
500494
501- static void admv1013_reg_disable (void * data )
502- {
503- regulator_disable (data );
504- }
505-
506495static void admv1013_powerdown (void * data )
507496{
508497 unsigned int enable_reg , enable_reg_msk ;
@@ -557,11 +546,6 @@ static int admv1013_properties_parse(struct admv1013_state *st)
557546 else
558547 return - EINVAL ;
559548
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-
565549 ret = devm_regulator_bulk_get_enable (& st -> spi -> dev ,
566550 ARRAY_SIZE (admv1013_vcc_regs ),
567551 admv1013_vcc_regs );
@@ -578,7 +562,7 @@ static int admv1013_probe(struct spi_device *spi)
578562{
579563 struct iio_dev * indio_dev ;
580564 struct admv1013_state * st ;
581- int ret ;
565+ int ret , vcm_uv ;
582566
583567 indio_dev = devm_iio_device_alloc (& spi -> dev , sizeof (* st ));
584568 if (!indio_dev )
@@ -597,16 +581,12 @@ static int admv1013_probe(struct spi_device *spi)
597581 if (ret )
598582 return ret ;
599583
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" );
605588
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 ;
610590
611591 st -> clkin = devm_clk_get_enabled (& spi -> dev , "lo_in" );
612592 if (IS_ERR (st -> clkin ))
@@ -620,7 +600,7 @@ static int admv1013_probe(struct spi_device *spi)
620600
621601 mutex_init (& st -> lock );
622602
623- ret = admv1013_init (st );
603+ ret = admv1013_init (st , vcm_uv );
624604 if (ret ) {
625605 dev_err (& spi -> dev , "admv1013 init failed\n" );
626606 return ret ;
0 commit comments