.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * TI LP8788 MFD - buck regulator driver |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright 2012 Texas Instruments |
---|
5 | 6 | * |
---|
6 | 7 | * Author: Milo(Woogyom) Kim <milo.kim@ti.com> |
---|
7 | | - * |
---|
8 | | - * This program is free software; you can redistribute it and/or modify |
---|
9 | | - * it under the terms of the GNU General Public License version 2 as |
---|
10 | | - * published by the Free Software Foundation. |
---|
11 | | - * |
---|
12 | 8 | */ |
---|
13 | 9 | |
---|
14 | 10 | #include <linux/module.h> |
---|
.. | .. |
---|
95 | 91 | void *dvs; |
---|
96 | 92 | }; |
---|
97 | 93 | |
---|
98 | | -/* BUCK 1 ~ 4 voltage table */ |
---|
99 | | -static const int lp8788_buck_vtbl[] = { |
---|
100 | | - 500000, 800000, 850000, 900000, 950000, 1000000, 1050000, 1100000, |
---|
101 | | - 1150000, 1200000, 1250000, 1300000, 1350000, 1400000, 1450000, 1500000, |
---|
102 | | - 1550000, 1600000, 1650000, 1700000, 1750000, 1800000, 1850000, 1900000, |
---|
103 | | - 1950000, 2000000, |
---|
| 94 | +/* BUCK 1 ~ 4 voltage ranges */ |
---|
| 95 | +static const struct linear_range buck_volt_ranges[] = { |
---|
| 96 | + REGULATOR_LINEAR_RANGE(500000, 0, 0, 0), |
---|
| 97 | + REGULATOR_LINEAR_RANGE(800000, 1, 25, 50000), |
---|
104 | 98 | }; |
---|
105 | 99 | |
---|
106 | 100 | static void lp8788_buck1_set_dvs(struct lp8788_buck *buck) |
---|
.. | .. |
---|
345 | 339 | } |
---|
346 | 340 | |
---|
347 | 341 | static const struct regulator_ops lp8788_buck12_ops = { |
---|
348 | | - .list_voltage = regulator_list_voltage_table, |
---|
349 | | - .map_voltage = regulator_map_voltage_ascend, |
---|
| 342 | + .list_voltage = regulator_list_voltage_linear_range, |
---|
| 343 | + .map_voltage = regulator_map_voltage_linear_range, |
---|
350 | 344 | .set_voltage_sel = lp8788_buck12_set_voltage_sel, |
---|
351 | 345 | .get_voltage_sel = lp8788_buck12_get_voltage_sel, |
---|
352 | 346 | .enable = regulator_enable_regmap, |
---|
.. | .. |
---|
358 | 352 | }; |
---|
359 | 353 | |
---|
360 | 354 | static const struct regulator_ops lp8788_buck34_ops = { |
---|
361 | | - .list_voltage = regulator_list_voltage_table, |
---|
362 | | - .map_voltage = regulator_map_voltage_ascend, |
---|
| 355 | + .list_voltage = regulator_list_voltage_linear_range, |
---|
| 356 | + .map_voltage = regulator_map_voltage_linear_range, |
---|
363 | 357 | .set_voltage_sel = regulator_set_voltage_sel_regmap, |
---|
364 | 358 | .get_voltage_sel = regulator_get_voltage_sel_regmap, |
---|
365 | 359 | .enable = regulator_enable_regmap, |
---|
.. | .. |
---|
370 | 364 | .get_mode = lp8788_buck_get_mode, |
---|
371 | 365 | }; |
---|
372 | 366 | |
---|
373 | | -static struct regulator_desc lp8788_buck_desc[] = { |
---|
| 367 | +static const struct regulator_desc lp8788_buck_desc[] = { |
---|
374 | 368 | { |
---|
375 | 369 | .name = "buck1", |
---|
376 | 370 | .id = BUCK1, |
---|
377 | 371 | .ops = &lp8788_buck12_ops, |
---|
378 | | - .n_voltages = ARRAY_SIZE(lp8788_buck_vtbl), |
---|
379 | | - .volt_table = lp8788_buck_vtbl, |
---|
| 372 | + .n_voltages = 26, |
---|
| 373 | + .linear_ranges = buck_volt_ranges, |
---|
| 374 | + .n_linear_ranges = ARRAY_SIZE(buck_volt_ranges), |
---|
380 | 375 | .type = REGULATOR_VOLTAGE, |
---|
381 | 376 | .owner = THIS_MODULE, |
---|
382 | 377 | .enable_reg = LP8788_EN_BUCK, |
---|
.. | .. |
---|
386 | 381 | .name = "buck2", |
---|
387 | 382 | .id = BUCK2, |
---|
388 | 383 | .ops = &lp8788_buck12_ops, |
---|
389 | | - .n_voltages = ARRAY_SIZE(lp8788_buck_vtbl), |
---|
390 | | - .volt_table = lp8788_buck_vtbl, |
---|
| 384 | + .n_voltages = 26, |
---|
| 385 | + .linear_ranges = buck_volt_ranges, |
---|
| 386 | + .n_linear_ranges = ARRAY_SIZE(buck_volt_ranges), |
---|
391 | 387 | .type = REGULATOR_VOLTAGE, |
---|
392 | 388 | .owner = THIS_MODULE, |
---|
393 | 389 | .enable_reg = LP8788_EN_BUCK, |
---|
.. | .. |
---|
397 | 393 | .name = "buck3", |
---|
398 | 394 | .id = BUCK3, |
---|
399 | 395 | .ops = &lp8788_buck34_ops, |
---|
400 | | - .n_voltages = ARRAY_SIZE(lp8788_buck_vtbl), |
---|
401 | | - .volt_table = lp8788_buck_vtbl, |
---|
| 396 | + .n_voltages = 26, |
---|
| 397 | + .linear_ranges = buck_volt_ranges, |
---|
| 398 | + .n_linear_ranges = ARRAY_SIZE(buck_volt_ranges), |
---|
402 | 399 | .type = REGULATOR_VOLTAGE, |
---|
403 | 400 | .owner = THIS_MODULE, |
---|
404 | 401 | .vsel_reg = LP8788_BUCK3_VOUT, |
---|
.. | .. |
---|
410 | 407 | .name = "buck4", |
---|
411 | 408 | .id = BUCK4, |
---|
412 | 409 | .ops = &lp8788_buck34_ops, |
---|
413 | | - .n_voltages = ARRAY_SIZE(lp8788_buck_vtbl), |
---|
414 | | - .volt_table = lp8788_buck_vtbl, |
---|
| 410 | + .n_voltages = 26, |
---|
| 411 | + .linear_ranges = buck_volt_ranges, |
---|
| 412 | + .n_linear_ranges = ARRAY_SIZE(buck_volt_ranges), |
---|
415 | 413 | .type = REGULATOR_VOLTAGE, |
---|
416 | 414 | .owner = THIS_MODULE, |
---|
417 | 415 | .vsel_reg = LP8788_BUCK4_VOUT, |
---|