hc
2024-01-31 f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2
kernel/drivers/regulator/da9062-regulator.c
....@@ -1,17 +1,8 @@
1
-/*
2
- * Regulator device driver for DA9061 and DA9062.
3
- * Copyright (C) 2015-2017 Dialog Semiconductor
4
- *
5
- * This program is free software; you can redistribute it and/or
6
- * modify it under the terms of the GNU General Public License
7
- * as published by the Free Software Foundation; either version 2
8
- * of the License, or (at your option) any later version.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- */
1
+// SPDX-License-Identifier: GPL-2.0+
2
+//
3
+// Regulator device driver for DA9061 and DA9062.
4
+// Copyright (C) 2015-2017 Dialog Semiconductor
5
+
156 #include <linux/kernel.h>
167 #include <linux/module.h>
178 #include <linux/init.h>
....@@ -25,6 +16,7 @@
2516 #include <linux/regulator/of_regulator.h>
2617 #include <linux/mfd/da9062/core.h>
2718 #include <linux/mfd/da9062/registers.h>
19
+#include <dt-bindings/regulator/dlg,da9063-regulator.h>
2820
2921 /* Regulator IDs */
3022 enum {
....@@ -53,16 +45,12 @@
5345 /* Regulator capabilities and registers description */
5446 struct da9062_regulator_info {
5547 struct regulator_desc desc;
56
- /* Current limiting */
57
- unsigned int n_current_limits;
58
- const int *current_limits;
5948 /* Main register fields */
6049 struct reg_field mode;
6150 struct reg_field suspend;
6251 struct reg_field sleep;
6352 struct reg_field suspend_sleep;
6453 unsigned int suspend_vsel_reg;
65
- struct reg_field ilimit;
6654 /* Event detection bit */
6755 struct reg_field oc_event;
6856 };
....@@ -78,7 +66,6 @@
7866 struct regmap_field *suspend;
7967 struct regmap_field *sleep;
8068 struct regmap_field *suspend_sleep;
81
- struct regmap_field *ilimit;
8269 };
8370
8471 /* Encapsulates all information for the regulators driver */
....@@ -86,15 +73,7 @@
8673 int irq_ldo_lim;
8774 unsigned n_regulators;
8875 /* Array size to be defined during init. Keep at end. */
89
- struct da9062_regulator regulator[0];
90
-};
91
-
92
-/* BUCK modes */
93
-enum {
94
- BUCK_MODE_MANUAL, /* 0 */
95
- BUCK_MODE_SLEEP, /* 1 */
96
- BUCK_MODE_SYNC, /* 2 */
97
- BUCK_MODE_AUTO /* 3 */
76
+ struct da9062_regulator regulator[];
9877 };
9978
10079 /* Regulator operations */
....@@ -104,7 +83,7 @@
10483 * - DA9062_ID_[BUCK1|BUCK2|BUCK4]
10584 * Entry indexes corresponds to register values.
10685 */
107
-static const int da9062_buck_a_limits[] = {
86
+static const unsigned int da9062_buck_a_limits[] = {
10887 500000, 600000, 700000, 800000, 900000, 1000000, 1100000, 1200000,
10988 1300000, 1400000, 1500000, 1600000, 1700000, 1800000, 1900000, 2000000
11089 };
....@@ -114,42 +93,23 @@
11493 * - DA9062_ID_BUCK3
11594 * Entry indexes corresponds to register values.
11695 */
117
-static const int da9062_buck_b_limits[] = {
96
+static const unsigned int da9062_buck_b_limits[] = {
11897 1500000, 1600000, 1700000, 1800000, 1900000, 2000000, 2100000, 2200000,
11998 2300000, 2400000, 2500000, 2600000, 2700000, 2800000, 2900000, 3000000
12099 };
121100
122
-static int da9062_set_current_limit(struct regulator_dev *rdev,
123
- int min_ua, int max_ua)
101
+static unsigned int da9062_map_buck_mode(unsigned int mode)
124102 {
125
- struct da9062_regulator *regl = rdev_get_drvdata(rdev);
126
- const struct da9062_regulator_info *rinfo = regl->info;
127
- int n, tval;
128
-
129
- for (n = 0; n < rinfo->n_current_limits; n++) {
130
- tval = rinfo->current_limits[n];
131
- if (tval >= min_ua && tval <= max_ua)
132
- return regmap_field_write(regl->ilimit, n);
103
+ switch (mode) {
104
+ case DA9063_BUCK_MODE_SLEEP:
105
+ return REGULATOR_MODE_STANDBY;
106
+ case DA9063_BUCK_MODE_SYNC:
107
+ return REGULATOR_MODE_FAST;
108
+ case DA9063_BUCK_MODE_AUTO:
109
+ return REGULATOR_MODE_NORMAL;
110
+ default:
111
+ return REGULATOR_MODE_INVALID;
133112 }
134
-
135
- return -EINVAL;
136
-}
137
-
138
-static int da9062_get_current_limit(struct regulator_dev *rdev)
139
-{
140
- struct da9062_regulator *regl = rdev_get_drvdata(rdev);
141
- const struct da9062_regulator_info *rinfo = regl->info;
142
- unsigned int sel;
143
- int ret;
144
-
145
- ret = regmap_field_read(regl->ilimit, &sel);
146
- if (ret < 0)
147
- return ret;
148
-
149
- if (sel >= rinfo->n_current_limits)
150
- sel = rinfo->n_current_limits - 1;
151
-
152
- return rinfo->current_limits[sel];
153113 }
154114
155115 static int da9062_buck_set_mode(struct regulator_dev *rdev, unsigned mode)
....@@ -159,13 +119,13 @@
159119
160120 switch (mode) {
161121 case REGULATOR_MODE_FAST:
162
- val = BUCK_MODE_SYNC;
122
+ val = DA9063_BUCK_MODE_SYNC;
163123 break;
164124 case REGULATOR_MODE_NORMAL:
165
- val = BUCK_MODE_AUTO;
125
+ val = DA9063_BUCK_MODE_AUTO;
166126 break;
167127 case REGULATOR_MODE_STANDBY:
168
- val = BUCK_MODE_SLEEP;
128
+ val = DA9063_BUCK_MODE_SLEEP;
169129 break;
170130 default:
171131 return -EINVAL;
....@@ -183,8 +143,7 @@
183143 static unsigned da9062_buck_get_mode(struct regulator_dev *rdev)
184144 {
185145 struct da9062_regulator *regl = rdev_get_drvdata(rdev);
186
- struct regmap_field *field;
187
- unsigned int val, mode = 0;
146
+ unsigned int val;
188147 int ret;
189148
190149 ret = regmap_field_read(regl->mode, &val);
....@@ -193,39 +152,24 @@
193152
194153 switch (val) {
195154 default:
196
- case BUCK_MODE_MANUAL:
197
- mode = REGULATOR_MODE_FAST | REGULATOR_MODE_STANDBY;
198155 /* Sleep flag bit decides the mode */
199156 break;
200
- case BUCK_MODE_SLEEP:
157
+ case DA9063_BUCK_MODE_SLEEP:
201158 return REGULATOR_MODE_STANDBY;
202
- case BUCK_MODE_SYNC:
159
+ case DA9063_BUCK_MODE_SYNC:
203160 return REGULATOR_MODE_FAST;
204
- case BUCK_MODE_AUTO:
161
+ case DA9063_BUCK_MODE_AUTO:
205162 return REGULATOR_MODE_NORMAL;
206163 }
207164
208
- /* Detect current regulator state */
209
- ret = regmap_field_read(regl->suspend, &val);
210
- if (ret < 0)
211
- return 0;
212
-
213
- /* Read regulator mode from proper register, depending on state */
214
- if (val)
215
- field = regl->suspend_sleep;
216
- else
217
- field = regl->sleep;
218
-
219
- ret = regmap_field_read(field, &val);
165
+ ret = regmap_field_read(regl->sleep, &val);
220166 if (ret < 0)
221167 return 0;
222168
223169 if (val)
224
- mode &= REGULATOR_MODE_STANDBY;
170
+ return REGULATOR_MODE_STANDBY;
225171 else
226
- mode &= REGULATOR_MODE_NORMAL | REGULATOR_MODE_FAST;
227
-
228
- return mode;
172
+ return REGULATOR_MODE_FAST;
229173 }
230174
231175 /*
....@@ -255,21 +199,9 @@
255199 static unsigned da9062_ldo_get_mode(struct regulator_dev *rdev)
256200 {
257201 struct da9062_regulator *regl = rdev_get_drvdata(rdev);
258
- struct regmap_field *field;
259202 int ret, val;
260203
261
- /* Detect current regulator state */
262
- ret = regmap_field_read(regl->suspend, &val);
263
- if (ret < 0)
264
- return 0;
265
-
266
- /* Read regulator mode from proper register, depending on state */
267
- if (val)
268
- field = regl->suspend_sleep;
269
- else
270
- field = regl->sleep;
271
-
272
- ret = regmap_field_read(field, &val);
204
+ ret = regmap_field_read(regl->sleep, &val);
273205 if (ret < 0)
274206 return 0;
275207
....@@ -353,13 +285,13 @@
353285
354286 switch (mode) {
355287 case REGULATOR_MODE_FAST:
356
- val = BUCK_MODE_SYNC;
288
+ val = DA9063_BUCK_MODE_SYNC;
357289 break;
358290 case REGULATOR_MODE_NORMAL:
359
- val = BUCK_MODE_AUTO;
291
+ val = DA9063_BUCK_MODE_AUTO;
360292 break;
361293 case REGULATOR_MODE_STANDBY:
362
- val = BUCK_MODE_SLEEP;
294
+ val = DA9063_BUCK_MODE_SLEEP;
363295 break;
364296 default:
365297 return -EINVAL;
....@@ -395,8 +327,8 @@
395327 .get_voltage_sel = regulator_get_voltage_sel_regmap,
396328 .set_voltage_sel = regulator_set_voltage_sel_regmap,
397329 .list_voltage = regulator_list_voltage_linear,
398
- .set_current_limit = da9062_set_current_limit,
399
- .get_current_limit = da9062_get_current_limit,
330
+ .set_current_limit = regulator_set_current_limit_regmap,
331
+ .get_current_limit = regulator_get_current_limit_regmap,
400332 .set_mode = da9062_buck_set_mode,
401333 .get_mode = da9062_buck_get_mode,
402334 .get_status = da9062_buck_get_status,
....@@ -433,13 +365,16 @@
433365 .desc.min_uV = (300) * 1000,
434366 .desc.uV_step = (10) * 1000,
435367 .desc.n_voltages = ((1570) - (300))/(10) + 1,
436
- .current_limits = da9062_buck_a_limits,
437
- .n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
368
+ .desc.curr_table = da9062_buck_a_limits,
369
+ .desc.n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
370
+ .desc.csel_reg = DA9062AA_BUCK_ILIM_C,
371
+ .desc.csel_mask = DA9062AA_BUCK1_ILIM_MASK,
438372 .desc.enable_reg = DA9062AA_BUCK1_CONT,
439373 .desc.enable_mask = DA9062AA_BUCK1_EN_MASK,
440374 .desc.vsel_reg = DA9062AA_VBUCK1_A,
441375 .desc.vsel_mask = DA9062AA_VBUCK1_A_MASK,
442376 .desc.linear_min_sel = 0,
377
+ .desc.of_map_mode = da9062_map_buck_mode,
443378 .sleep = REG_FIELD(DA9062AA_VBUCK1_A,
444379 __builtin_ffs((int)DA9062AA_BUCK1_SL_A_MASK) - 1,
445380 sizeof(unsigned int) * 8 -
....@@ -453,14 +388,10 @@
453388 __builtin_ffs((int)DA9062AA_BUCK1_MODE_MASK) - 1,
454389 sizeof(unsigned int) * 8 -
455390 __builtin_clz((DA9062AA_BUCK1_MODE_MASK)) - 1),
456
- .suspend = REG_FIELD(DA9062AA_DVC_1,
457
- __builtin_ffs((int)DA9062AA_VBUCK1_SEL_MASK) - 1,
391
+ .suspend = REG_FIELD(DA9062AA_BUCK1_CONT,
392
+ __builtin_ffs((int)DA9062AA_BUCK1_CONF_MASK) - 1,
458393 sizeof(unsigned int) * 8 -
459
- __builtin_clz((DA9062AA_VBUCK1_SEL_MASK)) - 1),
460
- .ilimit = REG_FIELD(DA9062AA_BUCK_ILIM_C,
461
- __builtin_ffs((int)DA9062AA_BUCK1_ILIM_MASK) - 1,
462
- sizeof(unsigned int) * 8 -
463
- __builtin_clz((DA9062AA_BUCK1_ILIM_MASK)) - 1),
394
+ __builtin_clz(DA9062AA_BUCK1_CONF_MASK) - 1),
464395 },
465396 {
466397 .desc.id = DA9061_ID_BUCK2,
....@@ -471,13 +402,16 @@
471402 .desc.min_uV = (800) * 1000,
472403 .desc.uV_step = (20) * 1000,
473404 .desc.n_voltages = ((3340) - (800))/(20) + 1,
474
- .current_limits = da9062_buck_b_limits,
475
- .n_current_limits = ARRAY_SIZE(da9062_buck_b_limits),
405
+ .desc.curr_table = da9062_buck_b_limits,
406
+ .desc.n_current_limits = ARRAY_SIZE(da9062_buck_b_limits),
407
+ .desc.csel_reg = DA9062AA_BUCK_ILIM_A,
408
+ .desc.csel_mask = DA9062AA_BUCK3_ILIM_MASK,
476409 .desc.enable_reg = DA9062AA_BUCK3_CONT,
477410 .desc.enable_mask = DA9062AA_BUCK3_EN_MASK,
478411 .desc.vsel_reg = DA9062AA_VBUCK3_A,
479412 .desc.vsel_mask = DA9062AA_VBUCK3_A_MASK,
480413 .desc.linear_min_sel = 0,
414
+ .desc.of_map_mode = da9062_map_buck_mode,
481415 .sleep = REG_FIELD(DA9062AA_VBUCK3_A,
482416 __builtin_ffs((int)DA9062AA_BUCK3_SL_A_MASK) - 1,
483417 sizeof(unsigned int) * 8 -
....@@ -491,14 +425,10 @@
491425 __builtin_ffs((int)DA9062AA_BUCK3_MODE_MASK) - 1,
492426 sizeof(unsigned int) * 8 -
493427 __builtin_clz((DA9062AA_BUCK3_MODE_MASK)) - 1),
494
- .suspend = REG_FIELD(DA9062AA_DVC_1,
495
- __builtin_ffs((int)DA9062AA_VBUCK3_SEL_MASK) - 1,
428
+ .suspend = REG_FIELD(DA9062AA_BUCK3_CONT,
429
+ __builtin_ffs((int)DA9062AA_BUCK3_CONF_MASK) - 1,
496430 sizeof(unsigned int) * 8 -
497
- __builtin_clz((DA9062AA_VBUCK3_SEL_MASK)) - 1),
498
- .ilimit = REG_FIELD(DA9062AA_BUCK_ILIM_A,
499
- __builtin_ffs((int)DA9062AA_BUCK3_ILIM_MASK) - 1,
500
- sizeof(unsigned int) * 8 -
501
- __builtin_clz((DA9062AA_BUCK3_ILIM_MASK)) - 1),
431
+ __builtin_clz(DA9062AA_BUCK3_CONF_MASK) - 1),
502432 },
503433 {
504434 .desc.id = DA9061_ID_BUCK3,
....@@ -509,13 +439,16 @@
509439 .desc.min_uV = (530) * 1000,
510440 .desc.uV_step = (10) * 1000,
511441 .desc.n_voltages = ((1800) - (530))/(10) + 1,
512
- .current_limits = da9062_buck_a_limits,
513
- .n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
442
+ .desc.curr_table = da9062_buck_a_limits,
443
+ .desc.n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
444
+ .desc.csel_reg = DA9062AA_BUCK_ILIM_B,
445
+ .desc.csel_mask = DA9062AA_BUCK4_ILIM_MASK,
514446 .desc.enable_reg = DA9062AA_BUCK4_CONT,
515447 .desc.enable_mask = DA9062AA_BUCK4_EN_MASK,
516448 .desc.vsel_reg = DA9062AA_VBUCK4_A,
517449 .desc.vsel_mask = DA9062AA_VBUCK4_A_MASK,
518450 .desc.linear_min_sel = 0,
451
+ .desc.of_map_mode = da9062_map_buck_mode,
519452 .sleep = REG_FIELD(DA9062AA_VBUCK4_A,
520453 __builtin_ffs((int)DA9062AA_BUCK4_SL_A_MASK) - 1,
521454 sizeof(unsigned int) * 8 -
....@@ -529,14 +462,10 @@
529462 __builtin_ffs((int)DA9062AA_BUCK4_MODE_MASK) - 1,
530463 sizeof(unsigned int) * 8 -
531464 __builtin_clz((DA9062AA_BUCK4_MODE_MASK)) - 1),
532
- .suspend = REG_FIELD(DA9062AA_DVC_1,
533
- __builtin_ffs((int)DA9062AA_VBUCK4_SEL_MASK) - 1,
465
+ .suspend = REG_FIELD(DA9062AA_BUCK4_CONT,
466
+ __builtin_ffs((int)DA9062AA_BUCK4_CONF_MASK) - 1,
534467 sizeof(unsigned int) * 8 -
535
- __builtin_clz((DA9062AA_VBUCK4_SEL_MASK)) - 1),
536
- .ilimit = REG_FIELD(DA9062AA_BUCK_ILIM_B,
537
- __builtin_ffs((int)DA9062AA_BUCK4_ILIM_MASK) - 1,
538
- sizeof(unsigned int) * 8 -
539
- __builtin_clz((DA9062AA_BUCK4_ILIM_MASK)) - 1),
468
+ __builtin_clz(DA9062AA_BUCK4_CONF_MASK) - 1),
540469 },
541470 {
542471 .desc.id = DA9061_ID_LDO1,
....@@ -546,12 +475,13 @@
546475 .desc.ops = &da9062_ldo_ops,
547476 .desc.min_uV = (900) * 1000,
548477 .desc.uV_step = (50) * 1000,
549
- .desc.n_voltages = ((3600) - (900))/(50) + 1,
478
+ .desc.n_voltages = ((3600) - (900))/(50) + 1
479
+ + DA9062AA_VLDO_A_MIN_SEL,
550480 .desc.enable_reg = DA9062AA_LDO1_CONT,
551481 .desc.enable_mask = DA9062AA_LDO1_EN_MASK,
552482 .desc.vsel_reg = DA9062AA_VLDO1_A,
553483 .desc.vsel_mask = DA9062AA_VLDO1_A_MASK,
554
- .desc.linear_min_sel = 0,
484
+ .desc.linear_min_sel = DA9062AA_VLDO_A_MIN_SEL,
555485 .sleep = REG_FIELD(DA9062AA_VLDO1_A,
556486 __builtin_ffs((int)DA9062AA_LDO1_SL_A_MASK) - 1,
557487 sizeof(unsigned int) * 8 -
....@@ -561,10 +491,10 @@
561491 sizeof(unsigned int) * 8 -
562492 __builtin_clz((DA9062AA_LDO1_SL_B_MASK)) - 1),
563493 .suspend_vsel_reg = DA9062AA_VLDO1_B,
564
- .suspend = REG_FIELD(DA9062AA_DVC_1,
565
- __builtin_ffs((int)DA9062AA_VLDO1_SEL_MASK) - 1,
494
+ .suspend = REG_FIELD(DA9062AA_LDO1_CONT,
495
+ __builtin_ffs((int)DA9062AA_LDO1_CONF_MASK) - 1,
566496 sizeof(unsigned int) * 8 -
567
- __builtin_clz((DA9062AA_VLDO1_SEL_MASK)) - 1),
497
+ __builtin_clz(DA9062AA_LDO1_CONF_MASK) - 1),
568498 .oc_event = REG_FIELD(DA9062AA_STATUS_D,
569499 __builtin_ffs((int)DA9062AA_LDO1_ILIM_MASK) - 1,
570500 sizeof(unsigned int) * 8 -
....@@ -578,12 +508,13 @@
578508 .desc.ops = &da9062_ldo_ops,
579509 .desc.min_uV = (900) * 1000,
580510 .desc.uV_step = (50) * 1000,
581
- .desc.n_voltages = ((3600) - (600))/(50) + 1,
511
+ .desc.n_voltages = ((3600) - (900))/(50) + 1
512
+ + DA9062AA_VLDO_A_MIN_SEL,
582513 .desc.enable_reg = DA9062AA_LDO2_CONT,
583514 .desc.enable_mask = DA9062AA_LDO2_EN_MASK,
584515 .desc.vsel_reg = DA9062AA_VLDO2_A,
585516 .desc.vsel_mask = DA9062AA_VLDO2_A_MASK,
586
- .desc.linear_min_sel = 0,
517
+ .desc.linear_min_sel = DA9062AA_VLDO_A_MIN_SEL,
587518 .sleep = REG_FIELD(DA9062AA_VLDO2_A,
588519 __builtin_ffs((int)DA9062AA_LDO2_SL_A_MASK) - 1,
589520 sizeof(unsigned int) * 8 -
....@@ -593,10 +524,10 @@
593524 sizeof(unsigned int) * 8 -
594525 __builtin_clz((DA9062AA_LDO2_SL_B_MASK)) - 1),
595526 .suspend_vsel_reg = DA9062AA_VLDO2_B,
596
- .suspend = REG_FIELD(DA9062AA_DVC_1,
597
- __builtin_ffs((int)DA9062AA_VLDO2_SEL_MASK) - 1,
527
+ .suspend = REG_FIELD(DA9062AA_LDO2_CONT,
528
+ __builtin_ffs((int)DA9062AA_LDO2_CONF_MASK) - 1,
598529 sizeof(unsigned int) * 8 -
599
- __builtin_clz((DA9062AA_VLDO2_SEL_MASK)) - 1),
530
+ __builtin_clz(DA9062AA_LDO2_CONF_MASK) - 1),
600531 .oc_event = REG_FIELD(DA9062AA_STATUS_D,
601532 __builtin_ffs((int)DA9062AA_LDO2_ILIM_MASK) - 1,
602533 sizeof(unsigned int) * 8 -
....@@ -610,12 +541,13 @@
610541 .desc.ops = &da9062_ldo_ops,
611542 .desc.min_uV = (900) * 1000,
612543 .desc.uV_step = (50) * 1000,
613
- .desc.n_voltages = ((3600) - (900))/(50) + 1,
544
+ .desc.n_voltages = ((3600) - (900))/(50) + 1
545
+ + DA9062AA_VLDO_A_MIN_SEL,
614546 .desc.enable_reg = DA9062AA_LDO3_CONT,
615547 .desc.enable_mask = DA9062AA_LDO3_EN_MASK,
616548 .desc.vsel_reg = DA9062AA_VLDO3_A,
617549 .desc.vsel_mask = DA9062AA_VLDO3_A_MASK,
618
- .desc.linear_min_sel = 0,
550
+ .desc.linear_min_sel = DA9062AA_VLDO_A_MIN_SEL,
619551 .sleep = REG_FIELD(DA9062AA_VLDO3_A,
620552 __builtin_ffs((int)DA9062AA_LDO3_SL_A_MASK) - 1,
621553 sizeof(unsigned int) * 8 -
....@@ -625,10 +557,10 @@
625557 sizeof(unsigned int) * 8 -
626558 __builtin_clz((DA9062AA_LDO3_SL_B_MASK)) - 1),
627559 .suspend_vsel_reg = DA9062AA_VLDO3_B,
628
- .suspend = REG_FIELD(DA9062AA_DVC_1,
629
- __builtin_ffs((int)DA9062AA_VLDO3_SEL_MASK) - 1,
560
+ .suspend = REG_FIELD(DA9062AA_LDO3_CONT,
561
+ __builtin_ffs((int)DA9062AA_LDO3_CONF_MASK) - 1,
630562 sizeof(unsigned int) * 8 -
631
- __builtin_clz((DA9062AA_VLDO3_SEL_MASK)) - 1),
563
+ __builtin_clz(DA9062AA_LDO3_CONF_MASK) - 1),
632564 .oc_event = REG_FIELD(DA9062AA_STATUS_D,
633565 __builtin_ffs((int)DA9062AA_LDO3_ILIM_MASK) - 1,
634566 sizeof(unsigned int) * 8 -
....@@ -642,12 +574,13 @@
642574 .desc.ops = &da9062_ldo_ops,
643575 .desc.min_uV = (900) * 1000,
644576 .desc.uV_step = (50) * 1000,
645
- .desc.n_voltages = ((3600) - (900))/(50) + 1,
577
+ .desc.n_voltages = ((3600) - (900))/(50) + 1
578
+ + DA9062AA_VLDO_A_MIN_SEL,
646579 .desc.enable_reg = DA9062AA_LDO4_CONT,
647580 .desc.enable_mask = DA9062AA_LDO4_EN_MASK,
648581 .desc.vsel_reg = DA9062AA_VLDO4_A,
649582 .desc.vsel_mask = DA9062AA_VLDO4_A_MASK,
650
- .desc.linear_min_sel = 0,
583
+ .desc.linear_min_sel = DA9062AA_VLDO_A_MIN_SEL,
651584 .sleep = REG_FIELD(DA9062AA_VLDO4_A,
652585 __builtin_ffs((int)DA9062AA_LDO4_SL_A_MASK) - 1,
653586 sizeof(unsigned int) * 8 -
....@@ -657,10 +590,10 @@
657590 sizeof(unsigned int) * 8 -
658591 __builtin_clz((DA9062AA_LDO4_SL_B_MASK)) - 1),
659592 .suspend_vsel_reg = DA9062AA_VLDO4_B,
660
- .suspend = REG_FIELD(DA9062AA_DVC_1,
661
- __builtin_ffs((int)DA9062AA_VLDO4_SEL_MASK) - 1,
593
+ .suspend = REG_FIELD(DA9062AA_LDO4_CONT,
594
+ __builtin_ffs((int)DA9062AA_LDO4_CONF_MASK) - 1,
662595 sizeof(unsigned int) * 8 -
663
- __builtin_clz((DA9062AA_VLDO4_SEL_MASK)) - 1),
596
+ __builtin_clz(DA9062AA_LDO4_CONF_MASK) - 1),
664597 .oc_event = REG_FIELD(DA9062AA_STATUS_D,
665598 __builtin_ffs((int)DA9062AA_LDO4_ILIM_MASK) - 1,
666599 sizeof(unsigned int) * 8 -
....@@ -679,13 +612,16 @@
679612 .desc.min_uV = (300) * 1000,
680613 .desc.uV_step = (10) * 1000,
681614 .desc.n_voltages = ((1570) - (300))/(10) + 1,
682
- .current_limits = da9062_buck_a_limits,
683
- .n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
615
+ .desc.curr_table = da9062_buck_a_limits,
616
+ .desc.n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
617
+ .desc.csel_reg = DA9062AA_BUCK_ILIM_C,
618
+ .desc.csel_mask = DA9062AA_BUCK1_ILIM_MASK,
684619 .desc.enable_reg = DA9062AA_BUCK1_CONT,
685620 .desc.enable_mask = DA9062AA_BUCK1_EN_MASK,
686621 .desc.vsel_reg = DA9062AA_VBUCK1_A,
687622 .desc.vsel_mask = DA9062AA_VBUCK1_A_MASK,
688623 .desc.linear_min_sel = 0,
624
+ .desc.of_map_mode = da9062_map_buck_mode,
689625 .sleep = REG_FIELD(DA9062AA_VBUCK1_A,
690626 __builtin_ffs((int)DA9062AA_BUCK1_SL_A_MASK) - 1,
691627 sizeof(unsigned int) * 8 -
....@@ -699,14 +635,10 @@
699635 __builtin_ffs((int)DA9062AA_BUCK1_MODE_MASK) - 1,
700636 sizeof(unsigned int) * 8 -
701637 __builtin_clz((DA9062AA_BUCK1_MODE_MASK)) - 1),
702
- .suspend = REG_FIELD(DA9062AA_DVC_1,
703
- __builtin_ffs((int)DA9062AA_VBUCK1_SEL_MASK) - 1,
638
+ .suspend = REG_FIELD(DA9062AA_BUCK1_CONT,
639
+ __builtin_ffs((int)DA9062AA_BUCK1_CONF_MASK) - 1,
704640 sizeof(unsigned int) * 8 -
705
- __builtin_clz((DA9062AA_VBUCK1_SEL_MASK)) - 1),
706
- .ilimit = REG_FIELD(DA9062AA_BUCK_ILIM_C,
707
- __builtin_ffs((int)DA9062AA_BUCK1_ILIM_MASK) - 1,
708
- sizeof(unsigned int) * 8 -
709
- __builtin_clz((DA9062AA_BUCK1_ILIM_MASK)) - 1),
641
+ __builtin_clz(DA9062AA_BUCK1_CONF_MASK) - 1),
710642 },
711643 {
712644 .desc.id = DA9062_ID_BUCK2,
....@@ -717,13 +649,16 @@
717649 .desc.min_uV = (300) * 1000,
718650 .desc.uV_step = (10) * 1000,
719651 .desc.n_voltages = ((1570) - (300))/(10) + 1,
720
- .current_limits = da9062_buck_a_limits,
721
- .n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
652
+ .desc.curr_table = da9062_buck_a_limits,
653
+ .desc.n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
654
+ .desc.csel_reg = DA9062AA_BUCK_ILIM_C,
655
+ .desc.csel_mask = DA9062AA_BUCK2_ILIM_MASK,
722656 .desc.enable_reg = DA9062AA_BUCK2_CONT,
723657 .desc.enable_mask = DA9062AA_BUCK2_EN_MASK,
724658 .desc.vsel_reg = DA9062AA_VBUCK2_A,
725659 .desc.vsel_mask = DA9062AA_VBUCK2_A_MASK,
726660 .desc.linear_min_sel = 0,
661
+ .desc.of_map_mode = da9062_map_buck_mode,
727662 .sleep = REG_FIELD(DA9062AA_VBUCK2_A,
728663 __builtin_ffs((int)DA9062AA_BUCK2_SL_A_MASK) - 1,
729664 sizeof(unsigned int) * 8 -
....@@ -737,14 +672,10 @@
737672 __builtin_ffs((int)DA9062AA_BUCK2_MODE_MASK) - 1,
738673 sizeof(unsigned int) * 8 -
739674 __builtin_clz((DA9062AA_BUCK2_MODE_MASK)) - 1),
740
- .suspend = REG_FIELD(DA9062AA_DVC_1,
741
- __builtin_ffs((int)DA9062AA_VBUCK2_SEL_MASK) - 1,
675
+ .suspend = REG_FIELD(DA9062AA_BUCK2_CONT,
676
+ __builtin_ffs((int)DA9062AA_BUCK2_CONF_MASK) - 1,
742677 sizeof(unsigned int) * 8 -
743
- __builtin_clz((DA9062AA_VBUCK2_SEL_MASK)) - 1),
744
- .ilimit = REG_FIELD(DA9062AA_BUCK_ILIM_C,
745
- __builtin_ffs((int)DA9062AA_BUCK2_ILIM_MASK) - 1,
746
- sizeof(unsigned int) * 8 -
747
- __builtin_clz((DA9062AA_BUCK2_ILIM_MASK)) - 1),
678
+ __builtin_clz(DA9062AA_BUCK2_CONF_MASK) - 1),
748679 },
749680 {
750681 .desc.id = DA9062_ID_BUCK3,
....@@ -755,13 +686,16 @@
755686 .desc.min_uV = (800) * 1000,
756687 .desc.uV_step = (20) * 1000,
757688 .desc.n_voltages = ((3340) - (800))/(20) + 1,
758
- .current_limits = da9062_buck_b_limits,
759
- .n_current_limits = ARRAY_SIZE(da9062_buck_b_limits),
689
+ .desc.curr_table = da9062_buck_b_limits,
690
+ .desc.n_current_limits = ARRAY_SIZE(da9062_buck_b_limits),
691
+ .desc.csel_reg = DA9062AA_BUCK_ILIM_A,
692
+ .desc.csel_mask = DA9062AA_BUCK3_ILIM_MASK,
760693 .desc.enable_reg = DA9062AA_BUCK3_CONT,
761694 .desc.enable_mask = DA9062AA_BUCK3_EN_MASK,
762695 .desc.vsel_reg = DA9062AA_VBUCK3_A,
763696 .desc.vsel_mask = DA9062AA_VBUCK3_A_MASK,
764697 .desc.linear_min_sel = 0,
698
+ .desc.of_map_mode = da9062_map_buck_mode,
765699 .sleep = REG_FIELD(DA9062AA_VBUCK3_A,
766700 __builtin_ffs((int)DA9062AA_BUCK3_SL_A_MASK) - 1,
767701 sizeof(unsigned int) * 8 -
....@@ -775,14 +709,10 @@
775709 __builtin_ffs((int)DA9062AA_BUCK3_MODE_MASK) - 1,
776710 sizeof(unsigned int) * 8 -
777711 __builtin_clz((DA9062AA_BUCK3_MODE_MASK)) - 1),
778
- .suspend = REG_FIELD(DA9062AA_DVC_1,
779
- __builtin_ffs((int)DA9062AA_VBUCK3_SEL_MASK) - 1,
712
+ .suspend = REG_FIELD(DA9062AA_BUCK3_CONT,
713
+ __builtin_ffs((int)DA9062AA_BUCK3_CONF_MASK) - 1,
780714 sizeof(unsigned int) * 8 -
781
- __builtin_clz((DA9062AA_VBUCK3_SEL_MASK)) - 1),
782
- .ilimit = REG_FIELD(DA9062AA_BUCK_ILIM_A,
783
- __builtin_ffs((int)DA9062AA_BUCK3_ILIM_MASK) - 1,
784
- sizeof(unsigned int) * 8 -
785
- __builtin_clz((DA9062AA_BUCK3_ILIM_MASK)) - 1),
715
+ __builtin_clz(DA9062AA_BUCK3_CONF_MASK) - 1),
786716 },
787717 {
788718 .desc.id = DA9062_ID_BUCK4,
....@@ -793,13 +723,16 @@
793723 .desc.min_uV = (530) * 1000,
794724 .desc.uV_step = (10) * 1000,
795725 .desc.n_voltages = ((1800) - (530))/(10) + 1,
796
- .current_limits = da9062_buck_a_limits,
797
- .n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
726
+ .desc.curr_table = da9062_buck_a_limits,
727
+ .desc.n_current_limits = ARRAY_SIZE(da9062_buck_a_limits),
728
+ .desc.csel_reg = DA9062AA_BUCK_ILIM_B,
729
+ .desc.csel_mask = DA9062AA_BUCK4_ILIM_MASK,
798730 .desc.enable_reg = DA9062AA_BUCK4_CONT,
799731 .desc.enable_mask = DA9062AA_BUCK4_EN_MASK,
800732 .desc.vsel_reg = DA9062AA_VBUCK4_A,
801733 .desc.vsel_mask = DA9062AA_VBUCK4_A_MASK,
802734 .desc.linear_min_sel = 0,
735
+ .desc.of_map_mode = da9062_map_buck_mode,
803736 .sleep = REG_FIELD(DA9062AA_VBUCK4_A,
804737 __builtin_ffs((int)DA9062AA_BUCK4_SL_A_MASK) - 1,
805738 sizeof(unsigned int) * 8 -
....@@ -813,14 +746,10 @@
813746 __builtin_ffs((int)DA9062AA_BUCK4_MODE_MASK) - 1,
814747 sizeof(unsigned int) * 8 -
815748 __builtin_clz((DA9062AA_BUCK4_MODE_MASK)) - 1),
816
- .suspend = REG_FIELD(DA9062AA_DVC_1,
817
- __builtin_ffs((int)DA9062AA_VBUCK4_SEL_MASK) - 1,
749
+ .suspend = REG_FIELD(DA9062AA_BUCK4_CONT,
750
+ __builtin_ffs((int)DA9062AA_BUCK4_CONF_MASK) - 1,
818751 sizeof(unsigned int) * 8 -
819
- __builtin_clz((DA9062AA_VBUCK4_SEL_MASK)) - 1),
820
- .ilimit = REG_FIELD(DA9062AA_BUCK_ILIM_B,
821
- __builtin_ffs((int)DA9062AA_BUCK4_ILIM_MASK) - 1,
822
- sizeof(unsigned int) * 8 -
823
- __builtin_clz((DA9062AA_BUCK4_ILIM_MASK)) - 1),
752
+ __builtin_clz(DA9062AA_BUCK4_CONF_MASK) - 1),
824753 },
825754 {
826755 .desc.id = DA9062_ID_LDO1,
....@@ -830,12 +759,13 @@
830759 .desc.ops = &da9062_ldo_ops,
831760 .desc.min_uV = (900) * 1000,
832761 .desc.uV_step = (50) * 1000,
833
- .desc.n_voltages = ((3600) - (900))/(50) + 1,
762
+ .desc.n_voltages = ((3600) - (900))/(50) + 1
763
+ + DA9062AA_VLDO_A_MIN_SEL,
834764 .desc.enable_reg = DA9062AA_LDO1_CONT,
835765 .desc.enable_mask = DA9062AA_LDO1_EN_MASK,
836766 .desc.vsel_reg = DA9062AA_VLDO1_A,
837767 .desc.vsel_mask = DA9062AA_VLDO1_A_MASK,
838
- .desc.linear_min_sel = 0,
768
+ .desc.linear_min_sel = DA9062AA_VLDO_A_MIN_SEL,
839769 .sleep = REG_FIELD(DA9062AA_VLDO1_A,
840770 __builtin_ffs((int)DA9062AA_LDO1_SL_A_MASK) - 1,
841771 sizeof(unsigned int) * 8 -
....@@ -845,10 +775,10 @@
845775 sizeof(unsigned int) * 8 -
846776 __builtin_clz((DA9062AA_LDO1_SL_B_MASK)) - 1),
847777 .suspend_vsel_reg = DA9062AA_VLDO1_B,
848
- .suspend = REG_FIELD(DA9062AA_DVC_1,
849
- __builtin_ffs((int)DA9062AA_VLDO1_SEL_MASK) - 1,
778
+ .suspend = REG_FIELD(DA9062AA_LDO1_CONT,
779
+ __builtin_ffs((int)DA9062AA_LDO1_CONF_MASK) - 1,
850780 sizeof(unsigned int) * 8 -
851
- __builtin_clz((DA9062AA_VLDO1_SEL_MASK)) - 1),
781
+ __builtin_clz(DA9062AA_LDO1_CONF_MASK) - 1),
852782 .oc_event = REG_FIELD(DA9062AA_STATUS_D,
853783 __builtin_ffs((int)DA9062AA_LDO1_ILIM_MASK) - 1,
854784 sizeof(unsigned int) * 8 -
....@@ -862,12 +792,13 @@
862792 .desc.ops = &da9062_ldo_ops,
863793 .desc.min_uV = (900) * 1000,
864794 .desc.uV_step = (50) * 1000,
865
- .desc.n_voltages = ((3600) - (600))/(50) + 1,
795
+ .desc.n_voltages = ((3600) - (900))/(50) + 1
796
+ + DA9062AA_VLDO_A_MIN_SEL,
866797 .desc.enable_reg = DA9062AA_LDO2_CONT,
867798 .desc.enable_mask = DA9062AA_LDO2_EN_MASK,
868799 .desc.vsel_reg = DA9062AA_VLDO2_A,
869800 .desc.vsel_mask = DA9062AA_VLDO2_A_MASK,
870
- .desc.linear_min_sel = 0,
801
+ .desc.linear_min_sel = DA9062AA_VLDO_A_MIN_SEL,
871802 .sleep = REG_FIELD(DA9062AA_VLDO2_A,
872803 __builtin_ffs((int)DA9062AA_LDO2_SL_A_MASK) - 1,
873804 sizeof(unsigned int) * 8 -
....@@ -877,10 +808,10 @@
877808 sizeof(unsigned int) * 8 -
878809 __builtin_clz((DA9062AA_LDO2_SL_B_MASK)) - 1),
879810 .suspend_vsel_reg = DA9062AA_VLDO2_B,
880
- .suspend = REG_FIELD(DA9062AA_DVC_1,
881
- __builtin_ffs((int)DA9062AA_VLDO2_SEL_MASK) - 1,
811
+ .suspend = REG_FIELD(DA9062AA_LDO2_CONT,
812
+ __builtin_ffs((int)DA9062AA_LDO2_CONF_MASK) - 1,
882813 sizeof(unsigned int) * 8 -
883
- __builtin_clz((DA9062AA_VLDO2_SEL_MASK)) - 1),
814
+ __builtin_clz(DA9062AA_LDO2_CONF_MASK) - 1),
884815 .oc_event = REG_FIELD(DA9062AA_STATUS_D,
885816 __builtin_ffs((int)DA9062AA_LDO2_ILIM_MASK) - 1,
886817 sizeof(unsigned int) * 8 -
....@@ -894,12 +825,13 @@
894825 .desc.ops = &da9062_ldo_ops,
895826 .desc.min_uV = (900) * 1000,
896827 .desc.uV_step = (50) * 1000,
897
- .desc.n_voltages = ((3600) - (900))/(50) + 1,
828
+ .desc.n_voltages = ((3600) - (900))/(50) + 1
829
+ + DA9062AA_VLDO_A_MIN_SEL,
898830 .desc.enable_reg = DA9062AA_LDO3_CONT,
899831 .desc.enable_mask = DA9062AA_LDO3_EN_MASK,
900832 .desc.vsel_reg = DA9062AA_VLDO3_A,
901833 .desc.vsel_mask = DA9062AA_VLDO3_A_MASK,
902
- .desc.linear_min_sel = 0,
834
+ .desc.linear_min_sel = DA9062AA_VLDO_A_MIN_SEL,
903835 .sleep = REG_FIELD(DA9062AA_VLDO3_A,
904836 __builtin_ffs((int)DA9062AA_LDO3_SL_A_MASK) - 1,
905837 sizeof(unsigned int) * 8 -
....@@ -909,10 +841,10 @@
909841 sizeof(unsigned int) * 8 -
910842 __builtin_clz((DA9062AA_LDO3_SL_B_MASK)) - 1),
911843 .suspend_vsel_reg = DA9062AA_VLDO3_B,
912
- .suspend = REG_FIELD(DA9062AA_DVC_1,
913
- __builtin_ffs((int)DA9062AA_VLDO3_SEL_MASK) - 1,
844
+ .suspend = REG_FIELD(DA9062AA_LDO3_CONT,
845
+ __builtin_ffs((int)DA9062AA_LDO3_CONF_MASK) - 1,
914846 sizeof(unsigned int) * 8 -
915
- __builtin_clz((DA9062AA_VLDO3_SEL_MASK)) - 1),
847
+ __builtin_clz(DA9062AA_LDO3_CONF_MASK) - 1),
916848 .oc_event = REG_FIELD(DA9062AA_STATUS_D,
917849 __builtin_ffs((int)DA9062AA_LDO3_ILIM_MASK) - 1,
918850 sizeof(unsigned int) * 8 -
....@@ -926,12 +858,13 @@
926858 .desc.ops = &da9062_ldo_ops,
927859 .desc.min_uV = (900) * 1000,
928860 .desc.uV_step = (50) * 1000,
929
- .desc.n_voltages = ((3600) - (900))/(50) + 1,
861
+ .desc.n_voltages = ((3600) - (900))/(50) + 1
862
+ + DA9062AA_VLDO_A_MIN_SEL,
930863 .desc.enable_reg = DA9062AA_LDO4_CONT,
931864 .desc.enable_mask = DA9062AA_LDO4_EN_MASK,
932865 .desc.vsel_reg = DA9062AA_VLDO4_A,
933866 .desc.vsel_mask = DA9062AA_VLDO4_A_MASK,
934
- .desc.linear_min_sel = 0,
867
+ .desc.linear_min_sel = DA9062AA_VLDO_A_MIN_SEL,
935868 .sleep = REG_FIELD(DA9062AA_VLDO4_A,
936869 __builtin_ffs((int)DA9062AA_LDO4_SL_A_MASK) - 1,
937870 sizeof(unsigned int) * 8 -
....@@ -941,10 +874,10 @@
941874 sizeof(unsigned int) * 8 -
942875 __builtin_clz((DA9062AA_LDO4_SL_B_MASK)) - 1),
943876 .suspend_vsel_reg = DA9062AA_VLDO4_B,
944
- .suspend = REG_FIELD(DA9062AA_DVC_1,
945
- __builtin_ffs((int)DA9062AA_VLDO4_SEL_MASK) - 1,
877
+ .suspend = REG_FIELD(DA9062AA_LDO4_CONT,
878
+ __builtin_ffs((int)DA9062AA_LDO4_CONF_MASK) - 1,
946879 sizeof(unsigned int) * 8 -
947
- __builtin_clz((DA9062AA_VLDO4_SEL_MASK)) - 1),
880
+ __builtin_clz(DA9062AA_LDO4_CONF_MASK) - 1),
948881 .oc_event = REG_FIELD(DA9062AA_STATUS_D,
949882 __builtin_ffs((int)DA9062AA_LDO4_ILIM_MASK) - 1,
950883 sizeof(unsigned int) * 8 -
....@@ -992,7 +925,6 @@
992925 struct regulator_config config = { };
993926 const struct da9062_regulator_info *rinfo;
994927 int irq, n, ret;
995
- size_t size;
996928 int max_regulators;
997929
998930 switch (chip->chip_type) {
....@@ -1010,17 +942,15 @@
1010942 }
1011943
1012944 /* Allocate memory required by usable regulators */
1013
- size = sizeof(struct da9062_regulators) +
1014
- max_regulators * sizeof(struct da9062_regulator);
1015
- regulators = devm_kzalloc(&pdev->dev, size, GFP_KERNEL);
945
+ regulators = devm_kzalloc(&pdev->dev, struct_size(regulators, regulator,
946
+ max_regulators), GFP_KERNEL);
1016947 if (!regulators)
1017948 return -ENOMEM;
1018949
1019950 regulators->n_regulators = max_regulators;
1020951 platform_set_drvdata(pdev, regulators);
1021952
1022
- n = 0;
1023
- while (n < regulators->n_regulators) {
953
+ for (n = 0; n < regulators->n_regulators; n++) {
1024954 /* Initialise regulator structure */
1025955 regl = &regulators->regulator[n];
1026956 regl->hw = chip;
....@@ -1029,31 +959,41 @@
1029959 regl->desc.type = REGULATOR_VOLTAGE;
1030960 regl->desc.owner = THIS_MODULE;
1031961
1032
- if (regl->info->mode.reg)
962
+ if (regl->info->mode.reg) {
1033963 regl->mode = devm_regmap_field_alloc(
1034964 &pdev->dev,
1035965 chip->regmap,
1036966 regl->info->mode);
1037
- if (regl->info->suspend.reg)
967
+ if (IS_ERR(regl->mode))
968
+ return PTR_ERR(regl->mode);
969
+ }
970
+
971
+ if (regl->info->suspend.reg) {
1038972 regl->suspend = devm_regmap_field_alloc(
1039973 &pdev->dev,
1040974 chip->regmap,
1041975 regl->info->suspend);
1042
- if (regl->info->sleep.reg)
976
+ if (IS_ERR(regl->suspend))
977
+ return PTR_ERR(regl->suspend);
978
+ }
979
+
980
+ if (regl->info->sleep.reg) {
1043981 regl->sleep = devm_regmap_field_alloc(
1044982 &pdev->dev,
1045983 chip->regmap,
1046984 regl->info->sleep);
1047
- if (regl->info->suspend_sleep.reg)
985
+ if (IS_ERR(regl->sleep))
986
+ return PTR_ERR(regl->sleep);
987
+ }
988
+
989
+ if (regl->info->suspend_sleep.reg) {
1048990 regl->suspend_sleep = devm_regmap_field_alloc(
1049991 &pdev->dev,
1050992 chip->regmap,
1051993 regl->info->suspend_sleep);
1052
- if (regl->info->ilimit.reg)
1053
- regl->ilimit = devm_regmap_field_alloc(
1054
- &pdev->dev,
1055
- chip->regmap,
1056
- regl->info->ilimit);
994
+ if (IS_ERR(regl->suspend_sleep))
995
+ return PTR_ERR(regl->suspend_sleep);
996
+ }
1057997
1058998 /* Register regulator */
1059999 memset(&config, 0, sizeof(config));
....@@ -1069,16 +1009,12 @@
10691009 regl->desc.name);
10701010 return PTR_ERR(regl->rdev);
10711011 }
1072
-
1073
- n++;
10741012 }
10751013
10761014 /* LDOs overcurrent event support */
10771015 irq = platform_get_irq_byname(pdev, "LDO_LIM");
1078
- if (irq < 0) {
1079
- dev_err(&pdev->dev, "Failed to get IRQ.\n");
1016
+ if (irq < 0)
10801017 return irq;
1081
- }
10821018 regulators->irq_ldo_lim = irq;
10831019
10841020 ret = devm_request_threaded_irq(&pdev->dev, irq,