From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [thermal:next 43/50] drivers/thermal/qcom/tsens.c:455:13: warning: no previous prototype for 'tsens_irq_thread'
Date: Sat, 30 May 2020 21:11:53 +0800 [thread overview]
Message-ID: <202005302151.rgOFPDZ4%lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 6983 bytes --]
Hi Amit,
FYI, the error/warning still remains.
tree: thermal/next
head: 4d14235baa2b4aa64aed40805dd3db47dbc6f3b3
commit: a7ff82976122eb6d1fd286dc34f09b6ecd756b60 [43/50] drivers: thermal: tsens: Merge tsens-common.c into tsens.c
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout a7ff82976122eb6d1fd286dc34f09b6ecd756b60
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=xtensa
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp@intel.com>
All warnings (new ones prefixed by >>, old ones prefixed by <<):
drivers/thermal/qcom/tsens.c:385:13: warning: no previous prototype for 'tsens_critical_irq_thread' [-Wmissing-prototypes]
385 | irqreturn_t tsens_critical_irq_thread(int irq, void *data)
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/thermal/qcom/tsens.c:455:13: warning: no previous prototype for 'tsens_irq_thread' [-Wmissing-prototypes]
455 | irqreturn_t tsens_irq_thread(int irq, void *data)
| ^~~~~~~~~~~~~~~~
drivers/thermal/qcom/tsens.c:523:5: warning: no previous prototype for 'tsens_set_trips' [-Wmissing-prototypes]
523 | int tsens_set_trips(void *_sensor, int low, int high)
| ^~~~~~~~~~~~~~~
drivers/thermal/qcom/tsens.c:560:5: warning: no previous prototype for 'tsens_enable_irq' [-Wmissing-prototypes]
560 | int tsens_enable_irq(struct tsens_priv *priv)
| ^~~~~~~~~~~~~~~~
>> drivers/thermal/qcom/tsens.c:573:6: warning: no previous prototype for 'tsens_disable_irq' [-Wmissing-prototypes]
573 | void tsens_disable_irq(struct tsens_priv *priv)
| ^~~~~~~~~~~~~~~~~
vim +/tsens_irq_thread +455 drivers/thermal/qcom/tsens.c
439
440 /**
441 * tsens_irq_thread - Threaded interrupt handler for uplow interrupts
442 * @irq: irq number
443 * @data: tsens controller private data
444 *
445 * Check all sensors to find ones that violated their threshold limits. If the
446 * temperature is still outside the limits, call thermal_zone_device_update() to
447 * update the thresholds, else re-enable the interrupts.
448 *
449 * The level-triggered interrupt might deassert if the temperature returned to
450 * within the threshold limits by the time the handler got scheduled. We
451 * consider the irq to have been handled in that case.
452 *
453 * Return: IRQ_HANDLED
454 */
> 455 irqreturn_t tsens_irq_thread(int irq, void *data)
456 {
457 struct tsens_priv *priv = data;
458 struct tsens_irq_data d;
459 bool enable = true, disable = false;
460 unsigned long flags;
461 int temp, ret, i;
462
463 for (i = 0; i < priv->num_sensors; i++) {
464 bool trigger = false;
465 const struct tsens_sensor *s = &priv->sensor[i];
466 u32 hw_id = s->hw_id;
467
468 if (IS_ERR(s->tzd))
469 continue;
470 if (!tsens_threshold_violated(priv, hw_id, &d))
471 continue;
472 ret = get_temp_tsens_valid(s, &temp);
473 if (ret) {
474 dev_err(priv->dev, "[%u] %s: error reading sensor\n",
475 hw_id, __func__);
476 continue;
477 }
478
479 spin_lock_irqsave(&priv->ul_lock, flags);
480
481 tsens_read_irq_state(priv, hw_id, s, &d);
482
483 if (d.up_viol &&
484 !masked_irq(hw_id, d.up_irq_mask, tsens_version(priv))) {
485 tsens_set_interrupt(priv, hw_id, UPPER, disable);
486 if (d.up_thresh > temp) {
487 dev_dbg(priv->dev, "[%u] %s: re-arm upper\n",
488 hw_id, __func__);
489 tsens_set_interrupt(priv, hw_id, UPPER, enable);
490 } else {
491 trigger = true;
492 /* Keep irq masked */
493 }
494 } else if (d.low_viol &&
495 !masked_irq(hw_id, d.low_irq_mask, tsens_version(priv))) {
496 tsens_set_interrupt(priv, hw_id, LOWER, disable);
497 if (d.low_thresh < temp) {
498 dev_dbg(priv->dev, "[%u] %s: re-arm low\n",
499 hw_id, __func__);
500 tsens_set_interrupt(priv, hw_id, LOWER, enable);
501 } else {
502 trigger = true;
503 /* Keep irq masked */
504 }
505 }
506
507 spin_unlock_irqrestore(&priv->ul_lock, flags);
508
509 if (trigger) {
510 dev_dbg(priv->dev, "[%u] %s: TZ update trigger (%d mC)\n",
511 hw_id, __func__, temp);
512 thermal_zone_device_update(s->tzd,
513 THERMAL_EVENT_UNSPECIFIED);
514 } else {
515 dev_dbg(priv->dev, "[%u] %s: no violation: %d\n",
516 hw_id, __func__, temp);
517 }
518 }
519
520 return IRQ_HANDLED;
521 }
522
523 int tsens_set_trips(void *_sensor, int low, int high)
524 {
525 struct tsens_sensor *s = _sensor;
526 struct tsens_priv *priv = s->priv;
527 struct device *dev = priv->dev;
528 struct tsens_irq_data d;
529 unsigned long flags;
530 int high_val, low_val, cl_high, cl_low;
531 u32 hw_id = s->hw_id;
532
533 dev_dbg(dev, "[%u] %s: proposed thresholds: (%d:%d)\n",
534 hw_id, __func__, low, high);
535
536 cl_high = clamp_val(high, -40000, 120000);
537 cl_low = clamp_val(low, -40000, 120000);
538
539 high_val = tsens_mC_to_hw(s, cl_high);
540 low_val = tsens_mC_to_hw(s, cl_low);
541
542 spin_lock_irqsave(&priv->ul_lock, flags);
543
544 tsens_read_irq_state(priv, hw_id, s, &d);
545
546 /* Write the new thresholds and clear the status */
547 regmap_field_write(priv->rf[LOW_THRESH_0 + hw_id], low_val);
548 regmap_field_write(priv->rf[UP_THRESH_0 + hw_id], high_val);
549 tsens_set_interrupt(priv, hw_id, LOWER, true);
550 tsens_set_interrupt(priv, hw_id, UPPER, true);
551
552 spin_unlock_irqrestore(&priv->ul_lock, flags);
553
554 dev_dbg(dev, "[%u] %s: (%d:%d)->(%d:%d)\n",
555 hw_id, __func__, d.low_thresh, d.up_thresh, cl_low, cl_high);
556
557 return 0;
558 }
559
560 int tsens_enable_irq(struct tsens_priv *priv)
561 {
562 int ret;
563 int val = tsens_version(priv) > VER_1_X ? 7 : 1;
564
565 ret = regmap_field_write(priv->rf[INT_EN], val);
566 if (ret < 0)
567 dev_err(priv->dev, "%s: failed to enable interrupts\n",
568 __func__);
569
570 return ret;
571 }
572
> 573 void tsens_disable_irq(struct tsens_priv *priv)
574 {
575 regmap_field_write(priv->rf[INT_EN], 0);
576 }
577
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 62812 bytes --]
reply other threads:[~2020-05-30 13:11 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=202005302151.rgOFPDZ4%lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.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.