From: kbuild test robot <lkp@intel.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: kbuild-all@lists.01.org, linux-gpio@vger.kernel.org
Subject: [gpio:gpio-descriptors-backlight 1/1] drivers/video/backlight/pwm_bl.c:260:6: error: 'struct platform_pwm_backlight_data' has no member named 'enable_gpio'
Date: Tue, 3 Dec 2019 05:27:48 +0800 [thread overview]
Message-ID: <201912030550.lbdeWiOy%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 12870 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git gpio-descriptors-backlight
head: 67766de50b11fce3495298690d1c27078c51cd03
commit: 67766de50b11fce3495298690d1c27078c51cd03 [1/1] backlight: pwm_bl: Switch to full GPIO descriptor
config: i386-randconfig-d002-20191202 (attached as .config)
compiler: gcc-7 (Debian 7.5.0-1) 7.5.0
reproduce:
git checkout 67766de50b11fce3495298690d1c27078c51cd03
# save the attached .config to linux build tree
make ARCH=i386
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/video/backlight/pwm_bl.c: In function 'pwm_backlight_parse_dt':
>> drivers/video/backlight/pwm_bl.c:260:6: error: 'struct platform_pwm_backlight_data' has no member named 'enable_gpio'
data->enable_gpio = -EINVAL;
^~
vim +260 drivers/video/backlight/pwm_bl.c
88ba95bedb7958 Enric Balletbo i Serra 2018-04-09 233
3e3ed6cdc49d75 Thierry Reding 2011-12-16 234 static int pwm_backlight_parse_dt(struct device *dev,
3e3ed6cdc49d75 Thierry Reding 2011-12-16 235 struct platform_pwm_backlight_data *data)
3e3ed6cdc49d75 Thierry Reding 2011-12-16 236 {
3e3ed6cdc49d75 Thierry Reding 2011-12-16 237 struct device_node *node = dev->of_node;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 238 unsigned int num_levels = 0;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 239 unsigned int levels_count;
633786736ed53a Daniel Thompson 2018-07-25 240 unsigned int num_steps = 0;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 241 struct property *prop;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 242 unsigned int *table;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 243 int length;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 244 u32 value;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 245 int ret;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 246
3e3ed6cdc49d75 Thierry Reding 2011-12-16 247 if (!node)
3e3ed6cdc49d75 Thierry Reding 2011-12-16 248 return -ENODEV;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 249
3e3ed6cdc49d75 Thierry Reding 2011-12-16 250 memset(data, 0, sizeof(*data));
3e3ed6cdc49d75 Thierry Reding 2011-12-16 251
61170ee9386888 Heiko Stuebner 2018-11-12 252 /*
61170ee9386888 Heiko Stuebner 2018-11-12 253 * These values are optional and set as 0 by default, the out values
61170ee9386888 Heiko Stuebner 2018-11-12 254 * are modified only if a valid u32 value can be decoded.
61170ee9386888 Heiko Stuebner 2018-11-12 255 */
61170ee9386888 Heiko Stuebner 2018-11-12 256 of_property_read_u32(node, "post-pwm-on-delay-ms",
61170ee9386888 Heiko Stuebner 2018-11-12 257 &data->post_pwm_on_delay);
61170ee9386888 Heiko Stuebner 2018-11-12 258 of_property_read_u32(node, "pwm-off-delay-ms", &data->pwm_off_delay);
61170ee9386888 Heiko Stuebner 2018-11-12 259
61170ee9386888 Heiko Stuebner 2018-11-12 @260 data->enable_gpio = -EINVAL;
61170ee9386888 Heiko Stuebner 2018-11-12 261
88ba95bedb7958 Enric Balletbo i Serra 2018-04-09 262 /*
88ba95bedb7958 Enric Balletbo i Serra 2018-04-09 263 * Determine the number of brightness levels, if this property is not
88ba95bedb7958 Enric Balletbo i Serra 2018-04-09 264 * set a default table of brightness levels will be used.
88ba95bedb7958 Enric Balletbo i Serra 2018-04-09 265 */
3e3ed6cdc49d75 Thierry Reding 2011-12-16 266 prop = of_find_property(node, "brightness-levels", &length);
3e3ed6cdc49d75 Thierry Reding 2011-12-16 267 if (!prop)
88ba95bedb7958 Enric Balletbo i Serra 2018-04-09 268 return 0;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 269
3e3ed6cdc49d75 Thierry Reding 2011-12-16 270 data->max_brightness = length / sizeof(u32);
3e3ed6cdc49d75 Thierry Reding 2011-12-16 271
3e3ed6cdc49d75 Thierry Reding 2011-12-16 272 /* read brightness levels from DT property */
3e3ed6cdc49d75 Thierry Reding 2011-12-16 273 if (data->max_brightness > 0) {
3e3ed6cdc49d75 Thierry Reding 2011-12-16 274 size_t size = sizeof(*data->levels) * data->max_brightness;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 275 unsigned int i, j, n = 0;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 276
3e3ed6cdc49d75 Thierry Reding 2011-12-16 277 data->levels = devm_kzalloc(dev, size, GFP_KERNEL);
3e3ed6cdc49d75 Thierry Reding 2011-12-16 278 if (!data->levels)
3e3ed6cdc49d75 Thierry Reding 2011-12-16 279 return -ENOMEM;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 280
3e3ed6cdc49d75 Thierry Reding 2011-12-16 281 ret = of_property_read_u32_array(node, "brightness-levels",
3e3ed6cdc49d75 Thierry Reding 2011-12-16 282 data->levels,
3e3ed6cdc49d75 Thierry Reding 2011-12-16 283 data->max_brightness);
3e3ed6cdc49d75 Thierry Reding 2011-12-16 284 if (ret < 0)
3e3ed6cdc49d75 Thierry Reding 2011-12-16 285 return ret;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 286
3e3ed6cdc49d75 Thierry Reding 2011-12-16 287 ret = of_property_read_u32(node, "default-brightness-level",
3e3ed6cdc49d75 Thierry Reding 2011-12-16 288 &value);
3e3ed6cdc49d75 Thierry Reding 2011-12-16 289 if (ret < 0)
3e3ed6cdc49d75 Thierry Reding 2011-12-16 290 return ret;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 291
3e3ed6cdc49d75 Thierry Reding 2011-12-16 292 data->dft_brightness = value;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 293
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 294 /*
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 295 * This property is optional, if is set enables linear
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 296 * interpolation between each of the values of brightness levels
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 297 * and creates a new pre-computed table.
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 298 */
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 299 of_property_read_u32(node, "num-interpolated-steps",
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 300 &num_steps);
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 301
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 302 /*
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 303 * Make sure that there is at least two entries in the
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 304 * brightness-levels table, otherwise we can't interpolate
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 305 * between two points.
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 306 */
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 307 if (num_steps) {
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 308 if (data->max_brightness < 2) {
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 309 dev_err(dev, "can't interpolate\n");
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 310 return -EINVAL;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 311 }
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 312
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 313 /*
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 314 * Recalculate the number of brightness levels, now
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 315 * taking in consideration the number of interpolated
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 316 * steps between two levels.
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 317 */
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 318 for (i = 0; i < data->max_brightness - 1; i++) {
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 319 if ((data->levels[i + 1] - data->levels[i]) /
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 320 num_steps)
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 321 num_levels += num_steps;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 322 else
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 323 num_levels++;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 324 }
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 325 num_levels++;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 326 dev_dbg(dev, "new number of brightness levels: %d\n",
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 327 num_levels);
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 328
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 329 /*
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 330 * Create a new table of brightness levels with all the
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 331 * interpolated steps.
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 332 */
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 333 size = sizeof(*table) * num_levels;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 334 table = devm_kzalloc(dev, size, GFP_KERNEL);
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 335 if (!table)
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 336 return -ENOMEM;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 337
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 338 /* Fill the interpolated table. */
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 339 levels_count = 0;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 340 for (i = 0; i < data->max_brightness - 1; i++) {
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 341 value = data->levels[i];
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 342 n = (data->levels[i + 1] - value) / num_steps;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 343 if (n > 0) {
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 344 for (j = 0; j < num_steps; j++) {
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 345 table[levels_count] = value;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 346 value += n;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 347 levels_count++;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 348 }
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 349 } else {
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 350 table[levels_count] = data->levels[i];
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 351 levels_count++;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 352 }
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 353 }
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 354 table[levels_count] = data->levels[i];
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 355
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 356 /*
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 357 * As we use interpolation lets remove current
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 358 * brightness levels table and replace for the
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 359 * new interpolated table.
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 360 */
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 361 devm_kfree(dev, data->levels);
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 362 data->levels = table;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 363
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 364 /*
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 365 * Reassign max_brightness value to the new total number
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 366 * of brightness levels.
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 367 */
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 368 data->max_brightness = num_levels;
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 369 }
573fe6d1c25c81 Enric Balletbo i Serra 2018-04-09 370
3e3ed6cdc49d75 Thierry Reding 2011-12-16 371 data->max_brightness--;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 372 }
3e3ed6cdc49d75 Thierry Reding 2011-12-16 373
3e3ed6cdc49d75 Thierry Reding 2011-12-16 374 return 0;
3e3ed6cdc49d75 Thierry Reding 2011-12-16 375 }
3e3ed6cdc49d75 Thierry Reding 2011-12-16 376
:::::: The code at line 260 was first introduced by commit
:::::: 61170ee9386888f1e6f7e9cc58e8d9a8c2a3c1dd backlight: pwm_bl: Fix devicetree parsing with auto-generated brightness tables
:::::: TO: Heiko Stuebner <heiko.stuebner@bq.com>
:::::: CC: Lee Jones <lee.jones@linaro.org>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 34552 bytes --]
reply other threads:[~2019-12-02 21:28 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=201912030550.lbdeWiOy%lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).