15
15
#include <linux/regulator/of_regulator.h>
16
16
#include <linux/slab.h>
17
17
18
+ /* Typical regulator startup times as per data sheet in uS */
19
+ #define BD71847_BUCK1_STARTUP_TIME 144
20
+ #define BD71847_BUCK2_STARTUP_TIME 162
21
+ #define BD71847_BUCK3_STARTUP_TIME 162
22
+ #define BD71847_BUCK4_STARTUP_TIME 240
23
+ #define BD71847_BUCK5_STARTUP_TIME 270
24
+ #define BD71847_BUCK6_STARTUP_TIME 200
25
+ #define BD71847_LDO1_STARTUP_TIME 440
26
+ #define BD71847_LDO2_STARTUP_TIME 370
27
+ #define BD71847_LDO3_STARTUP_TIME 310
28
+ #define BD71847_LDO4_STARTUP_TIME 400
29
+ #define BD71847_LDO5_STARTUP_TIME 530
30
+ #define BD71847_LDO6_STARTUP_TIME 400
31
+
32
+ #define BD71837_BUCK1_STARTUP_TIME 160
33
+ #define BD71837_BUCK2_STARTUP_TIME 180
34
+ #define BD71837_BUCK3_STARTUP_TIME 180
35
+ #define BD71837_BUCK4_STARTUP_TIME 180
36
+ #define BD71837_BUCK5_STARTUP_TIME 160
37
+ #define BD71837_BUCK6_STARTUP_TIME 240
38
+ #define BD71837_BUCK7_STARTUP_TIME 220
39
+ #define BD71837_BUCK8_STARTUP_TIME 200
40
+ #define BD71837_LDO1_STARTUP_TIME 440
41
+ #define BD71837_LDO2_STARTUP_TIME 370
42
+ #define BD71837_LDO3_STARTUP_TIME 310
43
+ #define BD71837_LDO4_STARTUP_TIME 400
44
+ #define BD71837_LDO5_STARTUP_TIME 310
45
+ #define BD71837_LDO6_STARTUP_TIME 400
46
+ #define BD71837_LDO7_STARTUP_TIME 530
47
+
18
48
/*
19
49
* BD718(37/47/50) have two "enable control modes". ON/OFF can either be
20
50
* controlled by software - or by PMIC internal HW state machine. Whether
@@ -613,6 +643,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
613
643
.vsel_mask = DVS_BUCK_RUN_MASK ,
614
644
.enable_reg = BD718XX_REG_BUCK1_CTRL ,
615
645
.enable_mask = BD718XX_BUCK_EN ,
646
+ .enable_time = BD71847_BUCK1_STARTUP_TIME ,
616
647
.owner = THIS_MODULE ,
617
648
.of_parse_cb = buck_set_hw_dvs_levels ,
618
649
},
@@ -646,6 +677,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
646
677
.vsel_mask = DVS_BUCK_RUN_MASK ,
647
678
.enable_reg = BD718XX_REG_BUCK2_CTRL ,
648
679
.enable_mask = BD718XX_BUCK_EN ,
680
+ .enable_time = BD71847_BUCK2_STARTUP_TIME ,
649
681
.owner = THIS_MODULE ,
650
682
.of_parse_cb = buck_set_hw_dvs_levels ,
651
683
},
@@ -680,6 +712,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
680
712
.linear_range_selectors = bd71847_buck3_volt_range_sel ,
681
713
.enable_reg = BD718XX_REG_1ST_NODVS_BUCK_CTRL ,
682
714
.enable_mask = BD718XX_BUCK_EN ,
715
+ .enable_time = BD71847_BUCK3_STARTUP_TIME ,
683
716
.owner = THIS_MODULE ,
684
717
},
685
718
.init = {
@@ -706,6 +739,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
706
739
.vsel_range_mask = BD71847_BUCK4_RANGE_MASK ,
707
740
.linear_range_selectors = bd71847_buck4_volt_range_sel ,
708
741
.enable_mask = BD718XX_BUCK_EN ,
742
+ .enable_time = BD71847_BUCK4_STARTUP_TIME ,
709
743
.owner = THIS_MODULE ,
710
744
},
711
745
.init = {
@@ -727,6 +761,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
727
761
.vsel_mask = BD718XX_3RD_NODVS_BUCK_MASK ,
728
762
.enable_reg = BD718XX_REG_3RD_NODVS_BUCK_CTRL ,
729
763
.enable_mask = BD718XX_BUCK_EN ,
764
+ .enable_time = BD71847_BUCK5_STARTUP_TIME ,
730
765
.owner = THIS_MODULE ,
731
766
},
732
767
.init = {
@@ -750,6 +785,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
750
785
.vsel_mask = BD718XX_4TH_NODVS_BUCK_MASK ,
751
786
.enable_reg = BD718XX_REG_4TH_NODVS_BUCK_CTRL ,
752
787
.enable_mask = BD718XX_BUCK_EN ,
788
+ .enable_time = BD71847_BUCK6_STARTUP_TIME ,
753
789
.owner = THIS_MODULE ,
754
790
},
755
791
.init = {
@@ -775,6 +811,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
775
811
.linear_range_selectors = bd718xx_ldo1_volt_range_sel ,
776
812
.enable_reg = BD718XX_REG_LDO1_VOLT ,
777
813
.enable_mask = BD718XX_LDO_EN ,
814
+ .enable_time = BD71847_LDO1_STARTUP_TIME ,
778
815
.owner = THIS_MODULE ,
779
816
},
780
817
.init = {
@@ -796,6 +833,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
796
833
.n_voltages = ARRAY_SIZE (ldo_2_volts ),
797
834
.enable_reg = BD718XX_REG_LDO2_VOLT ,
798
835
.enable_mask = BD718XX_LDO_EN ,
836
+ .enable_time = BD71847_LDO2_STARTUP_TIME ,
799
837
.owner = THIS_MODULE ,
800
838
},
801
839
.init = {
@@ -818,6 +856,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
818
856
.vsel_mask = BD718XX_LDO3_MASK ,
819
857
.enable_reg = BD718XX_REG_LDO3_VOLT ,
820
858
.enable_mask = BD718XX_LDO_EN ,
859
+ .enable_time = BD71847_LDO3_STARTUP_TIME ,
821
860
.owner = THIS_MODULE ,
822
861
},
823
862
.init = {
@@ -840,6 +879,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
840
879
.vsel_mask = BD718XX_LDO4_MASK ,
841
880
.enable_reg = BD718XX_REG_LDO4_VOLT ,
842
881
.enable_mask = BD718XX_LDO_EN ,
882
+ .enable_time = BD71847_LDO4_STARTUP_TIME ,
843
883
.owner = THIS_MODULE ,
844
884
},
845
885
.init = {
@@ -865,6 +905,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
865
905
.linear_range_selectors = bd71847_ldo5_volt_range_sel ,
866
906
.enable_reg = BD718XX_REG_LDO5_VOLT ,
867
907
.enable_mask = BD718XX_LDO_EN ,
908
+ .enable_time = BD71847_LDO5_STARTUP_TIME ,
868
909
.owner = THIS_MODULE ,
869
910
},
870
911
.init = {
@@ -889,6 +930,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
889
930
.vsel_mask = BD718XX_LDO6_MASK ,
890
931
.enable_reg = BD718XX_REG_LDO6_VOLT ,
891
932
.enable_mask = BD718XX_LDO_EN ,
933
+ .enable_time = BD71847_LDO6_STARTUP_TIME ,
892
934
.owner = THIS_MODULE ,
893
935
},
894
936
.init = {
@@ -942,6 +984,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
942
984
.vsel_mask = DVS_BUCK_RUN_MASK ,
943
985
.enable_reg = BD718XX_REG_BUCK1_CTRL ,
944
986
.enable_mask = BD718XX_BUCK_EN ,
987
+ .enable_time = BD71837_BUCK1_STARTUP_TIME ,
945
988
.owner = THIS_MODULE ,
946
989
.of_parse_cb = buck_set_hw_dvs_levels ,
947
990
},
@@ -975,6 +1018,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
975
1018
.vsel_mask = DVS_BUCK_RUN_MASK ,
976
1019
.enable_reg = BD718XX_REG_BUCK2_CTRL ,
977
1020
.enable_mask = BD718XX_BUCK_EN ,
1021
+ .enable_time = BD71837_BUCK2_STARTUP_TIME ,
978
1022
.owner = THIS_MODULE ,
979
1023
.of_parse_cb = buck_set_hw_dvs_levels ,
980
1024
},
@@ -1005,6 +1049,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1005
1049
.vsel_mask = DVS_BUCK_RUN_MASK ,
1006
1050
.enable_reg = BD71837_REG_BUCK3_CTRL ,
1007
1051
.enable_mask = BD718XX_BUCK_EN ,
1052
+ .enable_time = BD71837_BUCK3_STARTUP_TIME ,
1008
1053
.owner = THIS_MODULE ,
1009
1054
.of_parse_cb = buck_set_hw_dvs_levels ,
1010
1055
},
@@ -1033,6 +1078,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1033
1078
.vsel_mask = DVS_BUCK_RUN_MASK ,
1034
1079
.enable_reg = BD71837_REG_BUCK4_CTRL ,
1035
1080
.enable_mask = BD718XX_BUCK_EN ,
1081
+ .enable_time = BD71837_BUCK4_STARTUP_TIME ,
1036
1082
.owner = THIS_MODULE ,
1037
1083
.of_parse_cb = buck_set_hw_dvs_levels ,
1038
1084
},
@@ -1065,6 +1111,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1065
1111
.linear_range_selectors = bd71837_buck5_volt_range_sel ,
1066
1112
.enable_reg = BD718XX_REG_1ST_NODVS_BUCK_CTRL ,
1067
1113
.enable_mask = BD718XX_BUCK_EN ,
1114
+ .enable_time = BD71837_BUCK5_STARTUP_TIME ,
1068
1115
.owner = THIS_MODULE ,
1069
1116
},
1070
1117
.init = {
@@ -1088,6 +1135,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1088
1135
.vsel_mask = BD71837_BUCK6_MASK ,
1089
1136
.enable_reg = BD718XX_REG_2ND_NODVS_BUCK_CTRL ,
1090
1137
.enable_mask = BD718XX_BUCK_EN ,
1138
+ .enable_time = BD71837_BUCK6_STARTUP_TIME ,
1091
1139
.owner = THIS_MODULE ,
1092
1140
},
1093
1141
.init = {
@@ -1109,6 +1157,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1109
1157
.vsel_mask = BD718XX_3RD_NODVS_BUCK_MASK ,
1110
1158
.enable_reg = BD718XX_REG_3RD_NODVS_BUCK_CTRL ,
1111
1159
.enable_mask = BD718XX_BUCK_EN ,
1160
+ .enable_time = BD71837_BUCK7_STARTUP_TIME ,
1112
1161
.owner = THIS_MODULE ,
1113
1162
},
1114
1163
.init = {
@@ -1132,6 +1181,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1132
1181
.vsel_mask = BD718XX_4TH_NODVS_BUCK_MASK ,
1133
1182
.enable_reg = BD718XX_REG_4TH_NODVS_BUCK_CTRL ,
1134
1183
.enable_mask = BD718XX_BUCK_EN ,
1184
+ .enable_time = BD71837_BUCK8_STARTUP_TIME ,
1135
1185
.owner = THIS_MODULE ,
1136
1186
},
1137
1187
.init = {
@@ -1157,6 +1207,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1157
1207
.linear_range_selectors = bd718xx_ldo1_volt_range_sel ,
1158
1208
.enable_reg = BD718XX_REG_LDO1_VOLT ,
1159
1209
.enable_mask = BD718XX_LDO_EN ,
1210
+ .enable_time = BD71837_LDO1_STARTUP_TIME ,
1160
1211
.owner = THIS_MODULE ,
1161
1212
},
1162
1213
.init = {
@@ -1178,6 +1229,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1178
1229
.n_voltages = ARRAY_SIZE (ldo_2_volts ),
1179
1230
.enable_reg = BD718XX_REG_LDO2_VOLT ,
1180
1231
.enable_mask = BD718XX_LDO_EN ,
1232
+ .enable_time = BD71837_LDO2_STARTUP_TIME ,
1181
1233
.owner = THIS_MODULE ,
1182
1234
},
1183
1235
.init = {
@@ -1200,6 +1252,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1200
1252
.vsel_mask = BD718XX_LDO3_MASK ,
1201
1253
.enable_reg = BD718XX_REG_LDO3_VOLT ,
1202
1254
.enable_mask = BD718XX_LDO_EN ,
1255
+ .enable_time = BD71837_LDO3_STARTUP_TIME ,
1203
1256
.owner = THIS_MODULE ,
1204
1257
},
1205
1258
.init = {
@@ -1222,6 +1275,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1222
1275
.vsel_mask = BD718XX_LDO4_MASK ,
1223
1276
.enable_reg = BD718XX_REG_LDO4_VOLT ,
1224
1277
.enable_mask = BD718XX_LDO_EN ,
1278
+ .enable_time = BD71837_LDO4_STARTUP_TIME ,
1225
1279
.owner = THIS_MODULE ,
1226
1280
},
1227
1281
.init = {
@@ -1246,6 +1300,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1246
1300
.vsel_mask = BD71837_LDO5_MASK ,
1247
1301
.enable_reg = BD718XX_REG_LDO5_VOLT ,
1248
1302
.enable_mask = BD718XX_LDO_EN ,
1303
+ .enable_time = BD71837_LDO5_STARTUP_TIME ,
1249
1304
.owner = THIS_MODULE ,
1250
1305
},
1251
1306
.init = {
@@ -1272,6 +1327,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1272
1327
.vsel_mask = BD718XX_LDO6_MASK ,
1273
1328
.enable_reg = BD718XX_REG_LDO6_VOLT ,
1274
1329
.enable_mask = BD718XX_LDO_EN ,
1330
+ .enable_time = BD71837_LDO6_STARTUP_TIME ,
1275
1331
.owner = THIS_MODULE ,
1276
1332
},
1277
1333
.init = {
@@ -1296,6 +1352,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
1296
1352
.vsel_mask = BD71837_LDO7_MASK ,
1297
1353
.enable_reg = BD71837_REG_LDO7_VOLT ,
1298
1354
.enable_mask = BD718XX_LDO_EN ,
1355
+ .enable_time = BD71837_LDO7_STARTUP_TIME ,
1299
1356
.owner = THIS_MODULE ,
1300
1357
},
1301
1358
.init = {
0 commit comments