Lines Matching refs:desc

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;
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);
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);
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)
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;
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) {
204 rdev->desc->vsel_reg,
205 rdev->desc->vsel_range_mask |
206 rdev->desc->vsel_mask, sel | range);
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);
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;
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);
305 for (i = 0; i < rdev->desc->n_voltages; i++) {
306 ret = rdev->desc->ops->list_voltage(rdev, i);
338 for (i = 0; i < rdev->desc->n_voltages; i++) {
339 ret = rdev->desc->ops->list_voltage(rdev, i);
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);
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)
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)
517 * @desc: Regulator desc for regulator which volatges are to be listed
526 int regulator_desc_list_voltage_linear(const struct regulator_desc *desc,
529 if (selector >= desc->n_voltages)
532 if (selector < desc->linear_min_sel)
535 selector -= desc->linear_min_sel;
537 return desc->min_uV + (desc->uV_step * selector);
554 return regulator_desc_list_voltage_linear(rdev->desc, selector);
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];
611 * @desc: Regulator desc for regulator which volatges are to be listed
620 int regulator_desc_list_voltage_linear_range(const struct regulator_desc *desc,
626 BUG_ON(!desc->n_linear_ranges);
628 ret = linear_range_get_value_array(desc->linear_ranges,
629 desc->n_linear_ranges, selector,
651 return regulator_desc_list_voltage_linear_range(rdev->desc, selector);
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];
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);
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);
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);
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;
779 val = rdev->desc->active_discharge_on;
781 val = rdev->desc->active_discharge_off;
784 rdev->desc->active_discharge_reg,
785 rdev->desc->active_discharge_mask, val);
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);
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];
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);
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);