Lines Matching +full:ldo14 +full:- +full:16
1 // SPDX-License-Identifier: GPL-2.0
5 // Copyright (C) 2006-2008 Marvell International Ltd.
18 #define DA9030_INVAL (-1)
42 #define DA9034_INVAL (-1)
87 return rdev_get_dev(rdev)->parent->parent; in to_da903x_dev()
93 if (min_uV < info->desc.min_uV || min_uV > info->max_uV) in check_range()
94 return -EINVAL; in check_range()
106 if (rdev->desc->n_voltages == 1) in da903x_set_voltage_sel()
107 return -EINVAL; in da903x_set_voltage_sel()
109 val = selector << info->vol_shift; in da903x_set_voltage_sel()
110 mask = ((1 << info->vol_nbits) - 1) << info->vol_shift; in da903x_set_voltage_sel()
112 return da903x_update(da9034_dev, info->vol_reg, val, mask); in da903x_set_voltage_sel()
122 if (rdev->desc->n_voltages == 1) in da903x_get_voltage_sel()
125 ret = da903x_read(da9034_dev, info->vol_reg, &val); in da903x_get_voltage_sel()
129 mask = ((1 << info->vol_nbits) - 1) << info->vol_shift; in da903x_get_voltage_sel()
130 val = (val & mask) >> info->vol_shift; in da903x_get_voltage_sel()
140 return da903x_set_bits(da9034_dev, info->enable_reg, in da903x_enable()
141 1 << info->enable_bit); in da903x_enable()
149 return da903x_clr_bits(da9034_dev, info->enable_reg, in da903x_disable()
150 1 << info->enable_bit); in da903x_disable()
160 ret = da903x_read(da9034_dev, info->enable_reg, ®_val); in da903x_is_enabled()
164 return !!(reg_val & (1 << info->enable_bit)); in da903x_is_enabled()
176 val = selector << info->vol_shift; in da9030_set_ldo1_15_voltage_sel()
177 mask = ((1 << info->vol_nbits) - 1) << info->vol_shift; in da9030_set_ldo1_15_voltage_sel()
182 ret = da903x_update(da903x_dev, info->vol_reg, val, mask); in da9030_set_ldo1_15_voltage_sel()
186 return da903x_update(da903x_dev, info->vol_reg, val, mask); in da9030_set_ldo1_15_voltage_sel()
197 return -EINVAL; in da9030_map_ldo14_voltage()
200 thresh = (info->max_uV + info->desc.min_uV) / 2; in da9030_map_ldo14_voltage()
202 sel = DIV_ROUND_UP(thresh - min_uV, info->desc.uV_step); in da9030_map_ldo14_voltage()
205 sel = DIV_ROUND_UP(min_uV - thresh, info->desc.uV_step); in da9030_map_ldo14_voltage()
218 volt = rdev->desc->min_uV + in da9030_list_ldo14_voltage()
219 rdev->desc->uV_step * (3 - (selector & ~0x4)); in da9030_list_ldo14_voltage()
221 volt = (info->max_uV + rdev->desc->min_uV) / 2 + in da9030_list_ldo14_voltage()
222 rdev->desc->uV_step * (selector & ~0x4); in da9030_list_ldo14_voltage()
224 if (volt > info->max_uV) in da9030_list_ldo14_voltage()
225 return -EINVAL; in da9030_list_ldo14_voltage()
239 val = selector << info->vol_shift; in da9034_set_dvc_voltage_sel()
240 mask = ((1 << info->vol_nbits) - 1) << info->vol_shift; in da9034_set_dvc_voltage_sel()
242 ret = da903x_update(da9034_dev, info->vol_reg, val, mask); in da9034_set_dvc_voltage_sel()
246 ret = da903x_set_bits(da9034_dev, info->update_reg, in da9034_set_dvc_voltage_sel()
247 1 << info->update_bit); in da9034_set_dvc_voltage_sel()
266 /* NOTE: this is dedicated for the insane DA9030 LDO14 */
316 .n_voltages = (step) ? ((max - min) / step + 1) : 1, \
336 .n_voltages = (step) ? ((max - min) / step + 1) : 1, \
387 DA9030_LDO(16, 1100, 2650, 50, LDO1416, 3, 5, RCTL11, 6),
424 if (ri->desc.id == id) in find_regulator_info()
436 ri = find_regulator_info(pdev->id); in da903x_regulator_probe()
438 dev_err(&pdev->dev, "invalid regulator ID specified\n"); in da903x_regulator_probe()
439 return -EINVAL; in da903x_regulator_probe()
443 if (ri->desc.id == DA9034_ID_LDO12) { in da903x_regulator_probe()
444 ri->desc.ops = &da9034_regulator_ldo12_ops; in da903x_regulator_probe()
445 ri->desc.n_voltages = 16; in da903x_regulator_probe()
446 ri->desc.linear_ranges = da9034_ldo12_ranges; in da903x_regulator_probe()
447 ri->desc.n_linear_ranges = ARRAY_SIZE(da9034_ldo12_ranges); in da903x_regulator_probe()
450 if (ri->desc.id == DA9030_ID_LDO14) in da903x_regulator_probe()
451 ri->desc.ops = &da9030_regulator_ldo14_ops; in da903x_regulator_probe()
453 if (ri->desc.id == DA9030_ID_LDO1 || ri->desc.id == DA9030_ID_LDO15) in da903x_regulator_probe()
454 ri->desc.ops = &da9030_regulator_ldo1_15_ops; in da903x_regulator_probe()
456 config.dev = &pdev->dev; in da903x_regulator_probe()
457 config.init_data = dev_get_platdata(&pdev->dev); in da903x_regulator_probe()
460 rdev = devm_regulator_register(&pdev->dev, &ri->desc, &config); in da903x_regulator_probe()
462 dev_err(&pdev->dev, "failed to register regulator %s\n", in da903x_regulator_probe()
463 ri->desc.name); in da903x_regulator_probe()
473 .name = "da903x-regulator",
495 MODULE_ALIAS("platform:da903x-regulator");