From: kbuild test robot <lkp@intel.com>
To: Axel Lin <axel.lin@ingics.com>
Cc: kbuild-all@01.org, Mark Brown <broonie@kernel.org>,
Keerthy <j-keerthy@ti.com>, Liam Girdwood <lgirdwood@gmail.com>,
linux-kernel@vger.kernel.org, Axel Lin <axel.lin@ingics.com>
Subject: Re: [PATCH] regulator: lp87565: Convert to use regulator_set/get_current_limit_regmap
Date: Fri, 1 Mar 2019 20:53:46 +0800 [thread overview]
Message-ID: <201903012022.lJ0mK4Vz%fengguang.wu@intel.com> (raw)
In-Reply-To: <20190301062432.2322-1-axel.lin@ingics.com>
[-- Attachment #1: Type: text/plain, Size: 11621 bytes --]
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
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 49915 bytes --]
prev parent reply other threads:[~2019-03-01 12:54 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-01 6:24 [PATCH] regulator: lp87565: Convert to use regulator_set/get_current_limit_regmap Axel Lin
2019-03-01 11:31 ` kbuild test robot
2019-03-01 14:34 ` Axel Lin
2019-03-01 15:31 ` [kbuild-all] " Li, Philip
2019-03-01 12:53 ` kbuild test robot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201903012022.lJ0mK4Vz%fengguang.wu@intel.com \
--to=lkp@intel.com \
--cc=axel.lin@ingics.com \
--cc=broonie@kernel.org \
--cc=j-keerthy@ti.com \
--cc=kbuild-all@01.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.