Use regulator_set/get_current_limit_regmap helpers to save some code.
Signed-off-by: Axel Lin <[email protected]>
---
drivers/regulator/lp87565-regulator.c | 47 ++++-----------------------
1 file changed, 7 insertions(+), 40 deletions(-)
diff --git a/drivers/regulator/lp87565-regulator.c b/drivers/regulator/lp87565-regulator.c
index 0418e478c6dc..81eb4b890c0c 100644
--- a/drivers/regulator/lp87565-regulator.c
+++ b/drivers/regulator/lp87565-regulator.c
@@ -34,6 +34,10 @@
.ramp_delay = _delay, \
.linear_ranges = _lr, \
.n_linear_ranges = ARRAY_SIZE(_lr), \
+ .curr_table = lp87565_buck_uA, \
+ .n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
+ .csel_reg = (_cr), \
+ .csel_mask = LP87565_BUCK_CTRL_2_ILIM, \
}, \
.ctrl2_reg = _cr, \
}
@@ -102,44 +106,7 @@ static int lp87565_buck_set_ramp_delay(struct regulator_dev *rdev,
return 0;
}
-static int lp87565_buck_set_current_limit(struct regulator_dev *rdev,
- int min_uA, int max_uA)
-{
- int id = rdev_get_id(rdev);
- struct lp87565 *lp87565 = rdev_get_drvdata(rdev);
- int i;
-
- for (i = ARRAY_SIZE(lp87565_buck_uA) - 1; i >= 0; i--) {
- if (lp87565_buck_uA[i] >= min_uA &&
- lp87565_buck_uA[i] <= max_uA)
- return regmap_update_bits(lp87565->regmap,
- regulators[id].ctrl2_reg,
- LP87565_BUCK_CTRL_2_ILIM,
- i << __ffs(LP87565_BUCK_CTRL_2_ILIM));
- }
-
- return -EINVAL;
-}
-
-static int lp87565_buck_get_current_limit(struct regulator_dev *rdev)
-{
- int id = rdev_get_id(rdev);
- struct lp87565 *lp87565 = rdev_get_drvdata(rdev);
- int ret;
- unsigned int val;
-
- ret = regmap_read(lp87565->regmap, regulators[id].ctrl2_reg, &val);
- if (ret)
- return ret;
-
- val = (val & LP87565_BUCK_CTRL_2_ILIM) >>
- __ffs(LP87565_BUCK_CTRL_2_ILIM);
-
- return (val < ARRAY_SIZE(lp87565_buck_uA)) ?
- lp87565_buck_uA[val] : -EINVAL;
-}
-
-/* Operations permitted on BUCK0, BUCK1 */
+/* Operations permitted on BUCKs */
static const struct regulator_ops lp87565_buck_ops = {
.is_enabled = regulator_is_enabled_regmap,
.enable = regulator_enable_regmap,
@@ -150,8 +117,8 @@ static const struct regulator_ops lp87565_buck_ops = {
.map_voltage = regulator_map_voltage_linear_range,
.set_voltage_time_sel = regulator_set_voltage_time_sel,
.set_ramp_delay = lp87565_buck_set_ramp_delay,
- .set_current_limit = lp87565_buck_set_current_limit,
- .get_current_limit = lp87565_buck_get_current_limit,
+ .set_current_limit = regulator_set_current_limit_regmap,
+ .get_current_limit = regulator_get_current_limit_regmap,
};
static const struct lp87565_regulator regulators[] = {
--
2.17.1
Hi Axel,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on regulator/for-next]
[also build test ERROR on next-20190228]
[cannot apply to v5.0-rc8]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Axel-Lin/regulator-lp87565-Convert-to-use-regulator_set-get_current_limit_regmap/20190301-190141
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next
config: i386-randconfig-x013-201908 (attached as .config)
compiler: gcc-8 (Debian 8.2.0-21) 8.2.0
reproduce:
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
>> drivers//regulator/lp87565-regulator.c:120:23: error: 'regulator_set_current_limit_regmap' undeclared here (not in a function); did you mean 'regulator_set_current_limit'?
.set_current_limit = regulator_set_current_limit_regmap,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
regulator_set_current_limit
>> drivers//regulator/lp87565-regulator.c:121:23: error: 'regulator_get_current_limit_regmap' undeclared here (not in a function); did you mean 'regulator_get_current_limit'?
.get_current_limit = regulator_get_current_limit_regmap,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
regulator_get_current_limit
>> drivers//regulator/lp87565-regulator.c:37:5: error: 'struct regulator_desc' has no member named 'curr_table'; did you mean 'volt_table'?
.curr_table = lp87565_buck_uA, \
^~~~~~~~~~
drivers//regulator/lp87565-regulator.c:125:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK0", LP87565_BUCK_0, "buck0", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:38:5: error: 'struct regulator_desc' has no member named 'n_current_limits'
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^~~~~~~~~~~~~~~~
drivers//regulator/lp87565-regulator.c:125:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK0", LP87565_BUCK_0, "buck0", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:37:5: error: 'struct regulator_desc' has no member named 'curr_table'; did you mean 'volt_table'?
.curr_table = lp87565_buck_uA, \
^~~~~~~~~~
drivers//regulator/lp87565-regulator.c:130:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK1", LP87565_BUCK_1, "buck1", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:38:5: error: 'struct regulator_desc' has no member named 'n_current_limits'
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^~~~~~~~~~~~~~~~
drivers//regulator/lp87565-regulator.c:130:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK1", LP87565_BUCK_1, "buck1", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:37:5: error: 'struct regulator_desc' has no member named 'curr_table'; did you mean 'volt_table'?
.curr_table = lp87565_buck_uA, \
^~~~~~~~~~
drivers//regulator/lp87565-regulator.c:135:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK2", LP87565_BUCK_2, "buck2", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:38:5: error: 'struct regulator_desc' has no member named 'n_current_limits'
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^~~~~~~~~~~~~~~~
drivers//regulator/lp87565-regulator.c:135:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK2", LP87565_BUCK_2, "buck2", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:37:5: error: 'struct regulator_desc' has no member named 'curr_table'; did you mean 'volt_table'?
.curr_table = lp87565_buck_uA, \
^~~~~~~~~~
drivers//regulator/lp87565-regulator.c:140:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK3", LP87565_BUCK_3, "buck3", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:38:5: error: 'struct regulator_desc' has no member named 'n_current_limits'
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^~~~~~~~~~~~~~~~
drivers//regulator/lp87565-regulator.c:140:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK3", LP87565_BUCK_3, "buck3", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:37:5: error: 'struct regulator_desc' has no member named 'curr_table'; did you mean 'volt_table'?
.curr_table = lp87565_buck_uA, \
^~~~~~~~~~
drivers//regulator/lp87565-regulator.c:145:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK10", LP87565_BUCK_10, "buck10", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:38:5: error: 'struct regulator_desc' has no member named 'n_current_limits'
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^~~~~~~~~~~~~~~~
drivers//regulator/lp87565-regulator.c:145:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK10", LP87565_BUCK_10, "buck10", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:37:5: error: 'struct regulator_desc' has no member named 'curr_table'; did you mean 'volt_table'?
.curr_table = lp87565_buck_uA, \
^~~~~~~~~~
drivers//regulator/lp87565-regulator.c:151:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK23", LP87565_BUCK_23, "buck23", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers//regulator/lp87565-regulator.c:38:5: error: 'struct regulator_desc' has no member named 'n_current_limits'
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^~~~~~~~~~~~~~~~
drivers//regulator/lp87565-regulator.c:151:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK23", LP87565_BUCK_23, "buck23", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
vim +120 drivers//regulator/lp87565-regulator.c
16
17 #define LP87565_REGULATOR(_name, _id, _of, _ops, _n, _vr, _vm, _er, _em, \
18 _delay, _lr, _cr) \
19 [_id] = { \
20 .desc = { \
21 .name = _name, \
22 .supply_name = _of "-in", \
23 .id = _id, \
24 .of_match = of_match_ptr(_of), \
25 .regulators_node = of_match_ptr("regulators"),\
26 .ops = &_ops, \
27 .n_voltages = _n, \
28 .type = REGULATOR_VOLTAGE, \
29 .owner = THIS_MODULE, \
30 .vsel_reg = _vr, \
31 .vsel_mask = _vm, \
32 .enable_reg = _er, \
33 .enable_mask = _em, \
34 .ramp_delay = _delay, \
35 .linear_ranges = _lr, \
36 .n_linear_ranges = ARRAY_SIZE(_lr), \
> 37 .curr_table = lp87565_buck_uA, \
> 38 .n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
39 .csel_reg = (_cr), \
40 .csel_mask = LP87565_BUCK_CTRL_2_ILIM, \
41 }, \
42 .ctrl2_reg = _cr, \
43 }
44
45 struct lp87565_regulator {
46 struct regulator_desc desc;
47 unsigned int ctrl2_reg;
48 };
49
50 static const struct lp87565_regulator regulators[];
51
52 static const struct regulator_linear_range buck0_1_2_3_ranges[] = {
53 REGULATOR_LINEAR_RANGE(600000, 0xA, 0x17, 10000),
54 REGULATOR_LINEAR_RANGE(735000, 0x18, 0x9d, 5000),
55 REGULATOR_LINEAR_RANGE(1420000, 0x9e, 0xff, 20000),
56 };
57
58 static const unsigned int lp87565_buck_ramp_delay[] = {
59 30000, 15000, 10000, 7500, 3800, 1900, 940, 470
60 };
61
62 /* LP87565 BUCK current limit */
63 static const unsigned int lp87565_buck_uA[] = {
64 1500000, 2000000, 2500000, 3000000, 3500000, 4000000, 4500000, 5000000,
65 };
66
67 static int lp87565_buck_set_ramp_delay(struct regulator_dev *rdev,
68 int ramp_delay)
69 {
70 int id = rdev_get_id(rdev);
71 struct lp87565 *lp87565 = rdev_get_drvdata(rdev);
72 unsigned int reg;
73 int ret;
74
75 if (ramp_delay <= 470)
76 reg = 7;
77 else if (ramp_delay <= 940)
78 reg = 6;
79 else if (ramp_delay <= 1900)
80 reg = 5;
81 else if (ramp_delay <= 3800)
82 reg = 4;
83 else if (ramp_delay <= 7500)
84 reg = 3;
85 else if (ramp_delay <= 10000)
86 reg = 2;
87 else if (ramp_delay <= 15000)
88 reg = 1;
89 else
90 reg = 0;
91
92 ret = regmap_update_bits(lp87565->regmap, regulators[id].ctrl2_reg,
93 LP87565_BUCK_CTRL_2_SLEW_RATE,
94 reg << __ffs(LP87565_BUCK_CTRL_2_SLEW_RATE));
95 if (ret) {
96 dev_err(lp87565->dev, "SLEW RATE write failed: %d\n", ret);
97 return ret;
98 }
99
100 rdev->constraints->ramp_delay = lp87565_buck_ramp_delay[reg];
101
102 /* Conservatively give a 15% margin */
103 rdev->constraints->ramp_delay =
104 rdev->constraints->ramp_delay * 85 / 100;
105
106 return 0;
107 }
108
109 /* Operations permitted on BUCKs */
110 static const struct regulator_ops lp87565_buck_ops = {
111 .is_enabled = regulator_is_enabled_regmap,
112 .enable = regulator_enable_regmap,
113 .disable = regulator_disable_regmap,
114 .get_voltage_sel = regulator_get_voltage_sel_regmap,
115 .set_voltage_sel = regulator_set_voltage_sel_regmap,
116 .list_voltage = regulator_list_voltage_linear_range,
117 .map_voltage = regulator_map_voltage_linear_range,
118 .set_voltage_time_sel = regulator_set_voltage_time_sel,
119 .set_ramp_delay = lp87565_buck_set_ramp_delay,
> 120 .set_current_limit = regulator_set_current_limit_regmap,
> 121 .get_current_limit = regulator_get_current_limit_regmap,
122 };
123
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Hi Axel,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on regulator/for-next]
[also build test ERROR on next-20190228]
[cannot apply to v5.0-rc8]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Axel-Lin/regulator-lp87565-Convert-to-use-regulator_set-get_current_limit_regmap/20190301-190141
base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next
config: nds32-allyesconfig (attached as .config)
compiler: nds32le-linux-gcc (GCC) 6.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=6.4.0 make.cross ARCH=nds32
All error/warnings (new ones prefixed by >>):
>> drivers/regulator/lp87565-regulator.c:120:23: error: 'regulator_set_current_limit_regmap' undeclared here (not in a function)
.set_current_limit = regulator_set_current_limit_regmap,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:121:23: error: 'regulator_get_current_limit_regmap' undeclared here (not in a function)
.get_current_limit = regulator_get_current_limit_regmap,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:37:4: error: unknown field 'curr_table' specified in initializer
.curr_table = lp87565_buck_uA, \
^
>> drivers/regulator/lp87565-regulator.c:125:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK0", LP87565_BUCK_0, "buck0", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:38:4: error: unknown field 'n_current_limits' specified in initializer
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^
>> drivers/regulator/lp87565-regulator.c:125:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK0", LP87565_BUCK_0, "buck0", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:37:4: error: unknown field 'curr_table' specified in initializer
.curr_table = lp87565_buck_uA, \
^
drivers/regulator/lp87565-regulator.c:130:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK1", LP87565_BUCK_1, "buck1", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:38:4: error: unknown field 'n_current_limits' specified in initializer
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^
drivers/regulator/lp87565-regulator.c:130:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK1", LP87565_BUCK_1, "buck1", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:37:4: error: unknown field 'curr_table' specified in initializer
.curr_table = lp87565_buck_uA, \
^
drivers/regulator/lp87565-regulator.c:135:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK2", LP87565_BUCK_2, "buck2", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:38:4: error: unknown field 'n_current_limits' specified in initializer
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^
drivers/regulator/lp87565-regulator.c:135:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK2", LP87565_BUCK_2, "buck2", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:37:4: error: unknown field 'curr_table' specified in initializer
.curr_table = lp87565_buck_uA, \
^
drivers/regulator/lp87565-regulator.c:140:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK3", LP87565_BUCK_3, "buck3", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:38:4: error: unknown field 'n_current_limits' specified in initializer
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^
drivers/regulator/lp87565-regulator.c:140:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK3", LP87565_BUCK_3, "buck3", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:37:4: error: unknown field 'curr_table' specified in initializer
.curr_table = lp87565_buck_uA, \
^
drivers/regulator/lp87565-regulator.c:145:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK10", LP87565_BUCK_10, "buck10", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:38:4: error: unknown field 'n_current_limits' specified in initializer
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^
drivers/regulator/lp87565-regulator.c:145:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK10", LP87565_BUCK_10, "buck10", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:37:4: error: unknown field 'curr_table' specified in initializer
.curr_table = lp87565_buck_uA, \
^
drivers/regulator/lp87565-regulator.c:151:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK23", LP87565_BUCK_23, "buck23", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
>> drivers/regulator/lp87565-regulator.c:38:4: error: unknown field 'n_current_limits' specified in initializer
.n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
^
drivers/regulator/lp87565-regulator.c:151:2: note: in expansion of macro 'LP87565_REGULATOR'
LP87565_REGULATOR("BUCK23", LP87565_BUCK_23, "buck23", lp87565_buck_ops,
^~~~~~~~~~~~~~~~~
vim +/regulator_set_current_limit_regmap +120 drivers/regulator/lp87565-regulator.c
16
17 #define LP87565_REGULATOR(_name, _id, _of, _ops, _n, _vr, _vm, _er, _em, \
18 _delay, _lr, _cr) \
19 [_id] = { \
20 .desc = { \
21 .name = _name, \
22 .supply_name = _of "-in", \
23 .id = _id, \
24 .of_match = of_match_ptr(_of), \
25 .regulators_node = of_match_ptr("regulators"),\
26 .ops = &_ops, \
27 .n_voltages = _n, \
28 .type = REGULATOR_VOLTAGE, \
29 .owner = THIS_MODULE, \
30 .vsel_reg = _vr, \
31 .vsel_mask = _vm, \
32 .enable_reg = _er, \
33 .enable_mask = _em, \
34 .ramp_delay = _delay, \
35 .linear_ranges = _lr, \
36 .n_linear_ranges = ARRAY_SIZE(_lr), \
> 37 .curr_table = lp87565_buck_uA, \
> 38 .n_current_limits = ARRAY_SIZE(lp87565_buck_uA),\
39 .csel_reg = (_cr), \
40 .csel_mask = LP87565_BUCK_CTRL_2_ILIM, \
41 }, \
42 .ctrl2_reg = _cr, \
43 }
44
45 struct lp87565_regulator {
46 struct regulator_desc desc;
47 unsigned int ctrl2_reg;
48 };
49
50 static const struct lp87565_regulator regulators[];
51
52 static const struct regulator_linear_range buck0_1_2_3_ranges[] = {
53 REGULATOR_LINEAR_RANGE(600000, 0xA, 0x17, 10000),
54 REGULATOR_LINEAR_RANGE(735000, 0x18, 0x9d, 5000),
55 REGULATOR_LINEAR_RANGE(1420000, 0x9e, 0xff, 20000),
56 };
57
58 static const unsigned int lp87565_buck_ramp_delay[] = {
59 30000, 15000, 10000, 7500, 3800, 1900, 940, 470
60 };
61
62 /* LP87565 BUCK current limit */
63 static const unsigned int lp87565_buck_uA[] = {
64 1500000, 2000000, 2500000, 3000000, 3500000, 4000000, 4500000, 5000000,
65 };
66
67 static int lp87565_buck_set_ramp_delay(struct regulator_dev *rdev,
68 int ramp_delay)
69 {
70 int id = rdev_get_id(rdev);
71 struct lp87565 *lp87565 = rdev_get_drvdata(rdev);
72 unsigned int reg;
73 int ret;
74
75 if (ramp_delay <= 470)
76 reg = 7;
77 else if (ramp_delay <= 940)
78 reg = 6;
79 else if (ramp_delay <= 1900)
80 reg = 5;
81 else if (ramp_delay <= 3800)
82 reg = 4;
83 else if (ramp_delay <= 7500)
84 reg = 3;
85 else if (ramp_delay <= 10000)
86 reg = 2;
87 else if (ramp_delay <= 15000)
88 reg = 1;
89 else
90 reg = 0;
91
92 ret = regmap_update_bits(lp87565->regmap, regulators[id].ctrl2_reg,
93 LP87565_BUCK_CTRL_2_SLEW_RATE,
94 reg << __ffs(LP87565_BUCK_CTRL_2_SLEW_RATE));
95 if (ret) {
96 dev_err(lp87565->dev, "SLEW RATE write failed: %d\n", ret);
97 return ret;
98 }
99
100 rdev->constraints->ramp_delay = lp87565_buck_ramp_delay[reg];
101
102 /* Conservatively give a 15% margin */
103 rdev->constraints->ramp_delay =
104 rdev->constraints->ramp_delay * 85 / 100;
105
106 return 0;
107 }
108
109 /* Operations permitted on BUCKs */
110 static const struct regulator_ops lp87565_buck_ops = {
111 .is_enabled = regulator_is_enabled_regmap,
112 .enable = regulator_enable_regmap,
113 .disable = regulator_disable_regmap,
114 .get_voltage_sel = regulator_get_voltage_sel_regmap,
115 .set_voltage_sel = regulator_set_voltage_sel_regmap,
116 .list_voltage = regulator_list_voltage_linear_range,
117 .map_voltage = regulator_map_voltage_linear_range,
118 .set_voltage_time_sel = regulator_set_voltage_time_sel,
119 .set_ramp_delay = lp87565_buck_set_ramp_delay,
> 120 .set_current_limit = regulator_set_current_limit_regmap,
> 121 .get_current_limit = regulator_get_current_limit_regmap,
122 };
123
124 static const struct lp87565_regulator regulators[] = {
> 125 LP87565_REGULATOR("BUCK0", LP87565_BUCK_0, "buck0", lp87565_buck_ops,
126 256, LP87565_REG_BUCK0_VOUT, LP87565_BUCK_VSET,
127 LP87565_REG_BUCK0_CTRL_1,
128 LP87565_BUCK_CTRL_1_EN, 3230,
129 buck0_1_2_3_ranges, LP87565_REG_BUCK0_CTRL_2),
130 LP87565_REGULATOR("BUCK1", LP87565_BUCK_1, "buck1", lp87565_buck_ops,
131 256, LP87565_REG_BUCK1_VOUT, LP87565_BUCK_VSET,
132 LP87565_REG_BUCK1_CTRL_1,
133 LP87565_BUCK_CTRL_1_EN, 3230,
134 buck0_1_2_3_ranges, LP87565_REG_BUCK1_CTRL_2),
135 LP87565_REGULATOR("BUCK2", LP87565_BUCK_2, "buck2", lp87565_buck_ops,
136 256, LP87565_REG_BUCK2_VOUT, LP87565_BUCK_VSET,
137 LP87565_REG_BUCK2_CTRL_1,
138 LP87565_BUCK_CTRL_1_EN, 3230,
139 buck0_1_2_3_ranges, LP87565_REG_BUCK2_CTRL_2),
140 LP87565_REGULATOR("BUCK3", LP87565_BUCK_3, "buck3", lp87565_buck_ops,
141 256, LP87565_REG_BUCK3_VOUT, LP87565_BUCK_VSET,
142 LP87565_REG_BUCK3_CTRL_1,
143 LP87565_BUCK_CTRL_1_EN, 3230,
144 buck0_1_2_3_ranges, LP87565_REG_BUCK3_CTRL_2),
145 LP87565_REGULATOR("BUCK10", LP87565_BUCK_10, "buck10", lp87565_buck_ops,
146 256, LP87565_REG_BUCK0_VOUT, LP87565_BUCK_VSET,
147 LP87565_REG_BUCK0_CTRL_1,
148 LP87565_BUCK_CTRL_1_EN |
149 LP87565_BUCK_CTRL_1_FPWM_MP_0_2, 3230,
150 buck0_1_2_3_ranges, LP87565_REG_BUCK0_CTRL_2),
151 LP87565_REGULATOR("BUCK23", LP87565_BUCK_23, "buck23", lp87565_buck_ops,
152 256, LP87565_REG_BUCK2_VOUT, LP87565_BUCK_VSET,
153 LP87565_REG_BUCK2_CTRL_1,
154 LP87565_BUCK_CTRL_1_EN, 3230,
155 buck0_1_2_3_ranges, LP87565_REG_BUCK2_CTRL_2),
156 };
157
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
kbuild test robot <[email protected]> 於 2019年3月1日 週五 下午7:32寫道:
>
> Hi Axel,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on regulator/for-next]
> [also build test ERROR on next-20190228]
> [cannot apply to v5.0-rc8]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
This patch needs patch1 and patch2 of https://lkml.org/lkml/2019/2/28/482
I sent it today because I think Keerthy can review and test it together
with my another fix for lp87565.
I didn't realize kbuild will pick up the patch automatically.
I should wait until the required patches get merged then send this
patch. Sorry for the mess.
Regards,
Axel
> Subject: Re: [kbuild-all] [PATCH] regulator: lp87565: Convert to use
> regulator_set/get_current_limit_regmap
>
> kbuild test robot <[email protected]> 於 2019年3月1日 週五 下午7:32寫道:
> >
> > Hi Axel,
> >
> > Thank you for the patch! Yet something to improve:
> >
> > [auto build test ERROR on regulator/for-next]
> > [also build test ERROR on next-20190228]
> > [cannot apply to v5.0-rc8]
> > [if your patch is applied to the wrong git tree, please drop us a note to help
> improve the system]
>
> This patch needs patch1 and patch2 of https://lkml.org/lkml/2019/2/28/482
thanks for your kind info.
>
> I sent it today because I think Keerthy can review and test it together
> with my another fix for lp87565.
> I didn't realize kbuild will pick up the patch automatically.
> I should wait until the required patches get merged then send this
> patch. Sorry for the mess.
>
> Regards,
> Axel
> _______________________________________________
> kbuild-all mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/kbuild-all