diff --git a/drivers/mfd/tps65218.c b/drivers/mfd/tps65218.c
index d290c746e..8d3937454 100644
--- a/drivers/mfd/tps65218.c
+++ b/drivers/mfd/tps65218.c
@@ -247,6 +247,12 @@ static int tps65218_probe(struct i2c_client *client,
 
 	tps->rev = chipid & TPS65218_CHIPID_REV_MASK;
 
+	tps65218_clear_bits(tps, TPS65218_REG_ENABLE2, TPS65218_ENABLE2_GPIO1 ,TPS65218_PROTECT_L1);
+	tps65218_clear_bits(tps, TPS65218_REG_CONFIG2, TPS65218_CONFIG2_DC12_RST ,TPS65218_PROTECT_L1);
+	tps65218_clear_bits(tps, TPS65218_REG_CONTROL_DCDC3, TPS65218_CONTROL_DCDC3_PFM ,TPS65218_PROTECT_L1);
+	tps65218_clear_bits(tps, TPS65218_REG_CONTROL_DCDC4, TPS65218_CONTROL_DCDC4_PFM ,TPS65218_PROTECT_L1);
+	tps65218_clear_bits(tps, TPS65218_REG_SEQ5, (TPS65218_SEQ5_DC6_SEQ_MASK|TPS65218_SEQ5_DC5_SEQ_MASK) ,TPS65218_PROTECT_L1);
+
 	ret = of_platform_populate(client->dev.of_node, NULL, NULL,
 				   &client->dev);
 	if (ret < 0)
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index 6a9cdd907..223a811ad 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -963,6 +963,7 @@ static int machine_constraints_current(struct regulator_dev *rdev,
 }
 
 static int _regulator_do_enable(struct regulator_dev *rdev);
+static int _regulator_do_disable(struct regulator_dev *rdev);
 
 /**
  * set_machine_constraints - sets regulator constraints
@@ -1031,6 +1032,13 @@ static int set_machine_constraints(struct regulator_dev *rdev,
 			goto out;
 		}
 	}
+	else{
+		ret = _regulator_do_disable(rdev);
+		if (ret < 0 && ret != -EINVAL) {
+			rdev_err(rdev, "failed to disable\n");
+			goto out;
+		}
+	}
 
 	if ((rdev->constraints->ramp_delay || rdev->constraints->ramp_disable)
 		&& ops->set_ramp_delay) {
diff --git a/drivers/regulator/tps65218-regulator.c b/drivers/regulator/tps65218-regulator.c
index 865c11e31..ddd4b1797 100644
--- a/drivers/regulator/tps65218-regulator.c
+++ b/drivers/regulator/tps65218-regulator.c
@@ -71,7 +71,7 @@ static const struct regulator_linear_range ldo1_dcdc3_ranges[] = {
 
 static const struct regulator_linear_range dcdc4_ranges[] = {
 	REGULATOR_LINEAR_RANGE(1175000, 0x0, 0xf, 25000),
-	REGULATOR_LINEAR_RANGE(1550000, 0x10, 0x34, 50000),
+	REGULATOR_LINEAR_RANGE(1600000, 0x10, 0x34, 50000),
 };
 
 static struct tps_info tps65218_pmic_regs[] = {
