@@ -529,6 +529,32 @@ static const struct da9063_regulator_info da9063_regulator_info[] = {
529
529
.ilimit = BFIELD (DA9063_REG_BUCK_ILIM_A ,
530
530
DA9063_BMEM_ILIM_MASK ),
531
531
},
532
+ {
533
+ DA9063_LDO (DA9063 , LDO3 , 900 , 20 , 3440 ),
534
+ .suspend = BFIELD (DA9063_REG_DVC_1 , DA9063_VLDO3_SEL ),
535
+ .oc_event = BFIELD (DA9063_REG_STATUS_D , DA9063_LDO3_LIM ),
536
+ },
537
+ {
538
+ DA9063_LDO (DA9063 , LDO7 , 900 , 50 , 3600 ),
539
+ .suspend = BFIELD (DA9063_REG_LDO7_CONT , DA9063_VLDO7_SEL ),
540
+ .oc_event = BFIELD (DA9063_REG_STATUS_D , DA9063_LDO7_LIM ),
541
+ },
542
+ {
543
+ DA9063_LDO (DA9063 , LDO8 , 900 , 50 , 3600 ),
544
+ .suspend = BFIELD (DA9063_REG_LDO8_CONT , DA9063_VLDO8_SEL ),
545
+ .oc_event = BFIELD (DA9063_REG_STATUS_D , DA9063_LDO8_LIM ),
546
+ },
547
+ {
548
+ DA9063_LDO (DA9063 , LDO9 , 950 , 50 , 3600 ),
549
+ .suspend = BFIELD (DA9063_REG_LDO9_CONT , DA9063_VLDO9_SEL ),
550
+ },
551
+ {
552
+ DA9063_LDO (DA9063 , LDO11 , 900 , 50 , 3600 ),
553
+ .suspend = BFIELD (DA9063_REG_LDO11_CONT , DA9063_VLDO11_SEL ),
554
+ .oc_event = BFIELD (DA9063_REG_STATUS_D , DA9063_LDO11_LIM ),
555
+ },
556
+
557
+ /* The following LDOs are present only on DA9063, not on DA9063L */
532
558
{
533
559
DA9063_LDO (DA9063 , LDO1 , 600 , 20 , 1860 ),
534
560
.suspend = BFIELD (DA9063_REG_DVC_1 , DA9063_VLDO1_SEL ),
@@ -537,11 +563,6 @@ static const struct da9063_regulator_info da9063_regulator_info[] = {
537
563
DA9063_LDO (DA9063 , LDO2 , 600 , 20 , 1860 ),
538
564
.suspend = BFIELD (DA9063_REG_DVC_1 , DA9063_VLDO2_SEL ),
539
565
},
540
- {
541
- DA9063_LDO (DA9063 , LDO3 , 900 , 20 , 3440 ),
542
- .suspend = BFIELD (DA9063_REG_DVC_1 , DA9063_VLDO3_SEL ),
543
- .oc_event = BFIELD (DA9063_REG_STATUS_D , DA9063_LDO3_LIM ),
544
- },
545
566
{
546
567
DA9063_LDO (DA9063 , LDO4 , 900 , 20 , 3440 ),
547
568
.suspend = BFIELD (DA9063_REG_DVC_2 , DA9063_VLDO4_SEL ),
@@ -555,29 +576,11 @@ static const struct da9063_regulator_info da9063_regulator_info[] = {
555
576
DA9063_LDO (DA9063 , LDO6 , 900 , 50 , 3600 ),
556
577
.suspend = BFIELD (DA9063_REG_LDO6_CONT , DA9063_VLDO6_SEL ),
557
578
},
558
- {
559
- DA9063_LDO (DA9063 , LDO7 , 900 , 50 , 3600 ),
560
- .suspend = BFIELD (DA9063_REG_LDO7_CONT , DA9063_VLDO7_SEL ),
561
- .oc_event = BFIELD (DA9063_REG_STATUS_D , DA9063_LDO7_LIM ),
562
- },
563
- {
564
- DA9063_LDO (DA9063 , LDO8 , 900 , 50 , 3600 ),
565
- .suspend = BFIELD (DA9063_REG_LDO8_CONT , DA9063_VLDO8_SEL ),
566
- .oc_event = BFIELD (DA9063_REG_STATUS_D , DA9063_LDO8_LIM ),
567
- },
568
- {
569
- DA9063_LDO (DA9063 , LDO9 , 950 , 50 , 3600 ),
570
- .suspend = BFIELD (DA9063_REG_LDO9_CONT , DA9063_VLDO9_SEL ),
571
- },
579
+
572
580
{
573
581
DA9063_LDO (DA9063 , LDO10 , 900 , 50 , 3600 ),
574
582
.suspend = BFIELD (DA9063_REG_LDO10_CONT , DA9063_VLDO10_SEL ),
575
583
},
576
- {
577
- DA9063_LDO (DA9063 , LDO11 , 900 , 50 , 3600 ),
578
- .suspend = BFIELD (DA9063_REG_LDO11_CONT , DA9063_VLDO11_SEL ),
579
- .oc_event = BFIELD (DA9063_REG_STATUS_D , DA9063_LDO11_LIM ),
580
- },
581
584
};
582
585
583
586
/* Link chip model with regulators info table */
@@ -587,6 +590,11 @@ static struct da9063_dev_model regulators_models[] = {
587
590
.n_regulators = ARRAY_SIZE (da9063_regulator_info ),
588
591
.type = PMIC_TYPE_DA9063 ,
589
592
},
593
+ {
594
+ .regulator_info = da9063_regulator_info ,
595
+ .n_regulators = ARRAY_SIZE (da9063_regulator_info ) - 6 ,
596
+ .type = PMIC_TYPE_DA9063L ,
597
+ },
590
598
{ }
591
599
};
592
600
@@ -641,36 +649,42 @@ static struct of_regulator_match da9063_matches[] = {
641
649
[DA9063_ID_BPERI ] = { .name = "bperi" , },
642
650
[DA9063_ID_BCORES_MERGED ] = { .name = "bcores-merged" },
643
651
[DA9063_ID_BMEM_BIO_MERGED ] = { .name = "bmem-bio-merged" , },
652
+ [DA9063_ID_LDO3 ] = { .name = "ldo3" , },
653
+ [DA9063_ID_LDO7 ] = { .name = "ldo7" , },
654
+ [DA9063_ID_LDO8 ] = { .name = "ldo8" , },
655
+ [DA9063_ID_LDO9 ] = { .name = "ldo9" , },
656
+ [DA9063_ID_LDO11 ] = { .name = "ldo11" , },
657
+ /* The following LDOs are present only on DA9063, not on DA9063L */
644
658
[DA9063_ID_LDO1 ] = { .name = "ldo1" , },
645
659
[DA9063_ID_LDO2 ] = { .name = "ldo2" , },
646
- [DA9063_ID_LDO3 ] = { .name = "ldo3" , },
647
660
[DA9063_ID_LDO4 ] = { .name = "ldo4" , },
648
661
[DA9063_ID_LDO5 ] = { .name = "ldo5" , },
649
662
[DA9063_ID_LDO6 ] = { .name = "ldo6" , },
650
- [DA9063_ID_LDO7 ] = { .name = "ldo7" , },
651
- [DA9063_ID_LDO8 ] = { .name = "ldo8" , },
652
- [DA9063_ID_LDO9 ] = { .name = "ldo9" , },
653
663
[DA9063_ID_LDO10 ] = { .name = "ldo10" , },
654
- [DA9063_ID_LDO11 ] = { .name = "ldo11" , },
655
664
};
656
665
657
666
static struct da9063_regulators_pdata * da9063_parse_regulators_dt (
658
667
struct platform_device * pdev ,
659
668
struct of_regulator_match * * da9063_reg_matches )
660
669
{
670
+ struct da9063 * da9063 = dev_get_drvdata (pdev -> dev .parent );
661
671
struct da9063_regulators_pdata * pdata ;
662
672
struct da9063_regulator_data * rdata ;
663
673
struct device_node * node ;
674
+ int da9063_matches_len = ARRAY_SIZE (da9063_matches );
664
675
int i , n , num ;
665
676
677
+ if (da9063 -> type == PMIC_TYPE_DA9063L )
678
+ da9063_matches_len -= 6 ;
679
+
666
680
node = of_get_child_by_name (pdev -> dev .parent -> of_node , "regulators" );
667
681
if (!node ) {
668
682
dev_err (& pdev -> dev , "Regulators device node not found\n" );
669
683
return ERR_PTR (- ENODEV );
670
684
}
671
685
672
686
num = of_regulator_match (& pdev -> dev , node , da9063_matches ,
673
- ARRAY_SIZE ( da9063_matches ) );
687
+ da9063_matches_len );
674
688
of_node_put (node );
675
689
if (num < 0 ) {
676
690
dev_err (& pdev -> dev , "Failed to match regulators\n" );
@@ -689,7 +703,7 @@ static struct da9063_regulators_pdata *da9063_parse_regulators_dt(
689
703
pdata -> n_regulators = num ;
690
704
691
705
n = 0 ;
692
- for (i = 0 ; i < ARRAY_SIZE ( da9063_matches ) ; i ++ ) {
706
+ for (i = 0 ; i < da9063_matches_len ; i ++ ) {
693
707
if (!da9063_matches [i ].init_data )
694
708
continue ;
695
709
0 commit comments