@@ -366,9 +366,8 @@ static struct hi6421_regulator_info
366
366
367
367
static int hi6421_regulator_enable (struct regulator_dev * rdev )
368
368
{
369
- struct hi6421_regulator_pdata * pdata ;
369
+ struct hi6421_regulator_pdata * pdata = rdev_get_drvdata ( rdev ) ;
370
370
371
- pdata = dev_get_drvdata (rdev -> dev .parent );
372
371
/* hi6421 spec requires regulator enablement must be serialized:
373
372
* - Because when BUCK, LDO switching from off to on, it will have
374
373
* a huge instantaneous current; so you can not turn on two or
@@ -385,9 +384,10 @@ static int hi6421_regulator_enable(struct regulator_dev *rdev)
385
384
386
385
static unsigned int hi6421_regulator_ldo_get_mode (struct regulator_dev * rdev )
387
386
{
388
- struct hi6421_regulator_info * info = rdev_get_drvdata ( rdev ) ;
387
+ struct hi6421_regulator_info * info ;
389
388
unsigned int reg_val ;
390
389
390
+ info = container_of (rdev -> desc , struct hi6421_regulator_info , desc );
391
391
regmap_read (rdev -> regmap , rdev -> desc -> enable_reg , & reg_val );
392
392
if (reg_val & info -> mode_mask )
393
393
return REGULATOR_MODE_IDLE ;
@@ -397,9 +397,10 @@ static unsigned int hi6421_regulator_ldo_get_mode(struct regulator_dev *rdev)
397
397
398
398
static unsigned int hi6421_regulator_buck_get_mode (struct regulator_dev * rdev )
399
399
{
400
- struct hi6421_regulator_info * info = rdev_get_drvdata ( rdev ) ;
400
+ struct hi6421_regulator_info * info ;
401
401
unsigned int reg_val ;
402
402
403
+ info = container_of (rdev -> desc , struct hi6421_regulator_info , desc );
403
404
regmap_read (rdev -> regmap , rdev -> desc -> enable_reg , & reg_val );
404
405
if (reg_val & info -> mode_mask )
405
406
return REGULATOR_MODE_STANDBY ;
@@ -410,9 +411,10 @@ static unsigned int hi6421_regulator_buck_get_mode(struct regulator_dev *rdev)
410
411
static int hi6421_regulator_ldo_set_mode (struct regulator_dev * rdev ,
411
412
unsigned int mode )
412
413
{
413
- struct hi6421_regulator_info * info = rdev_get_drvdata ( rdev ) ;
414
+ struct hi6421_regulator_info * info ;
414
415
unsigned int new_mode ;
415
416
417
+ info = container_of (rdev -> desc , struct hi6421_regulator_info , desc );
416
418
switch (mode ) {
417
419
case REGULATOR_MODE_NORMAL :
418
420
new_mode = 0 ;
@@ -434,9 +436,10 @@ static int hi6421_regulator_ldo_set_mode(struct regulator_dev *rdev,
434
436
static int hi6421_regulator_buck_set_mode (struct regulator_dev * rdev ,
435
437
unsigned int mode )
436
438
{
437
- struct hi6421_regulator_info * info = rdev_get_drvdata ( rdev ) ;
439
+ struct hi6421_regulator_info * info ;
438
440
unsigned int new_mode ;
439
441
442
+ info = container_of (rdev -> desc , struct hi6421_regulator_info , desc );
440
443
switch (mode ) {
441
444
case REGULATOR_MODE_NORMAL :
442
445
new_mode = 0 ;
@@ -459,7 +462,9 @@ static unsigned int
459
462
hi6421_regulator_ldo_get_optimum_mode (struct regulator_dev * rdev ,
460
463
int input_uV , int output_uV , int load_uA )
461
464
{
462
- struct hi6421_regulator_info * info = rdev_get_drvdata (rdev );
465
+ struct hi6421_regulator_info * info ;
466
+
467
+ info = container_of (rdev -> desc , struct hi6421_regulator_info , desc );
463
468
464
469
if (load_uA > info -> eco_microamp )
465
470
return REGULATOR_MODE_NORMAL ;
@@ -543,14 +548,13 @@ static int hi6421_regulator_probe(struct platform_device *pdev)
543
548
if (!pdata )
544
549
return - ENOMEM ;
545
550
mutex_init (& pdata -> lock );
546
- platform_set_drvdata (pdev , pdata );
547
551
548
552
for (i = 0 ; i < ARRAY_SIZE (hi6421_regulator_info ); i ++ ) {
549
553
/* assign per-regulator data */
550
554
info = & hi6421_regulator_info [i ];
551
555
552
556
config .dev = pdev -> dev .parent ;
553
- config .driver_data = info ;
557
+ config .driver_data = pdata ;
554
558
config .regmap = pmic -> regmap ;
555
559
556
560
rdev = devm_regulator_register (& pdev -> dev , & info -> desc ,
0 commit comments