Loading drivers/regulator/core.c +41 −0 Original line number Diff line number Diff line Loading @@ -2698,6 +2698,47 @@ int regulator_set_optimum_mode(struct regulator *regulator, int uA_load) } EXPORT_SYMBOL_GPL(regulator_set_optimum_mode); /** * regulator_set_bypass_regmap - Default set_bypass() using regmap * * @rdev: device to operate on. * @enable: state to set. */ int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable) { unsigned int val; if (enable) val = rdev->desc->bypass_mask; else val = 0; return regmap_update_bits(rdev->regmap, rdev->desc->bypass_reg, rdev->desc->bypass_mask, val); } EXPORT_SYMBOL_GPL(regulator_set_bypass_regmap); /** * regulator_get_bypass_regmap - Default get_bypass() using regmap * * @rdev: device to operate on. * @enable: current state. */ int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable) { unsigned int val; int ret; ret = regmap_read(rdev->regmap, rdev->desc->bypass_reg, &val); if (ret != 0) return ret; *enable = val & rdev->desc->bypass_mask; return 0; } EXPORT_SYMBOL_GPL(regulator_get_bypass_regmap); /** * regulator_allow_bypass - allow the regulator to go into bypass mode * Loading include/linux/regulator/driver.h +4 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,8 @@ struct regulator_desc { unsigned int vsel_mask; unsigned int enable_reg; unsigned int enable_mask; unsigned int bypass_reg; unsigned int bypass_mask; unsigned int enable_time; }; Loading Loading @@ -320,6 +322,8 @@ int regulator_disable_regmap(struct regulator_dev *rdev); int regulator_set_voltage_time_sel(struct regulator_dev *rdev, unsigned int old_selector, unsigned int new_selector); int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable); int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable); void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data); Loading Loading
drivers/regulator/core.c +41 −0 Original line number Diff line number Diff line Loading @@ -2698,6 +2698,47 @@ int regulator_set_optimum_mode(struct regulator *regulator, int uA_load) } EXPORT_SYMBOL_GPL(regulator_set_optimum_mode); /** * regulator_set_bypass_regmap - Default set_bypass() using regmap * * @rdev: device to operate on. * @enable: state to set. */ int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable) { unsigned int val; if (enable) val = rdev->desc->bypass_mask; else val = 0; return regmap_update_bits(rdev->regmap, rdev->desc->bypass_reg, rdev->desc->bypass_mask, val); } EXPORT_SYMBOL_GPL(regulator_set_bypass_regmap); /** * regulator_get_bypass_regmap - Default get_bypass() using regmap * * @rdev: device to operate on. * @enable: current state. */ int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable) { unsigned int val; int ret; ret = regmap_read(rdev->regmap, rdev->desc->bypass_reg, &val); if (ret != 0) return ret; *enable = val & rdev->desc->bypass_mask; return 0; } EXPORT_SYMBOL_GPL(regulator_get_bypass_regmap); /** * regulator_allow_bypass - allow the regulator to go into bypass mode * Loading
include/linux/regulator/driver.h +4 −0 Original line number Diff line number Diff line Loading @@ -214,6 +214,8 @@ struct regulator_desc { unsigned int vsel_mask; unsigned int enable_reg; unsigned int enable_mask; unsigned int bypass_reg; unsigned int bypass_mask; unsigned int enable_time; }; Loading Loading @@ -320,6 +322,8 @@ int regulator_disable_regmap(struct regulator_dev *rdev); int regulator_set_voltage_time_sel(struct regulator_dev *rdev, unsigned int old_selector, unsigned int new_selector); int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable); int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable); void *regulator_get_init_drvdata(struct regulator_init_data *reg_init_data); Loading