Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ff3897d authored by Balaji T K's avatar Balaji T K Committed by Liam Girdwood
Browse files

regulator: twl6030: do not write to _GRP for regulator disable



TWL6030: regulator is disabled via VREG_STATE
TWL4030: regulator is disabled via VREG_GRP
Since there is nothing common, split twlreg_enable similar to other regulator_ops

Signed-off-by: default avatarBalaji T K <balajitk@ti.com>
Acked-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: default avatarLiam Girdwood <lrg@slimlogic.co.uk>
parent f8c2940b
Loading
Loading
Loading
Loading
+22 −25
Original line number Diff line number Diff line
@@ -194,7 +194,7 @@ static int twl6030reg_enable(struct regulator_dev *rdev)
	return ret;
}

static int twlreg_disable(struct regulator_dev *rdev)
static int twl4030reg_disable(struct regulator_dev *rdev)
{
	struct twlreg_info	*info = rdev_get_drvdata(rdev);
	int			grp;
@@ -204,27 +204,24 @@ static int twlreg_disable(struct regulator_dev *rdev)
	if (grp < 0)
		return grp;

	/* For 6030, set the off state for all grps enabled */
	if (twl_class_is_6030()) {
		ret = twlreg_write(info, TWL_MODULE_PM_RECEIVER, VREG_STATE,
			(grp & (P1_GRP_6030 | P2_GRP_6030 | P3_GRP_6030)) <<
				TWL6030_CFG_STATE_GRP_SHIFT |
			TWL6030_CFG_STATE_OFF);
		if (ret)
	grp &= ~(P1_GRP_4030 | P2_GRP_4030 | P3_GRP_4030);

	ret = twlreg_write(info, TWL_MODULE_PM_RECEIVER, VREG_GRP, grp);

	return ret;
}

	if (twl_class_is_4030())
		grp &= ~(P1_GRP_4030 | P2_GRP_4030 | P3_GRP_4030);
	else
		grp &= ~(P1_GRP_6030 | P2_GRP_6030 | P3_GRP_6030);
static int twl6030reg_disable(struct regulator_dev *rdev)
{
	struct twlreg_info	*info = rdev_get_drvdata(rdev);
	int			grp = 0;
	int			ret;

	ret = twlreg_write(info, TWL_MODULE_PM_RECEIVER, VREG_GRP, grp);
	grp = P1_GRP_6030 | P2_GRP_6030 | P3_GRP_6030;

	/* Next, associate cleared grp in state register */
	if (!ret && twl_class_is_6030())
	/* For 6030, set the off state for all grps enabled */
	ret = twlreg_write(info, TWL_MODULE_PM_RECEIVER, VREG_STATE,
				grp << TWL6030_CFG_STATE_GRP_SHIFT |
			(grp) << TWL6030_CFG_STATE_GRP_SHIFT |
			TWL6030_CFG_STATE_OFF);

	return ret;
@@ -485,7 +482,7 @@ static struct regulator_ops twl4030ldo_ops = {
	.get_voltage	= twl4030ldo_get_voltage,

	.enable		= twl4030reg_enable,
	.disable	= twlreg_disable,
	.disable	= twl4030reg_disable,
	.is_enabled	= twl4030reg_is_enabled,

	.set_mode	= twl4030reg_set_mode,
@@ -543,7 +540,7 @@ static struct regulator_ops twl6030ldo_ops = {
	.get_voltage	= twl6030ldo_get_voltage,

	.enable		= twl6030reg_enable,
	.disable	= twlreg_disable,
	.disable	= twl6030reg_disable,
	.is_enabled	= twl6030reg_is_enabled,

	.set_mode	= twl6030reg_set_mode,
@@ -576,7 +573,7 @@ static struct regulator_ops twl4030fixed_ops = {
	.get_voltage	= twlfixed_get_voltage,

	.enable		= twl4030reg_enable,
	.disable	= twlreg_disable,
	.disable	= twl4030reg_disable,
	.is_enabled	= twl4030reg_is_enabled,

	.set_mode	= twl4030reg_set_mode,
@@ -590,7 +587,7 @@ static struct regulator_ops twl6030fixed_ops = {
	.get_voltage	= twlfixed_get_voltage,

	.enable		= twl6030reg_enable,
	.disable	= twlreg_disable,
	.disable	= twl6030reg_disable,
	.is_enabled	= twl6030reg_is_enabled,

	.set_mode	= twl6030reg_set_mode,
@@ -600,7 +597,7 @@ static struct regulator_ops twl6030fixed_ops = {

static struct regulator_ops twl6030_fixed_resource = {
	.enable		= twl6030reg_enable,
	.disable	= twlreg_disable,
	.disable	= twl6030reg_disable,
	.is_enabled	= twl6030reg_is_enabled,
	.get_status	= twl6030reg_get_status,
};