aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/regulator/lp872x.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/regulator/lp872x.c b/drivers/regulator/lp872x.c
index ddd60c6b27ea..d86b6a3e750d 100644
--- a/drivers/regulator/lp872x.c
+++ b/drivers/regulator/lp872x.c
@@ -86,6 +86,10 @@
86#define EXTERN_DVS_USED 0 86#define EXTERN_DVS_USED 0
87#define MAX_DELAY 6 87#define MAX_DELAY 6
88 88
89/* Default DVS Mode */
90#define LP8720_DEFAULT_DVS 0
91#define LP8725_DEFAULT_DVS BIT(2)
92
89/* dump registers in regmap-debugfs */ 93/* dump registers in regmap-debugfs */
90#define MAX_REGISTERS 0x0F 94#define MAX_REGISTERS 0x0F
91 95
@@ -750,8 +754,13 @@ static int lp872x_check_dvs_validity(struct lp872x *lp)
750static int lp872x_init_dvs(struct lp872x *lp) 754static int lp872x_init_dvs(struct lp872x *lp)
751{ 755{
752 int ret, gpio; 756 int ret, gpio;
753 struct lp872x_dvs *dvs = lp->pdata->dvs; 757 struct lp872x_dvs *dvs = lp->pdata ? lp->pdata->dvs : NULL;
754 enum lp872x_dvs_state pinstate; 758 enum lp872x_dvs_state pinstate;
759 u8 mask[] = { LP8720_EXT_DVS_M, LP8725_DVS1_M | LP8725_DVS2_M };
760 u8 default_dvs_mode[] = { LP8720_DEFAULT_DVS, LP8725_DEFAULT_DVS };
761
762 if (!dvs)
763 goto set_default_dvs_mode;
755 764
756 ret = lp872x_check_dvs_validity(lp); 765 ret = lp872x_check_dvs_validity(lp);
757 if (ret) { 766 if (ret) {
@@ -776,6 +785,10 @@ static int lp872x_init_dvs(struct lp872x *lp)
776 lp->dvs_gpio = gpio; 785 lp->dvs_gpio = gpio;
777 786
778 return 0; 787 return 0;
788
789set_default_dvs_mode:
790 return lp872x_update_bits(lp, LP872X_GENERAL_CFG, mask[lp->chipid],
791 default_dvs_mode[lp->chipid]);
779} 792}
780 793
781static int lp872x_config(struct lp872x *lp) 794static int lp872x_config(struct lp872x *lp)