@@ -173,8 +173,8 @@ static const struct coefficients adm1293_coefficients[] = {
173
173
[18 ] = { 7658 , 0 , -3 }, /* power, 21V, irange200 */
174
174
};
175
175
176
- static int adm1275_read_pmon_config (const struct adm1275_data * data ,
177
- struct i2c_client * client , bool is_power )
176
+ static int adm1275_read_samples (const struct adm1275_data * data ,
177
+ struct i2c_client * client , bool is_power )
178
178
{
179
179
int shift , ret ;
180
180
u16 mask ;
@@ -200,8 +200,23 @@ static int adm1275_read_pmon_config(const struct adm1275_data *data,
200
200
}
201
201
202
202
static int adm1275_write_pmon_config (const struct adm1275_data * data ,
203
- struct i2c_client * client ,
204
- bool is_power , u16 word )
203
+ struct i2c_client * client , u16 word )
204
+ {
205
+ int ret ;
206
+
207
+ if (data -> have_power_sampling )
208
+ ret = i2c_smbus_write_word_data (client , ADM1275_PMON_CONFIG ,
209
+ word );
210
+ else
211
+ ret = i2c_smbus_write_byte_data (client , ADM1275_PMON_CONFIG ,
212
+ word );
213
+
214
+ return ret ;
215
+ }
216
+
217
+ static int adm1275_write_samples (const struct adm1275_data * data ,
218
+ struct i2c_client * client ,
219
+ bool is_power , u16 word )
205
220
{
206
221
int shift , ret ;
207
222
u16 mask ;
@@ -219,14 +234,8 @@ static int adm1275_write_pmon_config(const struct adm1275_data *data,
219
234
return ret ;
220
235
221
236
word = (ret & ~mask ) | ((word << shift ) & mask );
222
- if (data -> have_power_sampling )
223
- ret = i2c_smbus_write_word_data (client , ADM1275_PMON_CONFIG ,
224
- word );
225
- else
226
- ret = i2c_smbus_write_byte_data (client , ADM1275_PMON_CONFIG ,
227
- word );
228
237
229
- return ret ;
238
+ return adm1275_write_pmon_config ( data , client , word ) ;
230
239
}
231
240
232
241
static int adm1275_read_word_data (struct i2c_client * client , int page ,
@@ -321,14 +330,14 @@ static int adm1275_read_word_data(struct i2c_client *client, int page,
321
330
case PMBUS_VIRT_POWER_SAMPLES :
322
331
if (!data -> have_power_sampling )
323
332
return - ENXIO ;
324
- ret = adm1275_read_pmon_config (data , client , true);
333
+ ret = adm1275_read_samples (data , client , true);
325
334
if (ret < 0 )
326
335
break ;
327
336
ret = BIT (ret );
328
337
break ;
329
338
case PMBUS_VIRT_IN_SAMPLES :
330
339
case PMBUS_VIRT_CURR_SAMPLES :
331
- ret = adm1275_read_pmon_config (data , client , false);
340
+ ret = adm1275_read_samples (data , client , false);
332
341
if (ret < 0 )
333
342
break ;
334
343
ret = BIT (ret );
@@ -381,14 +390,12 @@ static int adm1275_write_word_data(struct i2c_client *client, int page, int reg,
381
390
if (!data -> have_power_sampling )
382
391
return - ENXIO ;
383
392
word = clamp_val (word , 1 , ADM1275_SAMPLES_AVG_MAX );
384
- ret = adm1275_write_pmon_config (data , client , true,
385
- ilog2 (word ));
393
+ ret = adm1275_write_samples (data , client , true, ilog2 (word ));
386
394
break ;
387
395
case PMBUS_VIRT_IN_SAMPLES :
388
396
case PMBUS_VIRT_CURR_SAMPLES :
389
397
word = clamp_val (word , 1 , ADM1275_SAMPLES_AVG_MAX );
390
- ret = adm1275_write_pmon_config (data , client , false,
391
- ilog2 (word ));
398
+ ret = adm1275_write_samples (data , client , false, ilog2 (word ));
392
399
break ;
393
400
default :
394
401
ret = - ENODATA ;
@@ -466,13 +473,14 @@ static const struct i2c_device_id adm1275_id[] = {
466
473
MODULE_DEVICE_TABLE (i2c , adm1275_id );
467
474
468
475
/* Enable VOUT & TEMP1 if not enabled (disabled by default) */
469
- static int adm1275_enable_vout_temp (struct i2c_client * client , int config )
476
+ static int adm1275_enable_vout_temp (struct adm1275_data * data ,
477
+ struct i2c_client * client , int config )
470
478
{
471
479
int ret ;
472
480
473
481
if ((config & ADM1278_PMON_DEFCONFIG ) != ADM1278_PMON_DEFCONFIG ) {
474
482
config |= ADM1278_PMON_DEFCONFIG ;
475
- ret = i2c_smbus_write_word_data ( client , ADM1275_PMON_CONFIG , config );
483
+ ret = adm1275_write_pmon_config ( data , client , config );
476
484
if (ret < 0 ) {
477
485
dev_err (& client -> dev , "Failed to enable VOUT/TEMP1 monitoring\n" );
478
486
return ret ;
@@ -634,7 +642,7 @@ static int adm1275_probe(struct i2c_client *client)
634
642
PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
635
643
PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP ;
636
644
637
- ret = adm1275_enable_vout_temp (client , config );
645
+ ret = adm1275_enable_vout_temp (data , client , config );
638
646
if (ret )
639
647
return ret ;
640
648
@@ -694,7 +702,7 @@ static int adm1275_probe(struct i2c_client *client)
694
702
PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
695
703
PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP ;
696
704
697
- ret = adm1275_enable_vout_temp (client , config );
705
+ ret = adm1275_enable_vout_temp (data , client , config );
698
706
if (ret )
699
707
return ret ;
700
708
@@ -766,8 +774,7 @@ static int adm1275_probe(struct i2c_client *client)
766
774
"Invalid number of power samples" );
767
775
return - EINVAL ;
768
776
}
769
- ret = adm1275_write_pmon_config (data , client , true,
770
- ilog2 (avg ));
777
+ ret = adm1275_write_samples (data , client , true, ilog2 (avg ));
771
778
if (ret < 0 ) {
772
779
dev_err (& client -> dev ,
773
780
"Setting power sample averaging failed with error %d" ,
@@ -784,8 +791,7 @@ static int adm1275_probe(struct i2c_client *client)
784
791
"Invalid number of voltage/current samples" );
785
792
return - EINVAL ;
786
793
}
787
- ret = adm1275_write_pmon_config (data , client , false,
788
- ilog2 (avg ));
794
+ ret = adm1275_write_samples (data , client , false, ilog2 (avg ));
789
795
if (ret < 0 ) {
790
796
dev_err (& client -> dev ,
791
797
"Setting voltage and current sample averaging failed with error %d" ,
0 commit comments