|
@@ -1838,6 +1838,50 @@ int regulator_is_supported_voltage(struct regulator *regulator,
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(regulator_is_supported_voltage);
|
|
|
|
|
|
+/**
|
|
|
+ * regulator_get_voltage_sel_regmap - standard get_voltage_sel for regmap users
|
|
|
+ *
|
|
|
+ * @rdev: regulator to operate on
|
|
|
+ *
|
|
|
+ * Regulators that use regmap for their register I/O can set the
|
|
|
+ * vsel_reg and vsel_mask fields in their descriptor and then use this
|
|
|
+ * as their get_voltage_vsel operation, saving some code.
|
|
|
+ */
|
|
|
+int regulator_get_voltage_sel_regmap(struct regulator_dev *rdev)
|
|
|
+{
|
|
|
+ unsigned int val;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ ret = regmap_read(rdev->regmap, rdev->desc->vsel_reg, &val);
|
|
|
+ if (ret != 0)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ val &= rdev->desc->vsel_mask;
|
|
|
+ val >>= ffs(rdev->desc->vsel_mask) - 1;
|
|
|
+
|
|
|
+ return val;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(regulator_get_voltage_sel_regmap);
|
|
|
+
|
|
|
+/**
|
|
|
+ * regulator_set_voltage_sel_regmap - standard set_voltage_sel for regmap users
|
|
|
+ *
|
|
|
+ * @rdev: regulator to operate on
|
|
|
+ * @sel: Selector to set
|
|
|
+ *
|
|
|
+ * Regulators that use regmap for their register I/O can set the
|
|
|
+ * vsel_reg and vsel_mask fields in their descriptor and then use this
|
|
|
+ * as their set_voltage_vsel operation, saving some code.
|
|
|
+ */
|
|
|
+int regulator_set_voltage_sel_regmap(struct regulator_dev *rdev, unsigned sel)
|
|
|
+{
|
|
|
+ sel <<= ffs(rdev->desc->vsel_mask) - 1;
|
|
|
+
|
|
|
+ return regmap_update_bits(rdev->regmap, rdev->desc->vsel_reg,
|
|
|
+ rdev->desc->vsel_mask, sel);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(regulator_set_voltage_sel_regmap);
|
|
|
+
|
|
|
static int _regulator_do_set_voltage(struct regulator_dev *rdev,
|
|
|
int min_uV, int max_uV)
|
|
|
{
|