From: kernel test robot <lkp@intel.com>
To: Daniel Lezcano <daniel.lezcano@linexp.org>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: [thermal:thermal/linux-next 68/68] drivers/thermal/rcar_thermal.c:532:49: error: passing argument 4 of 'devm_thermal_of_zone_register' from incompatible pointer type
Date: Mon, 1 Aug 2022 13:35:14 +0800 [thread overview]
Message-ID: <202208011342.io34XfQd-lkp@intel.com> (raw)
tree: git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git thermal/linux-next
head: f0105ae57fe7c05fb82b7c0a6416a34051d29a34
commit: f0105ae57fe7c05fb82b7c0a6416a34051d29a34 [68/68] thermal/of: Remove old OF code
config: microblaze-randconfig-s033-20220731 (https://download.01.org/0day-ci/archive/20220801/202208011342.io34XfQd-lkp@intel.com/config)
compiler: microblaze-linux-gcc (GCC) 12.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git/commit/?id=f0105ae57fe7c05fb82b7c0a6416a34051d29a34
git remote add thermal git://git.kernel.org/pub/scm/linux/kernel/git/thermal/linux.git
git fetch --no-tags thermal thermal/linux-next
git checkout f0105ae57fe7c05fb82b7c0a6416a34051d29a34
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=microblaze SHELL=/bin/bash drivers/thermal/
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
In file included from drivers/thermal/rcar_thermal.c:20:
include/linux/thermal.h:319:73: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
319 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:326:78: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
326 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:335:20: error: redefinition of 'thermal_of_zone_unregister'
335 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:331:20: note: previous definition of 'thermal_of_zone_unregister' with type 'void(struct thermal_zone_device *)'
331 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:343:20: error: redefinition of 'devm_thermal_of_zone_unregister'
343 | static inline void devm_thermal_of_zone_unregister(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:339:20: note: previous definition of 'devm_thermal_of_zone_unregister' with type 'void(struct device *, struct thermal_zone_device *)'
339 | static inline void devm_thermal_of_zone_unregister(struct device *dev, struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/rcar_thermal.c: In function 'rcar_thermal_probe':
>> drivers/thermal/rcar_thermal.c:532:49: error: passing argument 4 of 'devm_thermal_of_zone_register' from incompatible pointer type [-Werror=incompatible-pointer-types]
532 | &rcar_thermal_zone_of_ops);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| |
| struct thermal_zone_device_ops *
include/linux/thermal.h:326:98: note: expected 'struct thermal_sensor_ops *' but argument is of type 'struct thermal_zone_device_ops *'
326 | void *data, struct thermal_sensor_ops *ops)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
--
In file included from drivers/thermal/rcar_gen3_thermal.c:18:
include/linux/thermal.h:319:73: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
319 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:326:78: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
326 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:335:20: error: redefinition of 'thermal_of_zone_unregister'
335 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:331:20: note: previous definition of 'thermal_of_zone_unregister' with type 'void(struct thermal_zone_device *)'
331 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:343:20: error: redefinition of 'devm_thermal_of_zone_unregister'
343 | static inline void devm_thermal_of_zone_unregister(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:339:20: note: previous definition of 'devm_thermal_of_zone_unregister' with type 'void(struct device *, struct thermal_zone_device *)'
339 | static inline void devm_thermal_of_zone_unregister(struct device *dev, struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/rcar_gen3_thermal.c: In function 'rcar_gen3_thermal_probe':
>> drivers/thermal/rcar_gen3_thermal.c:508:54: error: passing argument 4 of 'devm_thermal_of_zone_register' from incompatible pointer type [-Werror=incompatible-pointer-types]
508 | &rcar_gen3_tz_of_ops);
| ^~~~~~~~~~~~~~~~~~~~
| |
| struct thermal_zone_device_ops *
include/linux/thermal.h:326:98: note: expected 'struct thermal_sensor_ops *' but argument is of type 'struct thermal_zone_device_ops *'
326 | void *data, struct thermal_sensor_ops *ops)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
--
In file included from drivers/thermal/armada_thermal.c:16:
include/linux/thermal.h:319:73: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
319 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:326:78: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
326 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:335:20: error: redefinition of 'thermal_of_zone_unregister'
335 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:331:20: note: previous definition of 'thermal_of_zone_unregister' with type 'void(struct thermal_zone_device *)'
331 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:343:20: error: redefinition of 'devm_thermal_of_zone_unregister'
343 | static inline void devm_thermal_of_zone_unregister(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:339:20: note: previous definition of 'devm_thermal_of_zone_unregister' with type 'void(struct device *, struct thermal_zone_device *)'
339 | static inline void devm_thermal_of_zone_unregister(struct device *dev, struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/armada_thermal.c: In function 'armada_thermal_probe':
>> drivers/thermal/armada_thermal.c:933:52: error: passing argument 4 of 'devm_thermal_of_zone_register' from incompatible pointer type [-Werror=incompatible-pointer-types]
933 | &of_ops);
| ^~~~~~~
| |
| const struct thermal_zone_device_ops *
include/linux/thermal.h:326:98: note: expected 'struct thermal_sensor_ops *' but argument is of type 'const struct thermal_zone_device_ops *'
326 | void *data, struct thermal_sensor_ops *ops)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
--
In file included from drivers/thermal/max77620_thermal.c:19:
include/linux/thermal.h:319:73: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
319 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:326:78: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
326 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:335:20: error: redefinition of 'thermal_of_zone_unregister'
335 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:331:20: note: previous definition of 'thermal_of_zone_unregister' with type 'void(struct thermal_zone_device *)'
331 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:343:20: error: redefinition of 'devm_thermal_of_zone_unregister'
343 | static inline void devm_thermal_of_zone_unregister(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:339:20: note: previous definition of 'devm_thermal_of_zone_unregister' with type 'void(struct device *, struct thermal_zone_device *)'
339 | static inline void devm_thermal_of_zone_unregister(struct device *dev, struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/max77620_thermal.c: In function 'max77620_thermal_probe':
>> drivers/thermal/max77620_thermal.c:118:41: error: passing argument 4 of 'devm_thermal_of_zone_register' from incompatible pointer type [-Werror=incompatible-pointer-types]
118 | mtherm, &max77620_thermal_ops);
| ^~~~~~~~~~~~~~~~~~~~~
| |
| const struct thermal_zone_device_ops *
include/linux/thermal.h:326:98: note: expected 'struct thermal_sensor_ops *' but argument is of type 'const struct thermal_zone_device_ops *'
326 | void *data, struct thermal_sensor_ops *ops)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
--
In file included from drivers/thermal/thermal_core.h:13,
from drivers/thermal/hisi_thermal.c:28:
include/linux/thermal.h:319:73: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
319 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:326:78: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
326 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:335:20: error: redefinition of 'thermal_of_zone_unregister'
335 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:331:20: note: previous definition of 'thermal_of_zone_unregister' with type 'void(struct thermal_zone_device *)'
331 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:343:20: error: redefinition of 'devm_thermal_of_zone_unregister'
343 | static inline void devm_thermal_of_zone_unregister(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:339:20: note: previous definition of 'devm_thermal_of_zone_unregister' with type 'void(struct device *, struct thermal_zone_device *)'
339 | static inline void devm_thermal_of_zone_unregister(struct device *dev, struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/hisi_thermal.c: In function 'hisi_thermal_register_sensor':
>> drivers/thermal/hisi_thermal.c:497:53: error: passing argument 4 of 'devm_thermal_of_zone_register' from incompatible pointer type [-Werror=incompatible-pointer-types]
497 | &hisi_of_thermal_ops);
| ^~~~~~~~~~~~~~~~~~~~
| |
| const struct thermal_zone_device_ops *
include/linux/thermal.h:326:98: note: expected 'struct thermal_sensor_ops *' but argument is of type 'const struct thermal_zone_device_ops *'
326 | void *data, struct thermal_sensor_ops *ops)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
--
In file included from drivers/thermal/broadcom/ns-thermal.c:9:
include/linux/thermal.h:319:73: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
319 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:326:78: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
326 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:335:20: error: redefinition of 'thermal_of_zone_unregister'
335 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:331:20: note: previous definition of 'thermal_of_zone_unregister' with type 'void(struct thermal_zone_device *)'
331 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:343:20: error: redefinition of 'devm_thermal_of_zone_unregister'
343 | static inline void devm_thermal_of_zone_unregister(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:339:20: note: previous definition of 'devm_thermal_of_zone_unregister' with type 'void(struct device *, struct thermal_zone_device *)'
339 | static inline void devm_thermal_of_zone_unregister(struct device *dev, struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/broadcom/ns-thermal.c: In function 'ns_thermal_probe':
>> drivers/thermal/broadcom/ns-thermal.c:57:44: error: passing argument 4 of 'devm_thermal_of_zone_register' from incompatible pointer type [-Werror=incompatible-pointer-types]
57 | &ns_thermal_ops);
| ^~~~~~~~~~~~~~~
| |
| const struct thermal_zone_device_ops *
include/linux/thermal.h:326:98: note: expected 'struct thermal_sensor_ops *' but argument is of type 'const struct thermal_zone_device_ops *'
326 | void *data, struct thermal_sensor_ops *ops)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
--
In file included from drivers/thermal/broadcom/sr-thermal.c:9:
include/linux/thermal.h:319:73: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
319 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:326:78: warning: 'struct thermal_sensor_ops' declared inside parameter list will not be visible outside of this definition or declaration
326 | void *data, struct thermal_sensor_ops *ops)
| ^~~~~~~~~~~~~~~~~~
include/linux/thermal.h:335:20: error: redefinition of 'thermal_of_zone_unregister'
335 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:331:20: note: previous definition of 'thermal_of_zone_unregister' with type 'void(struct thermal_zone_device *)'
331 | static inline void thermal_of_zone_unregister(struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:343:20: error: redefinition of 'devm_thermal_of_zone_unregister'
343 | static inline void devm_thermal_of_zone_unregister(struct device *dev,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/thermal.h:339:20: note: previous definition of 'devm_thermal_of_zone_unregister' with type 'void(struct device *, struct thermal_zone_device *)'
339 | static inline void devm_thermal_of_zone_unregister(struct device *dev, struct thermal_zone_device *tz)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/thermal/broadcom/sr-thermal.c: In function 'sr_thermal_probe':
>> drivers/thermal/broadcom/sr-thermal.c:88:52: error: passing argument 4 of 'devm_thermal_of_zone_register' from incompatible pointer type [-Werror=incompatible-pointer-types]
88 | &sr_tz_ops);
| ^~~~~~~~~~
| |
| const struct thermal_zone_device_ops *
include/linux/thermal.h:326:98: note: expected 'struct thermal_sensor_ops *' but argument is of type 'const struct thermal_zone_device_ops *'
326 | void *data, struct thermal_sensor_ops *ops)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
vim +/devm_thermal_of_zone_register +532 drivers/thermal/rcar_thermal.c
84f0e490bee068 Kuninori Morimoto 2015-11-10 435
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 436 static int rcar_thermal_probe(struct platform_device *pdev)
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 437 {
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 438 struct rcar_thermal_common *common;
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 439 struct rcar_thermal_priv *priv;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 440 struct device *dev = &pdev->dev;
3277e022a1c31f Lad Prabhakar 2022-01-10 441 struct resource *res;
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 442 const struct rcar_thermal_chip *chip = of_device_get_match_data(dev);
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 443 int mres = 0;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 444 int i;
fb84d9907f0ff0 Devendra Naga 2013-03-04 445 int ret = -ENODEV;
e0a5172e9eec7f Kuninori Morimoto 2013-01-31 446 int idle = IDLE_INTERVAL;
11313746547015 Yoshihiro Shimoda 2015-01-07 447 u32 enr_bits = 0;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 448
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 449 common = devm_kzalloc(dev, sizeof(*common), GFP_KERNEL);
b0a60d88d60b92 Jingoo Han 2014-05-07 450 if (!common)
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 451 return -ENOMEM;
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 452
84f0e490bee068 Kuninori Morimoto 2015-11-10 453 platform_set_drvdata(pdev, common);
84f0e490bee068 Kuninori Morimoto 2015-11-10 454
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 455 INIT_LIST_HEAD(&common->head);
e0a5172e9eec7f Kuninori Morimoto 2013-01-31 456 spin_lock_init(&common->lock);
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 457 common->dev = dev;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 458
51d45d25948bdf Kuninori Morimoto 2013-03-26 459 pm_runtime_enable(dev);
51d45d25948bdf Kuninori Morimoto 2013-03-26 460 pm_runtime_get_sync(dev);
51d45d25948bdf Kuninori Morimoto 2013-03-26 461
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 462 for (i = 0; i < chip->nirqs; i++) {
3277e022a1c31f Lad Prabhakar 2022-01-10 463 int irq;
3277e022a1c31f Lad Prabhakar 2022-01-10 464
3277e022a1c31f Lad Prabhakar 2022-01-10 465 ret = platform_get_irq_optional(pdev, i);
3277e022a1c31f Lad Prabhakar 2022-01-10 466 if (ret < 0 && ret != -ENXIO)
3277e022a1c31f Lad Prabhakar 2022-01-10 467 goto error_unregister;
3277e022a1c31f Lad Prabhakar 2022-01-10 468 if (ret > 0)
3277e022a1c31f Lad Prabhakar 2022-01-10 469 irq = ret;
3277e022a1c31f Lad Prabhakar 2022-01-10 470 else
3277e022a1c31f Lad Prabhakar 2022-01-10 471 break;
3277e022a1c31f Lad Prabhakar 2022-01-10 472
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 473 if (!common->base) {
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 474 /*
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 475 * platform has IRQ support.
ee853addd9fedb Geert Uytterhoeven 2015-01-12 476 * Then, driver uses common registers
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 477 * rcar_has_irq_support() will be enabled
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 478 */
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 479 res = platform_get_resource(pdev, IORESOURCE_MEM,
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 480 mres++);
5095526faf3847 Sachin Kamat 2013-03-04 481 common->base = devm_ioremap_resource(dev, res);
39056e8a989ef5 Niklas Söderlund 2020-03-10 482 if (IS_ERR(common->base)) {
39056e8a989ef5 Niklas Söderlund 2020-03-10 483 ret = PTR_ERR(common->base);
39056e8a989ef5 Niklas Söderlund 2020-03-10 484 goto error_unregister;
39056e8a989ef5 Niklas Söderlund 2020-03-10 485 }
e0a5172e9eec7f Kuninori Morimoto 2013-01-31 486
6fe495e0f80ebe Geert Uytterhoeven 2014-01-07 487 idle = 0; /* polling delay is not needed */
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 488 }
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 489
3277e022a1c31f Lad Prabhakar 2022-01-10 490 ret = devm_request_irq(dev, irq, rcar_thermal_irq,
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 491 IRQF_SHARED, dev_name(dev), common);
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 492 if (ret) {
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 493 dev_err(dev, "irq request failed\n ");
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 494 goto error_unregister;
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 495 }
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 496
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 497 /* update ENR bits */
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 498 if (chip->irq_per_ch)
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 499 enr_bits |= 1 << i;
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 500 }
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 501
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 502 for (i = 0;; i++) {
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 503 res = platform_get_resource(pdev, IORESOURCE_MEM, mres++);
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 504 if (!res)
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 505 break;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 506
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 507 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 508 if (!priv) {
1dc20828e674a7 Kuninori Morimoto 2013-03-26 509 ret = -ENOMEM;
1dc20828e674a7 Kuninori Morimoto 2013-03-26 510 goto error_unregister;
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 511 }
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 512
5095526faf3847 Sachin Kamat 2013-03-04 513 priv->base = devm_ioremap_resource(dev, res);
1dc20828e674a7 Kuninori Morimoto 2013-03-26 514 if (IS_ERR(priv->base)) {
1dc20828e674a7 Kuninori Morimoto 2013-03-26 515 ret = PTR_ERR(priv->base);
1dc20828e674a7 Kuninori Morimoto 2013-03-26 516 goto error_unregister;
1dc20828e674a7 Kuninori Morimoto 2013-03-26 517 }
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 518
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 519 priv->common = common;
e0a5172e9eec7f Kuninori Morimoto 2013-01-31 520 priv->id = i;
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 521 priv->chip = chip;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 522 mutex_init(&priv->lock);
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 523 INIT_LIST_HEAD(&priv->list);
e0a5172e9eec7f Kuninori Morimoto 2013-01-31 524 INIT_DELAYED_WORK(&priv->work, rcar_thermal_work);
a1ade5653804b8 Kuninori Morimoto 2015-12-15 525 ret = rcar_thermal_update_temp(priv);
a1ade5653804b8 Kuninori Morimoto 2015-12-15 526 if (ret < 0)
a1ade5653804b8 Kuninori Morimoto 2015-12-15 527 goto error_unregister;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 528
392573b73ee337 Geert Uytterhoeven 2020-08-19 529 if (chip->use_of_thermal) {
b5177e394349c6 Daniel Lezcano 2022-07-27 530 priv->zone = devm_thermal_of_zone_register(
8b477ea56383dc Kuninori Morimoto 2016-01-28 531 dev, i, priv,
8b477ea56383dc Kuninori Morimoto 2016-01-28 @532 &rcar_thermal_zone_of_ops);
392573b73ee337 Geert Uytterhoeven 2020-08-19 533 } else {
8b477ea56383dc Kuninori Morimoto 2016-01-28 534 priv->zone = thermal_zone_device_register(
8b477ea56383dc Kuninori Morimoto 2016-01-28 535 "rcar_thermal",
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 536 1, 0, priv,
d2a73e225d113f Kuninori Morimoto 2012-12-02 537 &rcar_thermal_zone_ops, NULL, 0,
e0a5172e9eec7f Kuninori Morimoto 2013-01-31 538 idle);
bbcf90c0646ac7 Andrzej Pietrasiewicz 2020-06-29 539
bbcf90c0646ac7 Andrzej Pietrasiewicz 2020-06-29 540 ret = thermal_zone_device_enable(priv->zone);
bbcf90c0646ac7 Andrzej Pietrasiewicz 2020-06-29 541 if (ret) {
bbcf90c0646ac7 Andrzej Pietrasiewicz 2020-06-29 542 thermal_zone_device_unregister(priv->zone);
bbcf90c0646ac7 Andrzej Pietrasiewicz 2020-06-29 543 priv->zone = ERR_PTR(ret);
bbcf90c0646ac7 Andrzej Pietrasiewicz 2020-06-29 544 }
bbcf90c0646ac7 Andrzej Pietrasiewicz 2020-06-29 545 }
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 546 if (IS_ERR(priv->zone)) {
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 547 dev_err(dev, "can't register thermal zone\n");
fb84d9907f0ff0 Devendra Naga 2013-03-04 548 ret = PTR_ERR(priv->zone);
87260d3f7aecba Dirk Behme 2016-04-21 549 priv->zone = NULL;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 550 goto error_unregister;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 551 }
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 552
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 553 if (chip->use_of_thermal) {
64a411e8042ed0 Kuninori Morimoto 2016-07-19 554 /*
64a411e8042ed0 Kuninori Morimoto 2016-07-19 555 * thermal_zone doesn't enable hwmon as default,
64a411e8042ed0 Kuninori Morimoto 2016-07-19 556 * but, enable it here to keep compatible
64a411e8042ed0 Kuninori Morimoto 2016-07-19 557 */
64a411e8042ed0 Kuninori Morimoto 2016-07-19 558 priv->zone->tzp->no_hwmon = false;
64a411e8042ed0 Kuninori Morimoto 2016-07-19 559 ret = thermal_add_hwmon_sysfs(priv->zone);
64a411e8042ed0 Kuninori Morimoto 2016-07-19 560 if (ret)
64a411e8042ed0 Kuninori Morimoto 2016-07-19 561 goto error_unregister;
64a411e8042ed0 Kuninori Morimoto 2016-07-19 562 }
64a411e8042ed0 Kuninori Morimoto 2016-07-19 563
e0a5172e9eec7f Kuninori Morimoto 2013-01-31 564 rcar_thermal_irq_enable(priv);
1dc20828e674a7 Kuninori Morimoto 2013-03-26 565
1dc20828e674a7 Kuninori Morimoto 2013-03-26 566 list_move_tail(&priv->list, &common->head);
11313746547015 Yoshihiro Shimoda 2015-01-07 567
11313746547015 Yoshihiro Shimoda 2015-01-07 568 /* update ENR bits */
1969d9dc2079e4 Yoshihiro Kaneko 2018-05-20 569 if (!chip->irq_per_ch)
11313746547015 Yoshihiro Shimoda 2015-01-07 570 enr_bits |= 3 << (i * 8);
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 571 }
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 572
542cdf40680494 Simon Horman 2018-07-24 573 if (common->base && enr_bits)
11313746547015 Yoshihiro Shimoda 2015-01-07 574 rcar_thermal_common_write(common, ENR, enr_bits);
11313746547015 Yoshihiro Shimoda 2015-01-07 575
3db46c939677e3 Laurent Pinchart 2013-05-14 576 dev_info(dev, "%d sensor probed\n", i);
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 577
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 578 return 0;
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 579
3676d1dd3d3069 Kuninori Morimoto 2013-01-31 580 error_unregister:
84f0e490bee068 Kuninori Morimoto 2015-11-10 581 rcar_thermal_remove(pdev);
51d45d25948bdf Kuninori Morimoto 2013-03-26 582
fb84d9907f0ff0 Devendra Naga 2013-03-04 583 return ret;
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 584 }
1e426ffddf2f15 Kuninori Morimoto 2012-07-21 585
:::::: The code at line 532 was first introduced by commit
:::::: 8b477ea56383dc8b838f1f8b506e4571c14ceb30 thermal: rcar: enable to use thermal-zone on DT
:::::: TO: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
:::::: CC: Eduardo Valentin <edubezval@gmail.com>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
reply other threads:[~2022-08-01 5:39 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=202208011342.io34XfQd-lkp@intel.com \
--to=lkp@intel.com \
--cc=daniel.lezcano@linexp.org \
--cc=kbuild-all@lists.01.org \
--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.