|
|
|
@ -15,6 +15,36 @@
|
|
|
|
|
#include <linux/regulator/of_regulator.h>
|
|
|
|
|
#include <linux/slab.h>
|
|
|
|
|
|
|
|
|
|
/* Typical regulator startup times as per data sheet in uS */
|
|
|
|
|
#define BD71847_BUCK1_STARTUP_TIME 144
|
|
|
|
|
#define BD71847_BUCK2_STARTUP_TIME 162
|
|
|
|
|
#define BD71847_BUCK3_STARTUP_TIME 162
|
|
|
|
|
#define BD71847_BUCK4_STARTUP_TIME 240
|
|
|
|
|
#define BD71847_BUCK5_STARTUP_TIME 270
|
|
|
|
|
#define BD71847_BUCK6_STARTUP_TIME 200
|
|
|
|
|
#define BD71847_LDO1_STARTUP_TIME 440
|
|
|
|
|
#define BD71847_LDO2_STARTUP_TIME 370
|
|
|
|
|
#define BD71847_LDO3_STARTUP_TIME 310
|
|
|
|
|
#define BD71847_LDO4_STARTUP_TIME 400
|
|
|
|
|
#define BD71847_LDO5_STARTUP_TIME 530
|
|
|
|
|
#define BD71847_LDO6_STARTUP_TIME 400
|
|
|
|
|
|
|
|
|
|
#define BD71837_BUCK1_STARTUP_TIME 160
|
|
|
|
|
#define BD71837_BUCK2_STARTUP_TIME 180
|
|
|
|
|
#define BD71837_BUCK3_STARTUP_TIME 180
|
|
|
|
|
#define BD71837_BUCK4_STARTUP_TIME 180
|
|
|
|
|
#define BD71837_BUCK5_STARTUP_TIME 160
|
|
|
|
|
#define BD71837_BUCK6_STARTUP_TIME 240
|
|
|
|
|
#define BD71837_BUCK7_STARTUP_TIME 220
|
|
|
|
|
#define BD71837_BUCK8_STARTUP_TIME 200
|
|
|
|
|
#define BD71837_LDO1_STARTUP_TIME 440
|
|
|
|
|
#define BD71837_LDO2_STARTUP_TIME 370
|
|
|
|
|
#define BD71837_LDO3_STARTUP_TIME 310
|
|
|
|
|
#define BD71837_LDO4_STARTUP_TIME 400
|
|
|
|
|
#define BD71837_LDO5_STARTUP_TIME 310
|
|
|
|
|
#define BD71837_LDO6_STARTUP_TIME 400
|
|
|
|
|
#define BD71837_LDO7_STARTUP_TIME 530
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* BD718(37/47/50) have two "enable control modes". ON/OFF can either be
|
|
|
|
|
* controlled by software - or by PMIC internal HW state machine. Whether
|
|
|
|
@ -613,6 +643,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.vsel_mask = DVS_BUCK_RUN_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_BUCK1_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71847_BUCK1_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
.of_parse_cb = buck_set_hw_dvs_levels,
|
|
|
|
|
},
|
|
|
|
@ -646,6 +677,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.vsel_mask = DVS_BUCK_RUN_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_BUCK2_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71847_BUCK2_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
.of_parse_cb = buck_set_hw_dvs_levels,
|
|
|
|
|
},
|
|
|
|
@ -680,6 +712,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.linear_range_selectors = bd71847_buck3_volt_range_sel,
|
|
|
|
|
.enable_reg = BD718XX_REG_1ST_NODVS_BUCK_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71847_BUCK3_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -706,6 +739,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.vsel_range_mask = BD71847_BUCK4_RANGE_MASK,
|
|
|
|
|
.linear_range_selectors = bd71847_buck4_volt_range_sel,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71847_BUCK4_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -727,6 +761,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_3RD_NODVS_BUCK_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_3RD_NODVS_BUCK_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71847_BUCK5_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -750,6 +785,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_4TH_NODVS_BUCK_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_4TH_NODVS_BUCK_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71847_BUCK6_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -775,6 +811,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.linear_range_selectors = bd718xx_ldo1_volt_range_sel,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO1_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71847_LDO1_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -796,6 +833,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.n_voltages = ARRAY_SIZE(ldo_2_volts),
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO2_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71847_LDO2_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -818,6 +856,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_LDO3_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO3_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71847_LDO3_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -840,6 +879,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_LDO4_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO4_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71847_LDO4_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -865,6 +905,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.linear_range_selectors = bd71847_ldo5_volt_range_sel,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO5_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71847_LDO5_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -889,6 +930,7 @@ static struct bd718xx_regulator_data bd71847_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_LDO6_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO6_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71847_LDO6_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -942,6 +984,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = DVS_BUCK_RUN_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_BUCK1_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71837_BUCK1_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
.of_parse_cb = buck_set_hw_dvs_levels,
|
|
|
|
|
},
|
|
|
|
@ -975,6 +1018,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = DVS_BUCK_RUN_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_BUCK2_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71837_BUCK2_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
.of_parse_cb = buck_set_hw_dvs_levels,
|
|
|
|
|
},
|
|
|
|
@ -1005,6 +1049,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = DVS_BUCK_RUN_MASK,
|
|
|
|
|
.enable_reg = BD71837_REG_BUCK3_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71837_BUCK3_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
.of_parse_cb = buck_set_hw_dvs_levels,
|
|
|
|
|
},
|
|
|
|
@ -1033,6 +1078,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = DVS_BUCK_RUN_MASK,
|
|
|
|
|
.enable_reg = BD71837_REG_BUCK4_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71837_BUCK4_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
.of_parse_cb = buck_set_hw_dvs_levels,
|
|
|
|
|
},
|
|
|
|
@ -1065,6 +1111,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.linear_range_selectors = bd71837_buck5_volt_range_sel,
|
|
|
|
|
.enable_reg = BD718XX_REG_1ST_NODVS_BUCK_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71837_BUCK5_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1088,6 +1135,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = BD71837_BUCK6_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_2ND_NODVS_BUCK_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71837_BUCK6_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1109,6 +1157,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_3RD_NODVS_BUCK_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_3RD_NODVS_BUCK_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71837_BUCK7_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1132,6 +1181,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_4TH_NODVS_BUCK_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_4TH_NODVS_BUCK_CTRL,
|
|
|
|
|
.enable_mask = BD718XX_BUCK_EN,
|
|
|
|
|
.enable_time = BD71837_BUCK8_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1157,6 +1207,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.linear_range_selectors = bd718xx_ldo1_volt_range_sel,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO1_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71837_LDO1_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1178,6 +1229,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.n_voltages = ARRAY_SIZE(ldo_2_volts),
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO2_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71837_LDO2_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1200,6 +1252,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_LDO3_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO3_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71837_LDO3_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1222,6 +1275,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_LDO4_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO4_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71837_LDO4_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1246,6 +1300,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = BD71837_LDO5_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO5_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71837_LDO5_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1272,6 +1327,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = BD718XX_LDO6_MASK,
|
|
|
|
|
.enable_reg = BD718XX_REG_LDO6_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71837_LDO6_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
@ -1296,6 +1352,7 @@ static struct bd718xx_regulator_data bd71837_regulators[] = {
|
|
|
|
|
.vsel_mask = BD71837_LDO7_MASK,
|
|
|
|
|
.enable_reg = BD71837_REG_LDO7_VOLT,
|
|
|
|
|
.enable_mask = BD718XX_LDO_EN,
|
|
|
|
|
.enable_time = BD71837_LDO7_STARTUP_TIME,
|
|
|
|
|
.owner = THIS_MODULE,
|
|
|
|
|
},
|
|
|
|
|
.init = {
|
|
|
|
|