CC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Krzysztof Kozlowski <[email protected]>
Hi Krzysztof, I love your patch! Perhaps something to improve: [auto build test WARNING on gpio/for-next] [also build test WARNING on input/next v5.9-rc2 next-20200826] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch] url: https://github.com/0day-ci/linux/commits/Krzysztof-Kozlowski/gpio-Add-devm_fwnode_gpiod_get_optional-helpers/20200827-041021 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next :::::: branch date: 7 hours ago :::::: commit date: 7 hours ago config: x86_64-randconfig-m001-20200826 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> New smatch warnings: drivers/input/keyboard/gpio_keys.c:500 gpio_keys_setup_key() error: uninitialized symbol 'error'. Old smatch warnings: internal error: drivers/input/keyboard/gpio_keys.c:500 SQL error #2: near "and": syntax error internal error: drivers/input/keyboard/gpio_keys.c:500 SQL: 'select * from return_states where and type = 1044 and parameter = -1 and key = '$' limit 1;' # https://github.com/0day-ci/linux/commit/e138d2340a72b4f117d0da36fe7cddb4bc073c58 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Krzysztof-Kozlowski/gpio-Add-devm_fwnode_gpiod_get_optional-helpers/20200827-041021 git checkout e138d2340a72b4f117d0da36fe7cddb4bc073c58 vim +/error +500 drivers/input/keyboard/gpio_keys.c 27245519f0de50 Alexander Shiyan 2014-04-28 476 5298cc4cc753bb Bill Pemberton 2012-11-23 477 static int gpio_keys_setup_key(struct platform_device *pdev, d9080921aa32c7 Dmitry Torokhov 2012-03-18 478 struct input_dev *input, 83e4947a569f4d Hans de Goede 2017-01-21 479 struct gpio_keys_drvdata *ddata, 700a38b27eefc5 Dmitry Torokhov 2016-10-19 480 const struct gpio_keys_button *button, 83e4947a569f4d Hans de Goede 2017-01-21 481 int idx, 700a38b27eefc5 Dmitry Torokhov 2016-10-19 482 struct fwnode_handle *child) bc8f1eaf68a8aa Ben Dooks 2009-11-10 483 { 92a47674f57b4a Alexander Stein 2011-04-11 484 const char *desc = button->desc ? button->desc : "gpio_keys"; 9e3af04f878731 Mika Westerberg 2010-02-04 485 struct device *dev = &pdev->dev; 83e4947a569f4d Hans de Goede 2017-01-21 486 struct gpio_button_data *bdata = &ddata->data[idx]; d8ee4a1c90529e Laxman Dewangan 2012-03-19 487 irq_handler_t isr; 9e3af04f878731 Mika Westerberg 2010-02-04 488 unsigned long irqflags; 27245519f0de50 Alexander Shiyan 2014-04-28 489 int irq; 27245519f0de50 Alexander Shiyan 2014-04-28 490 int error; bc8f1eaf68a8aa Ben Dooks 2009-11-10 491 d9080921aa32c7 Dmitry Torokhov 2012-03-18 492 bdata->input = input; d9080921aa32c7 Dmitry Torokhov 2012-03-18 493 bdata->button = button; d8ee4a1c90529e Laxman Dewangan 2012-03-19 494 spin_lock_init(&bdata->lock); d8ee4a1c90529e Laxman Dewangan 2012-03-19 495 700a38b27eefc5 Dmitry Torokhov 2016-10-19 496 if (child) { e138d2340a72b4 Krzysztof Kozlowski 2020-08-26 497 bdata->gpiod = devm_fwnode_gpiod_get_optional(dev, child, NULL, e138d2340a72b4 Krzysztof Kozlowski 2020-08-26 498 GPIOD_IN, desc); e138d2340a72b4 Krzysztof Kozlowski 2020-08-26 499 if (IS_ERR(bdata->gpiod)) e138d2340a72b4 Krzysztof Kozlowski 2020-08-26 @500 return dev_err_probe(dev, error, "failed to get gpio\n"); 700a38b27eefc5 Dmitry Torokhov 2016-10-19 501 } else if (gpio_is_valid(button->gpio)) { 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 502 /* 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 503 * Legacy GPIO number, so request the GPIO here and 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 504 * convert it to descriptor. 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 505 */ 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 506 unsigned flags = GPIOF_IN; 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 507 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 508 if (button->active_low) 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 509 flags |= GPIOF_ACTIVE_LOW; bc8f1eaf68a8aa Ben Dooks 2009-11-10 510 b4e66e7d1948e0 Guenter Roeck 2017-01-21 511 error = devm_gpio_request_one(dev, button->gpio, flags, desc); bc8f1eaf68a8aa Ben Dooks 2009-11-10 512 if (error < 0) { d8ee4a1c90529e Laxman Dewangan 2012-03-19 513 dev_err(dev, "Failed to request GPIO %d, error %d\n", bc8f1eaf68a8aa Ben Dooks 2009-11-10 514 button->gpio, error); d8ee4a1c90529e Laxman Dewangan 2012-03-19 515 return error; bc8f1eaf68a8aa Ben Dooks 2009-11-10 516 } bc8f1eaf68a8aa Ben Dooks 2009-11-10 517 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 518 bdata->gpiod = gpio_to_desc(button->gpio); 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 519 if (!bdata->gpiod) 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 520 return -EINVAL; 700a38b27eefc5 Dmitry Torokhov 2016-10-19 521 } 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 522 700a38b27eefc5 Dmitry Torokhov 2016-10-19 523 if (bdata->gpiod) { 83fc580dcc2f0f Jeffy Chen 2018-03-08 524 bool active_low = gpiod_is_active_low(bdata->gpiod); 83fc580dcc2f0f Jeffy Chen 2018-03-08 525 28ed684fa3c0a7 Grazvydas Ignotas 2010-06-28 526 if (button->debounce_interval) { 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 527 error = gpiod_set_debounce(bdata->gpiod, 28ed684fa3c0a7 Grazvydas Ignotas 2010-06-28 528 button->debounce_interval * 1000); 28ed684fa3c0a7 Grazvydas Ignotas 2010-06-28 529 /* use timer if gpiolib doesn't provide debounce */ 28ed684fa3c0a7 Grazvydas Ignotas 2010-06-28 530 if (error < 0) 8ed92556761e1f Dmitry Torokhov 2014-11-14 531 bdata->software_debounce = d8ee4a1c90529e Laxman Dewangan 2012-03-19 532 button->debounce_interval; 28ed684fa3c0a7 Grazvydas Ignotas 2010-06-28 533 } 28ed684fa3c0a7 Grazvydas Ignotas 2010-06-28 534 97d86e07b71643 Dmitry Torokhov 2014-11-14 535 if (button->irq) { 97d86e07b71643 Dmitry Torokhov 2014-11-14 536 bdata->irq = button->irq; 97d86e07b71643 Dmitry Torokhov 2014-11-14 537 } else { 5feeca3c1e39c0 Geert Uytterhoeven 2016-10-19 538 irq = gpiod_to_irq(bdata->gpiod); bc8f1eaf68a8aa Ben Dooks 2009-11-10 539 if (irq < 0) { bc8f1eaf68a8aa Ben Dooks 2009-11-10 540 error = irq; d8ee4a1c90529e Laxman Dewangan 2012-03-19 541 dev_err(dev, d8ee4a1c90529e Laxman Dewangan 2012-03-19 542 "Unable to get irq number for GPIO %d, error %d\n", bc8f1eaf68a8aa Ben Dooks 2009-11-10 543 button->gpio, error); 27245519f0de50 Alexander Shiyan 2014-04-28 544 return error; bc8f1eaf68a8aa Ben Dooks 2009-11-10 545 } d8ee4a1c90529e Laxman Dewangan 2012-03-19 546 bdata->irq = irq; 97d86e07b71643 Dmitry Torokhov 2014-11-14 547 } d8ee4a1c90529e Laxman Dewangan 2012-03-19 548 8ed92556761e1f Dmitry Torokhov 2014-11-14 549 INIT_DELAYED_WORK(&bdata->work, gpio_keys_gpio_work_func); bc8f1eaf68a8aa Ben Dooks 2009-11-10 550 d8ee4a1c90529e Laxman Dewangan 2012-03-19 551 isr = gpio_keys_gpio_isr; 9e3af04f878731 Mika Westerberg 2010-02-04 552 irqflags = IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING; d8ee4a1c90529e Laxman Dewangan 2012-03-19 553 83fc580dcc2f0f Jeffy Chen 2018-03-08 554 switch (button->wakeup_event_action) { 83fc580dcc2f0f Jeffy Chen 2018-03-08 555 case EV_ACT_ASSERTED: 83fc580dcc2f0f Jeffy Chen 2018-03-08 556 bdata->wakeup_trigger_type = active_low ? 83fc580dcc2f0f Jeffy Chen 2018-03-08 557 IRQ_TYPE_EDGE_FALLING : IRQ_TYPE_EDGE_RISING; 83fc580dcc2f0f Jeffy Chen 2018-03-08 558 break; 83fc580dcc2f0f Jeffy Chen 2018-03-08 559 case EV_ACT_DEASSERTED: 83fc580dcc2f0f Jeffy Chen 2018-03-08 560 bdata->wakeup_trigger_type = active_low ? 83fc580dcc2f0f Jeffy Chen 2018-03-08 561 IRQ_TYPE_EDGE_RISING : IRQ_TYPE_EDGE_FALLING; 83fc580dcc2f0f Jeffy Chen 2018-03-08 562 break; 83fc580dcc2f0f Jeffy Chen 2018-03-08 563 case EV_ACT_ANY: 83fc580dcc2f0f Jeffy Chen 2018-03-08 564 /* fall through */ 83fc580dcc2f0f Jeffy Chen 2018-03-08 565 default: 83fc580dcc2f0f Jeffy Chen 2018-03-08 566 /* 83fc580dcc2f0f Jeffy Chen 2018-03-08 567 * For other cases, we are OK letting suspend/resume 83fc580dcc2f0f Jeffy Chen 2018-03-08 568 * not reconfigure the trigger type. 83fc580dcc2f0f Jeffy Chen 2018-03-08 569 */ 83fc580dcc2f0f Jeffy Chen 2018-03-08 570 break; 83fc580dcc2f0f Jeffy Chen 2018-03-08 571 } d8ee4a1c90529e Laxman Dewangan 2012-03-19 572 } else { d8ee4a1c90529e Laxman Dewangan 2012-03-19 573 if (!button->irq) { 700a38b27eefc5 Dmitry Torokhov 2016-10-19 574 dev_err(dev, "Found button without gpio or irq\n"); d8ee4a1c90529e Laxman Dewangan 2012-03-19 575 return -EINVAL; d8ee4a1c90529e Laxman Dewangan 2012-03-19 576 } 700a38b27eefc5 Dmitry Torokhov 2016-10-19 577 d8ee4a1c90529e Laxman Dewangan 2012-03-19 578 bdata->irq = button->irq; d8ee4a1c90529e Laxman Dewangan 2012-03-19 579 d8ee4a1c90529e Laxman Dewangan 2012-03-19 580 if (button->type && button->type != EV_KEY) { d8ee4a1c90529e Laxman Dewangan 2012-03-19 581 dev_err(dev, "Only EV_KEY allowed for IRQ buttons.\n"); d8ee4a1c90529e Laxman Dewangan 2012-03-19 582 return -EINVAL; d8ee4a1c90529e Laxman Dewangan 2012-03-19 583 } d8ee4a1c90529e Laxman Dewangan 2012-03-19 584 8ed92556761e1f Dmitry Torokhov 2014-11-14 585 bdata->release_delay = button->debounce_interval; 82565a120544b2 stephen lu 2017-10-23 586 timer_setup(&bdata->release_timer, gpio_keys_irq_timer, 0); d8ee4a1c90529e Laxman Dewangan 2012-03-19 587 d8ee4a1c90529e Laxman Dewangan 2012-03-19 588 isr = gpio_keys_irq_isr; d8ee4a1c90529e Laxman Dewangan 2012-03-19 589 irqflags = 0; 83fc580dcc2f0f Jeffy Chen 2018-03-08 590 83fc580dcc2f0f Jeffy Chen 2018-03-08 591 /* 83fc580dcc2f0f Jeffy Chen 2018-03-08 592 * For IRQ buttons, there is no interrupt for release. 83fc580dcc2f0f Jeffy Chen 2018-03-08 593 * So we don't need to reconfigure the trigger type for wakeup. 83fc580dcc2f0f Jeffy Chen 2018-03-08 594 */ d8ee4a1c90529e Laxman Dewangan 2012-03-19 595 } d8ee4a1c90529e Laxman Dewangan 2012-03-19 596 83e4947a569f4d Hans de Goede 2017-01-21 597 bdata->code = &ddata->keymap[idx]; 83e4947a569f4d Hans de Goede 2017-01-21 598 *bdata->code = button->code; 83e4947a569f4d Hans de Goede 2017-01-21 599 input_set_capability(input, button->type ?: EV_KEY, *bdata->code); d8ee4a1c90529e Laxman Dewangan 2012-03-19 600 27245519f0de50 Alexander Shiyan 2014-04-28 601 /* 8ed92556761e1f Dmitry Torokhov 2014-11-14 602 * Install custom action to cancel release timer and 27245519f0de50 Alexander Shiyan 2014-04-28 603 * workqueue item. 27245519f0de50 Alexander Shiyan 2014-04-28 604 */ b4e66e7d1948e0 Guenter Roeck 2017-01-21 605 error = devm_add_action(dev, gpio_keys_quiesce_key, bdata); 27245519f0de50 Alexander Shiyan 2014-04-28 606 if (error) { b4e66e7d1948e0 Guenter Roeck 2017-01-21 607 dev_err(dev, "failed to register quiesce action, error: %d\n", 27245519f0de50 Alexander Shiyan 2014-04-28 608 error); 27245519f0de50 Alexander Shiyan 2014-04-28 609 return error; 27245519f0de50 Alexander Shiyan 2014-04-28 610 } 27245519f0de50 Alexander Shiyan 2014-04-28 611 9e3af04f878731 Mika Westerberg 2010-02-04 612 /* 9e3af04f878731 Mika Westerberg 2010-02-04 613 * If platform has specified that the button can be disabled, 9e3af04f878731 Mika Westerberg 2010-02-04 614 * we don't want it to share the interrupt line. 9e3af04f878731 Mika Westerberg 2010-02-04 615 */ 9e3af04f878731 Mika Westerberg 2010-02-04 616 if (!button->can_disable) 9e3af04f878731 Mika Westerberg 2010-02-04 617 irqflags |= IRQF_SHARED; 9e3af04f878731 Mika Westerberg 2010-02-04 618 b4e66e7d1948e0 Guenter Roeck 2017-01-21 619 error = devm_request_any_context_irq(dev, bdata->irq, isr, irqflags, b4e66e7d1948e0 Guenter Roeck 2017-01-21 620 desc, bdata); 94a8cab8caaa56 Philippe Langlais 2011-01-20 621 if (error < 0) { bc8f1eaf68a8aa Ben Dooks 2009-11-10 622 dev_err(dev, "Unable to claim irq %d; error %d\n", d8ee4a1c90529e Laxman Dewangan 2012-03-19 623 bdata->irq, error); 27245519f0de50 Alexander Shiyan 2014-04-28 624 return error; bc8f1eaf68a8aa Ben Dooks 2009-11-10 625 } bc8f1eaf68a8aa Ben Dooks 2009-11-10 626 bc8f1eaf68a8aa Ben Dooks 2009-11-10 627 return 0; bc8f1eaf68a8aa Ben Dooks 2009-11-10 628 } bc8f1eaf68a8aa Ben Dooks 2009-11-10 629 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
