@@ -26,7 +26,6 @@ struct da9052_hwmon {
26
26
struct mutex hwmon_lock ;
27
27
bool tsi_as_adc ;
28
28
int tsiref_mv ;
29
- struct regulator * tsiref ;
30
29
struct completion tsidone ;
31
30
};
32
31
@@ -397,7 +396,7 @@ static int da9052_hwmon_probe(struct platform_device *pdev)
397
396
struct device * dev = & pdev -> dev ;
398
397
struct da9052_hwmon * hwmon ;
399
398
struct device * hwmon_dev ;
400
- int err ;
399
+ int err , tsiref_uv ;
401
400
402
401
hwmon = devm_kzalloc (dev , sizeof (struct da9052_hwmon ), GFP_KERNEL );
403
402
if (!hwmon )
@@ -414,32 +413,20 @@ static int da9052_hwmon_probe(struct platform_device *pdev)
414
413
device_property_read_bool (pdev -> dev .parent , "dlg,tsi-as-adc" );
415
414
416
415
if (hwmon -> tsi_as_adc ) {
417
- hwmon -> tsiref = devm_regulator_get (pdev -> dev .parent , "tsiref" );
418
- if (IS_ERR (hwmon -> tsiref )) {
419
- err = PTR_ERR (hwmon -> tsiref );
420
- dev_err (& pdev -> dev , "failed to get tsiref: %d" , err );
421
- return err ;
422
- }
423
-
424
- err = regulator_enable (hwmon -> tsiref );
425
- if (err )
426
- return err ;
427
-
428
- hwmon -> tsiref_mv = regulator_get_voltage (hwmon -> tsiref );
429
- if (hwmon -> tsiref_mv < 0 ) {
430
- err = hwmon -> tsiref_mv ;
431
- goto exit_regulator ;
432
- }
416
+ tsiref_uv = devm_regulator_get_enable_read_voltage (dev -> parent ,
417
+ "tsiref" );
418
+ if (tsiref_uv < 0 )
419
+ return dev_err_probe (dev , tsiref_uv ,
420
+ "failed to get tsiref voltage\n" );
433
421
434
422
/* convert from microvolt (DT) to millivolt (hwmon) */
435
- hwmon -> tsiref_mv /= 1000 ;
423
+ hwmon -> tsiref_mv = tsiref_uv / 1000 ;
436
424
437
425
/* TSIREF limits from datasheet */
438
426
if (hwmon -> tsiref_mv < 1800 || hwmon -> tsiref_mv > 2600 ) {
439
427
dev_err (hwmon -> da9052 -> dev , "invalid TSIREF voltage: %d" ,
440
428
hwmon -> tsiref_mv );
441
- err = - ENXIO ;
442
- goto exit_regulator ;
429
+ return - ENXIO ;
443
430
}
444
431
445
432
/* disable touchscreen features */
@@ -456,7 +443,7 @@ static int da9052_hwmon_probe(struct platform_device *pdev)
456
443
if (err ) {
457
444
dev_err (& pdev -> dev , "Failed to register TSIRDY IRQ: %d" ,
458
445
err );
459
- goto exit_regulator ;
446
+ return err ;
460
447
}
461
448
}
462
449
@@ -472,9 +459,6 @@ static int da9052_hwmon_probe(struct platform_device *pdev)
472
459
exit_irq :
473
460
if (hwmon -> tsi_as_adc )
474
461
da9052_free_irq (hwmon -> da9052 , DA9052_IRQ_TSIREADY , hwmon );
475
- exit_regulator :
476
- if (hwmon -> tsiref )
477
- regulator_disable (hwmon -> tsiref );
478
462
479
463
return err ;
480
464
}
@@ -483,10 +467,8 @@ static void da9052_hwmon_remove(struct platform_device *pdev)
483
467
{
484
468
struct da9052_hwmon * hwmon = platform_get_drvdata (pdev );
485
469
486
- if (hwmon -> tsi_as_adc ) {
470
+ if (hwmon -> tsi_as_adc )
487
471
da9052_free_irq (hwmon -> da9052 , DA9052_IRQ_TSIREADY , hwmon );
488
- regulator_disable (hwmon -> tsiref );
489
- }
490
472
}
491
473
492
474
static struct platform_driver da9052_hwmon_driver = {
0 commit comments