Lines Matching refs:rdev
21 * @rdev: regulator to operate on
27 int regulator_is_enabled_regmap(struct regulator_dev *rdev)
32 ret = regmap_read(rdev->regmap, rdev->desc->enable_reg, &val);
36 val &= rdev->desc->enable_mask;
38 if (rdev->desc->enable_is_inverted) {
39 if (rdev->desc->enable_val)
40 return val != rdev->desc->enable_val;
43 if (rdev->desc->enable_val)
44 return val == rdev->desc->enable_val;
53 * @rdev: regulator to operate on
59 int regulator_enable_regmap(struct regulator_dev *rdev)
63 if (rdev->desc->enable_is_inverted) {
64 val = rdev->desc->disable_val;
66 val = rdev->desc->enable_val;
68 val = rdev->desc->enable_mask;
71 return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
72 rdev->desc->enable_mask, val);
79 * @rdev: regulator to operate on
85 int regulator_disable_regmap(struct regulator_dev *rdev)
89 if (rdev->desc->enable_is_inverted) {
90 val = rdev->desc->enable_val;
92 val = rdev->desc->enable_mask;
94 val = rdev->desc->disable_val;
97 return regmap_update_bits(rdev->regmap, rdev->desc->enable_reg,
98 rdev->desc->enable_mask, val);
102 static int regulator_range_selector_to_index(struct regulator_dev *rdev,
107 if (!rdev->desc->linear_range_selectors)
110 rval &= rdev->desc->vsel_range_mask;
112 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
113 if (rdev->desc->linear_range_selectors[i] == rval)
122 * @rdev: regulator to operate on
129 int regulator_get_voltage_sel_pickable_regmap(struct regulator_dev *rdev)
136 const struct linear_range *r = rdev->desc->linear_ranges;
141 ret = regmap_read(rdev->regmap, rdev->desc->vsel_reg, &val);
145 ret = regmap_read(rdev->regmap, rdev->desc->vsel_range_reg, &r_val);
149 val &= rdev->desc->vsel_mask;
150 val >>= ffs(rdev->desc->vsel_mask) - 1;
152 range = regulator_range_selector_to_index(rdev, r_val);
165 * @rdev: regulator to operate on
173 int regulator_set_voltage_sel_pickable_regmap(struct regulator_dev *rdev,
180 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
183 r = &rdev->desc->linear_ranges[i];
191 if (i == rdev->desc->n_linear_ranges)
194 sel <<= ffs(rdev->desc->vsel_mask) - 1;
195 sel += rdev->desc->linear_ranges[i].min_sel;
197 range = rdev->desc->linear_range_selectors[i];
199 if (rdev->desc->vsel_reg == rdev->desc->vsel_range_reg) {
200 ret = regmap_update_bits(rdev->regmap,
201 rdev->desc->vsel_reg,
202 rdev->desc->vsel_range_mask |
203 rdev->desc->vsel_mask, sel | range);
205 ret = regmap_update_bits(rdev->regmap,
206 rdev->desc->vsel_range_reg,
207 rdev->desc->vsel_range_mask, range);
211 ret = regmap_update_bits(rdev->regmap, rdev->desc->vsel_reg,
212 rdev->desc->vsel_mask, sel);
218 if (rdev->desc->apply_bit)
219 ret = regmap_update_bits(rdev->regmap, rdev->desc->apply_reg,
220 rdev->desc->apply_bit,
221 rdev->desc->apply_bit);
229 * @rdev: regulator to operate on
235 int regulator_get_voltage_sel_regmap(struct regulator_dev *rdev)
240 ret = regmap_read(rdev->regmap, rdev->desc->vsel_reg, &val);
244 val &= rdev->desc->vsel_mask;
245 val >>= ffs(rdev->desc->vsel_mask) - 1;
254 * @rdev: regulator to operate on
261 int regulator_set_voltage_sel_regmap(struct regulator_dev *rdev, unsigned sel)
265 sel <<= ffs(rdev->desc->vsel_mask) - 1;
267 ret = regmap_update_bits(rdev->regmap, rdev->desc->vsel_reg,
268 rdev->desc->vsel_mask, sel);
272 if (rdev->desc->apply_bit)
273 ret = regmap_update_bits(rdev->regmap, rdev->desc->apply_reg,
274 rdev->desc->apply_bit,
275 rdev->desc->apply_bit);
283 * @rdev: Regulator to operate on
292 int regulator_map_voltage_iterate(struct regulator_dev *rdev,
302 for (i = 0; i < rdev->desc->n_voltages; i++) {
303 ret = rdev->desc->ops->list_voltage(rdev, i);
323 * @rdev: Regulator to operate on
330 int regulator_map_voltage_ascend(struct regulator_dev *rdev,
335 for (i = 0; i < rdev->desc->n_voltages; i++) {
336 ret = rdev->desc->ops->list_voltage(rdev, i);
354 * @rdev: Regulator to operate on
361 int regulator_map_voltage_linear(struct regulator_dev *rdev,
367 if (rdev->desc->n_voltages == 1 && rdev->desc->uV_step == 0) {
368 if (min_uV <= rdev->desc->min_uV && rdev->desc->min_uV <= max_uV)
374 if (!rdev->desc->uV_step) {
375 BUG_ON(!rdev->desc->uV_step);
379 if (min_uV < rdev->desc->min_uV)
380 min_uV = rdev->desc->min_uV;
382 ret = DIV_ROUND_UP(min_uV - rdev->desc->min_uV, rdev->desc->uV_step);
386 ret += rdev->desc->linear_min_sel;
389 voltage = rdev->desc->ops->list_voltage(rdev, ret);
400 * @rdev: Regulator to operate on
407 int regulator_map_voltage_linear_range(struct regulator_dev *rdev,
416 if (!rdev->desc->n_linear_ranges) {
417 BUG_ON(!rdev->desc->n_linear_ranges);
421 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
422 range = &rdev->desc->linear_ranges[i];
434 voltage = rdev->desc->ops->list_voltage(rdev, sel);
439 if (i == rdev->desc->n_linear_ranges)
449 * @rdev: Regulator to operate on
456 int regulator_map_voltage_pickable_linear_range(struct regulator_dev *rdev,
464 if (!rdev->desc->n_linear_ranges) {
465 BUG_ON(!rdev->desc->n_linear_ranges);
469 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
474 range = &rdev->desc->linear_ranges[i];
491 voltage = rdev->desc->ops->list_voltage(rdev, ret);
504 if (i == rdev->desc->n_linear_ranges)
514 * @rdev: Regulator device
521 int regulator_list_voltage_linear(struct regulator_dev *rdev,
524 if (selector >= rdev->desc->n_voltages)
526 if (selector < rdev->desc->linear_min_sel)
529 selector -= rdev->desc->linear_min_sel;
531 return rdev->desc->min_uV + (rdev->desc->uV_step * selector);
538 * @rdev: Regulator device
544 int regulator_list_voltage_pickable_linear_range(struct regulator_dev *rdev,
551 if (!rdev->desc->n_linear_ranges) {
552 BUG_ON(!rdev->desc->n_linear_ranges);
556 for (i = 0; i < rdev->desc->n_linear_ranges; i++) {
559 range = &rdev->desc->linear_ranges[i];
618 * @rdev: Regulator device
625 int regulator_list_voltage_linear_range(struct regulator_dev *rdev,
628 return regulator_desc_list_voltage_linear_range(rdev->desc, selector);
635 * @rdev: Regulator device
642 int regulator_list_voltage_table(struct regulator_dev *rdev,
645 if (!rdev->desc->volt_table) {
646 BUG_ON(!rdev->desc->volt_table);
650 if (selector >= rdev->desc->n_voltages)
653 return rdev->desc->volt_table[selector];
660 * @rdev: device to operate on.
663 int regulator_set_bypass_regmap(struct regulator_dev *rdev, bool enable)
668 val = rdev->desc->bypass_val_on;
670 val = rdev->desc->bypass_mask;
672 val = rdev->desc->bypass_val_off;
675 return regmap_update_bits(rdev->regmap, rdev->desc->bypass_reg,
676 rdev->desc->bypass_mask, val);
683 * @rdev: device to operate on.
685 int regulator_set_soft_start_regmap(struct regulator_dev *rdev)
689 val = rdev->desc->soft_start_val_on;
691 val = rdev->desc->soft_start_mask;
693 return regmap_update_bits(rdev->regmap, rdev->desc->soft_start_reg,
694 rdev->desc->soft_start_mask, val);
701 * @rdev: device to operate on.
703 int regulator_set_pull_down_regmap(struct regulator_dev *rdev)
707 val = rdev->desc->pull_down_val_on;
709 val = rdev->desc->pull_down_mask;
711 return regmap_update_bits(rdev->regmap, rdev->desc->pull_down_reg,
712 rdev->desc->pull_down_mask, val);
719 * @rdev: device to operate on.
722 int regulator_get_bypass_regmap(struct regulator_dev *rdev, bool *enable)
725 unsigned int val_on = rdev->desc->bypass_val_on;
728 ret = regmap_read(rdev->regmap, rdev->desc->bypass_reg, &val);
733 val_on = rdev->desc->bypass_mask;
735 *enable = (val & rdev->desc->bypass_mask) == val_on;
745 * @rdev: device to operate on.
748 int regulator_set_active_discharge_regmap(struct regulator_dev *rdev,
754 val = rdev->desc->active_discharge_on;
756 val = rdev->desc->active_discharge_off;
758 return regmap_update_bits(rdev->regmap,
759 rdev->desc->active_discharge_reg,
760 rdev->desc->active_discharge_mask, val);
767 * @rdev: regulator to operate on
775 int regulator_set_current_limit_regmap(struct regulator_dev *rdev,
778 unsigned int n_currents = rdev->desc->n_current_limits;
784 if (rdev->desc->curr_table) {
785 const unsigned int *curr_table = rdev->desc->curr_table;
811 sel <<= ffs(rdev->desc->csel_mask) - 1;
813 return regmap_update_bits(rdev->regmap, rdev->desc->csel_reg,
814 rdev->desc->csel_mask, sel);
821 * @rdev: regulator to operate on
827 int regulator_get_current_limit_regmap(struct regulator_dev *rdev)
832 ret = regmap_read(rdev->regmap, rdev->desc->csel_reg, &val);
836 val &= rdev->desc->csel_mask;
837 val >>= ffs(rdev->desc->csel_mask) - 1;
839 if (rdev->desc->curr_table) {
840 if (val >= rdev->desc->n_current_limits)
843 return rdev->desc->curr_table[val];
879 return reg1->rdev == reg2->rdev;
918 * @rdev: regulator to operate on
924 int regulator_set_ramp_delay_regmap(struct regulator_dev *rdev, int ramp_delay)
929 if (!rdev->desc->n_ramp_values)
932 ret = find_closest_bigger(ramp_delay, rdev->desc->ramp_delay_table,
933 rdev->desc->n_ramp_values, &sel);
936 dev_warn(rdev_get_dev(rdev),
938 rdev->desc->ramp_delay_table[sel]);
941 sel <<= ffs(rdev->desc->ramp_mask) - 1;
943 return regmap_update_bits(rdev->regmap, rdev->desc->ramp_reg,
944 rdev->desc->ramp_mask, sel);