aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/regulator/core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/regulator/core.c')
-rw-r--r--drivers/regulator/core.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c
index bca1e5989243..02d2e15b2262 100644
--- a/drivers/regulator/core.c
+++ b/drivers/regulator/core.c
@@ -1838,6 +1838,50 @@ int regulator_is_supported_voltage(struct regulator *regulator,
1838} 1838}
1839EXPORT_SYMBOL_GPL(regulator_is_supported_voltage); 1839EXPORT_SYMBOL_GPL(regulator_is_supported_voltage);
1840 1840
1841/**
1842 * regulator_get_voltage_sel_regmap - standard get_voltage_sel for regmap users
1843 *
1844 * @rdev: regulator to operate on
1845 *
1846 * Regulators that use regmap for their register I/O can set the
1847 * vsel_reg and vsel_mask fields in their descriptor and then use this
1848 * as their get_voltage_vsel operation, saving some code.
1849 */
1850int regulator_get_voltage_sel_regmap(struct regulator_dev *rdev)
1851{
1852 unsigned int val;
1853 int ret;
1854
1855 ret = regmap_read(rdev->regmap, rdev->desc->vsel_reg, &val);
1856 if (ret != 0)
1857 return ret;
1858
1859 val &= rdev->desc->vsel_mask;
1860 val >>= ffs(rdev->desc->vsel_mask) - 1;
1861
1862 return val;
1863}
1864EXPORT_SYMBOL_GPL(regulator_get_voltage_sel_regmap);
1865
1866/**
1867 * regulator_set_voltage_sel_regmap - standard set_voltage_sel for regmap users
1868 *
1869 * @rdev: regulator to operate on
1870 * @sel: Selector to set
1871 *
1872 * Regulators that use regmap for their register I/O can set the
1873 * vsel_reg and vsel_mask fields in their descriptor and then use this
1874 * as their set_voltage_vsel operation, saving some code.
1875 */
1876int regulator_set_voltage_sel_regmap(struct regulator_dev *rdev, unsigned sel)
1877{
1878 sel <<= ffs(rdev->desc->vsel_mask) - 1;
1879
1880 return regmap_update_bits(rdev->regmap, rdev->desc->vsel_reg,
1881 rdev->desc->vsel_mask, sel);
1882}
1883EXPORT_SYMBOL_GPL(regulator_set_voltage_sel_regmap);
1884
1841static int _regulator_do_set_voltage(struct regulator_dev *rdev, 1885static int _regulator_do_set_voltage(struct regulator_dev *rdev,
1842 int min_uV, int max_uV) 1886 int min_uV, int max_uV)
1843{ 1887{