diff options
Diffstat (limited to 'drivers/regulator/core.c')
-rw-r--r-- | drivers/regulator/core.c | 44 |
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 | } |
1839 | EXPORT_SYMBOL_GPL(regulator_is_supported_voltage); | 1839 | EXPORT_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 | */ | ||
1850 | int 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 | } | ||
1864 | EXPORT_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 | */ | ||
1876 | int 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 | } | ||
1883 | EXPORT_SYMBOL_GPL(regulator_set_voltage_sel_regmap); | ||
1884 | |||
1841 | static int _regulator_do_set_voltage(struct regulator_dev *rdev, | 1885 | static 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 | { |