Lines Matching refs:desc
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;
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);
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);
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)
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;
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) {
201 rdev->desc->vsel_reg,
202 rdev->desc->vsel_range_mask |
203 rdev->desc->vsel_mask, sel | range);
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);
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;
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);
302 for (i = 0; i < rdev->desc->n_voltages; i++) {
303 ret = rdev->desc->ops->list_voltage(rdev, i);
335 for (i = 0; i < rdev->desc->n_voltages; i++) {
336 ret = rdev->desc->ops->list_voltage(rdev, i);
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);
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)
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)
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);
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];
588 * @desc: Regulator desc for regulator which volatges are to be listed
597 int regulator_desc_list_voltage_linear_range(const struct regulator_desc *desc,
603 BUG_ON(!desc->n_linear_ranges);
605 ret = linear_range_get_value_array(desc->linear_ranges,
606 desc->n_linear_ranges, selector,
628 return regulator_desc_list_voltage_linear_range(rdev->desc, selector);
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];
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);
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);
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);
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;
754 val = rdev->desc->active_discharge_on;
756 val = rdev->desc->active_discharge_off;
759 rdev->desc->active_discharge_reg,
760 rdev->desc->active_discharge_mask, val);
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);
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];
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);
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);