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

Commit ad0b40fe authored by Alban Bedel's avatar Alban Bedel Committed by Mark Brown
Browse files

regulator: tps6586x: Prepare supporting fixed regulators



Add the required definitions and macros to allow easily adding fixed
regulators. This required for the TPS658640 that doesn't allow setting
the LDO_RTC output voltage.

Signed-off-by: default avatarAlban Bedel <alban.bedel@avionic-design.de>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent c9eaa447
Loading
Loading
Loading
Loading
+22 −5
Original line number Original line Diff line number Diff line
@@ -68,7 +68,7 @@ static inline struct device *to_tps6586x_dev(struct regulator_dev *rdev)
	return rdev_get_dev(rdev)->parent;
	return rdev_get_dev(rdev)->parent;
}
}


static struct regulator_ops tps6586x_regulator_ops = {
static struct regulator_ops tps6586x_rw_regulator_ops = {
	.list_voltage = regulator_list_voltage_table,
	.list_voltage = regulator_list_voltage_table,
	.map_voltage = regulator_map_voltage_ascend,
	.map_voltage = regulator_map_voltage_ascend,
	.get_voltage_sel = regulator_get_voltage_sel_regmap,
	.get_voltage_sel = regulator_get_voltage_sel_regmap,
@@ -79,6 +79,16 @@ static struct regulator_ops tps6586x_regulator_ops = {
	.disable = regulator_disable_regmap,
	.disable = regulator_disable_regmap,
};
};


static struct regulator_ops tps6586x_ro_regulator_ops = {
	.list_voltage = regulator_list_voltage_table,
	.map_voltage = regulator_map_voltage_ascend,
	.get_voltage_sel = regulator_get_voltage_sel_regmap,

	.is_enabled = regulator_is_enabled_regmap,
	.enable = regulator_enable_regmap,
	.disable = regulator_disable_regmap,
};

static struct regulator_ops tps6586x_sys_regulator_ops = {
static struct regulator_ops tps6586x_sys_regulator_ops = {
};
};


@@ -120,12 +130,12 @@ static const unsigned int tps6586x_dvm_voltages[] = {
	1325000, 1350000, 1375000, 1400000, 1425000, 1450000, 1475000, 1500000,
	1325000, 1350000, 1375000, 1400000, 1425000, 1450000, 1475000, 1500000,
};
};


#define TPS6586X_REGULATOR(_id, _pin_name, vdata, vreg, shift, nbits,	\
#define TPS6586X_REGULATOR(_id, _ops, _pin_name, vdata, vreg, shift, nbits, \
			   ereg0, ebit0, ereg1, ebit1, goreg, gobit)	\
			   ereg0, ebit0, ereg1, ebit1, goreg, gobit)	\
	.desc	= {							\
	.desc	= {							\
		.supply_name = _pin_name,				\
		.supply_name = _pin_name,				\
		.name	= "REG-" #_id,					\
		.name	= "REG-" #_id,					\
		.ops	= &tps6586x_regulator_ops,			\
		.ops	= &tps6586x_## _ops ## _regulator_ops,		\
		.type	= REGULATOR_VOLTAGE,				\
		.type	= REGULATOR_VOLTAGE,				\
		.id	= TPS6586X_ID_##_id,				\
		.id	= TPS6586X_ID_##_id,				\
		.n_voltages = ARRAY_SIZE(vdata##_voltages),		\
		.n_voltages = ARRAY_SIZE(vdata##_voltages),		\
@@ -146,14 +156,21 @@ static const unsigned int tps6586x_dvm_voltages[] = {
#define TPS6586X_LDO(_id, _pname, vdata, vreg, shift, nbits,		\
#define TPS6586X_LDO(_id, _pname, vdata, vreg, shift, nbits,		\
		     ereg0, ebit0, ereg1, ebit1)			\
		     ereg0, ebit0, ereg1, ebit1)			\
{									\
{									\
	TPS6586X_REGULATOR(_id, _pname, vdata, vreg, shift, nbits,	\
	TPS6586X_REGULATOR(_id, rw, _pname, vdata, vreg, shift, nbits,	\
			   ereg0, ebit0, ereg1, ebit1, 0, 0)		\
}

#define TPS6586X_FIXED_LDO(_id, _pname, vdata, vreg, shift, nbits,	\
			  ereg0, ebit0, ereg1, ebit1)			\
{									\
	TPS6586X_REGULATOR(_id, ro, _pname, vdata, vreg, shift, nbits,	\
			   ereg0, ebit0, ereg1, ebit1, 0, 0)		\
			   ereg0, ebit0, ereg1, ebit1, 0, 0)		\
}
}


#define TPS6586X_DVM(_id, _pname, vdata, vreg, shift, nbits,		\
#define TPS6586X_DVM(_id, _pname, vdata, vreg, shift, nbits,		\
		     ereg0, ebit0, ereg1, ebit1, goreg, gobit)		\
		     ereg0, ebit0, ereg1, ebit1, goreg, gobit)		\
{									\
{									\
	TPS6586X_REGULATOR(_id, _pname, vdata, vreg, shift, nbits,	\
	TPS6586X_REGULATOR(_id, rw, _pname, vdata, vreg, shift, nbits,	\
			   ereg0, ebit0, ereg1, ebit1, goreg, gobit)	\
			   ereg0, ebit0, ereg1, ebit1, goreg, gobit)	\
}
}