Lines Matching refs:rdev
22 * @rdev: regulator to operate on
28 int regulator_is_enabled_regmap(struct regulator_dev *rdev)
33 ret = regmap_read(rdev->regmap, rdev->desc->enable_reg, &val);
37 val &= rdev->desc->enable_mask;
39 if (rdev->desc->enable_is_inverted) {
40 if (rdev->desc->enable_val)
41 return val != rdev->desc->enable_val;
44 if (rdev->desc->enable_val)
45 return val == rdev->desc->enable_val;
54 * @rdev: regulator to operate on
60 int regulator_enable_regmap(struct regulator_dev *rdev)
64 if (rdev->desc->enable_is_inverted) {
65 val = rdev->desc->disable_val;
67 val = rdev->desc->enable_val;
69 val = rdev->desc->enable_mask;
72 return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
73 rdev->desc->enable_mask, val);
80 * @rdev: regulator to operate on
86 int regulator_disable_regmap(struct regulator_dev *rdev)
90 if (rdev->desc->enable_is_inverted) {
91 val = rdev->desc->enable_val;
93 val = rdev->desc->enable_mask;
95 val = rdev->desc->disable_val;
98 return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
99 rdev->desc->enable_mask, val);
103 static int regulator_range_selector_to_index(struct regulator_dev *rdev,
108 if (!rdev->desc->linear_range_selectors_bitfield)
111 rval &= rdev->desc->vsel_range_mask;
112 rval >>= ffs(rdev->desc->vsel_range_mask) - 1;
114 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
115 if (rdev->desc->linear_range_selectors_bitfield[i] == rval)
124 * @rdev: regulator to operate on
131 int regulator_get_voltage_sel_pickable_regmap(struct regulator_dev *rdev)
138 const struct linear_range *r = rdev->desc->linear_ranges;
143 ret = regmap_read(rdev->regmap, rdev->desc->vsel_reg, &val);
147 ret = regmap_read(rdev->regmap, rdev->desc->vsel_range_reg, &r_val);
151 val &= rdev->desc->vsel_mask;
152 val >>= ffs(rdev->desc->vsel_mask) - 1;
154 range = regulator_range_selector_to_index(rdev, r_val);
167 * @rdev: regulator to operate on
175 int regulator_set_voltage_sel_pickable_regmap(struct regulator_dev *rdev,
182 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
185 r = &rdev->desc->linear_ranges[i];
193 if (i == rdev->desc->n_linear_ranges)
196 sel <<= ffs(rdev->desc->vsel_mask) - 1;
197 sel += rdev->desc->linear_ranges[i].min_sel;
199 range = rdev->desc->linear_range_selectors_bitfield[i];
200 range <<= ffs(rdev->desc->vsel_range_mask) - 1;
202 if (rdev->desc->vsel_reg == rdev->desc->vsel_range_reg) {
203 ret = regmap_update_bits(rdev->regmap,
204 rdev->desc->vsel_reg,
205 rdev->desc->vsel_range_mask |
206 rdev->desc->vsel_mask, sel | range);
208 ret = regmap_update_bits(rdev->regmap,
209 rdev->desc->vsel_range_reg,
210 rdev->desc->vsel_range_mask, range);
214 ret = regmap_update_bits(rdev->regmap, rdev->desc->vsel_reg,
215 rdev->desc->vsel_mask, sel);
221 if (rdev->desc->apply_bit)
222 ret = regmap_update_bits(rdev->regmap, rdev->desc->apply_reg,
223 rdev->desc->apply_bit,
224 rdev->desc->apply_bit);
232 * @rdev: regulator to operate on
238 int regulator_get_voltage_sel_regmap(struct regulator_dev *rdev)
243 ret = regmap_read(rdev->regmap, rdev->desc->vsel_reg, &val);
247 val &= rdev->desc->vsel_mask;
248 val >>= ffs(rdev->desc->vsel_mask) - 1;
257 * @rdev: regulator to operate on
264 int regulator_set_voltage_sel_regmap(struct regulator_dev *rdev, unsigned sel)
268 sel <<= ffs(rdev->desc->vsel_mask) - 1;
270 ret = regmap_update_bits(rdev->regmap, rdev->desc->vsel_reg,
271 rdev->desc->vsel_mask, sel);
275 if (rdev->desc->apply_bit)
276 ret = regmap_update_bits(rdev->regmap, rdev->desc->apply_reg,
277 rdev->desc->apply_bit,
278 rdev->desc->apply_bit);
286 * @rdev: Regulator to operate on
295 int regulator_map_voltage_iterate(struct regulator_dev *rdev,
305 for (i = 0; i < rdev->desc->n_voltages; i++) {
306 ret = rdev->desc->ops->list_voltage(rdev, i);
326 * @rdev: Regulator to operate on
333 int regulator_map_voltage_ascend(struct regulator_dev *rdev,
338 for (i = 0; i < rdev->desc->n_voltages; i++) {
339 ret = rdev->desc->ops->list_voltage(rdev, i);
357 * @rdev: Regulator to operate on
364 int regulator_map_voltage_linear(struct regulator_dev *rdev,
370 if (rdev->desc->n_voltages == 1 && rdev->desc->uV_step == 0) {
371 if (min_uV <= rdev->desc->min_uV && rdev->desc->min_uV <= max_uV)
377 if (!rdev->desc->uV_step) {
378 BUG_ON(!rdev->desc->uV_step);
382 if (min_uV < rdev->desc->min_uV)
383 min_uV = rdev->desc->min_uV;
385 ret = DIV_ROUND_UP(min_uV - rdev->desc->min_uV, rdev->desc->uV_step);
389 ret += rdev->desc->linear_min_sel;
392 voltage = rdev->desc->ops->list_voltage(rdev, ret);
403 * @rdev: Regulator to operate on
410 int regulator_map_voltage_linear_range(struct regulator_dev *rdev,
419 if (!rdev->desc->n_linear_ranges) {
420 BUG_ON(!rdev->desc->n_linear_ranges);
424 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
425 range = &rdev->desc->linear_ranges[i];
437 voltage = rdev->desc->ops->list_voltage(rdev, sel);
442 if (i == rdev->desc->n_linear_ranges)
452 * @rdev: Regulator to operate on
459 int regulator_map_voltage_pickable_linear_range(struct regulator_dev *rdev,
467 if (!rdev->desc->n_linear_ranges) {
468 BUG_ON(!rdev->desc->n_linear_ranges);
472 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
477 range = &rdev->desc->linear_ranges[i];
494 voltage = rdev->desc->ops->list_voltage(rdev, ret);
507 if (i == rdev->desc->n_linear_ranges)
544 * @rdev: Regulator device
551 int regulator_list_voltage_linear(struct regulator_dev *rdev,
554 return regulator_desc_list_voltage_linear(rdev->desc, selector);
561 * @rdev: Regulator device
567 int regulator_list_voltage_pickable_linear_range(struct regulator_dev *rdev,
574 if (!rdev->desc->n_linear_ranges) {
575 BUG_ON(!rdev->desc->n_linear_ranges);
579 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
582 range = &rdev->desc->linear_ranges[i];
641 * @rdev: Regulator device
648 int regulator_list_voltage_linear_range(struct regulator_dev *rdev,
651 return regulator_desc_list_voltage_linear_range(rdev->desc, selector);
658 * @rdev: Regulator device
665 int regulator_list_voltage_table(struct regulator_dev *rdev,
668 if (!rdev->desc->volt_table) {
669 BUG_ON(!rdev->desc->volt_table);
673 if (selector >= rdev->desc->n_voltages)
675 if (selector < rdev->desc->linear_min_sel)
678 return rdev->desc->volt_table[selector];
685 * @rdev: device to operate on.
688 int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable)
693 val = rdev->desc->bypass_val_on;
695 val = rdev->desc->bypass_mask;
697 val = rdev->desc->bypass_val_off;
700 return regmap_update_bits(rdev->regmap, rdev->desc->bypass_reg,
701 rdev->desc->bypass_mask, val);
708 * @rdev: device to operate on.
710 int regulator_set_soft_start_regmap(struct regulator_dev *rdev)
714 val = rdev->desc->soft_start_val_on;
716 val = rdev->desc->soft_start_mask;
718 return regmap_update_bits(rdev->regmap, rdev->desc->soft_start_reg,
719 rdev->desc->soft_start_mask, val);
726 * @rdev: device to operate on.
728 int regulator_set_pull_down_regmap(struct regulator_dev *rdev)
732 val = rdev->desc->pull_down_val_on;
734 val = rdev->desc->pull_down_mask;
736 return regmap_update_bits(rdev->regmap, rdev->desc->pull_down_reg,
737 rdev->desc->pull_down_mask, val);
744 * @rdev: device to operate on.
747 int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable)
750 unsigned int val_on = rdev->desc->bypass_val_on;
753 ret = regmap_read(rdev->regmap, rdev->desc->bypass_reg, &val);
758 val_on = rdev->desc->bypass_mask;
760 *enable = (val & rdev->desc->bypass_mask) == val_on;
770 * @rdev: device to operate on.
773 int regulator_set_active_discharge_regmap(struct regulator_dev *rdev,
779 val = rdev->desc->active_discharge_on;
781 val = rdev->desc->active_discharge_off;
783 return regmap_update_bits(rdev->regmap,
784 rdev->desc->active_discharge_reg,
785 rdev->desc->active_discharge_mask, val);
792 * @rdev: regulator to operate on
800 int regulator_set_current_limit_regmap(struct regulator_dev *rdev,
803 unsigned int n_currents = rdev->desc->n_current_limits;
809 if (rdev->desc->curr_table) {
810 const unsigned int *curr_table = rdev->desc->curr_table;
836 sel <<= ffs(rdev->desc->csel_mask) - 1;
838 return regmap_update_bits(rdev->regmap, rdev->desc->csel_reg,
839 rdev->desc->csel_mask, sel);
846 * @rdev: regulator to operate on
852 int regulator_get_current_limit_regmap(struct regulator_dev *rdev)
857 ret = regmap_read(rdev->regmap, rdev->desc->csel_reg, &val);
861 val &= rdev->desc->csel_mask;
862 val >>= ffs(rdev->desc->csel_mask) - 1;
864 if (rdev->desc->curr_table) {
865 if (val >= rdev->desc->n_current_limits)
868 return rdev->desc->curr_table[val];
904 return reg1->rdev == reg2->rdev;
957 * @rdev: regulator to operate on
964 int regulator_set_ramp_delay_regmap(struct regulator_dev *rdev, int ramp_delay)
969 if (WARN_ON(!rdev->desc->n_ramp_values || !rdev->desc->ramp_delay_table))
972 ret = regulator_find_closest_bigger(ramp_delay, rdev->desc->ramp_delay_table,
973 rdev->desc->n_ramp_values, &sel);
976 dev_warn(rdev_get_dev(rdev),
978 rdev->desc->ramp_delay_table[sel]);
981 sel <<= ffs(rdev->desc->ramp_mask) - 1;
983 return regmap_update_bits(rdev->regmap, rdev->desc->ramp_reg,
984 rdev->desc->ramp_mask, sel);