[Linux-stm32] [PATCH 4/6] thermal: stm32: Convert to devm_thermal_zone_of_sensor_register_params()
kbuild test robot
lkp at intel.com
Thu Dec 13 07:11:00 UTC 2018
Hi Marek,
I love your patch! Yet something to improve:
[auto build test ERROR on soc-thermal/next]
[also build test ERROR on v4.20-rc6 next-20181212]
[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/Marek-Vasut/thermal-Align-devm_thermal_zone_-device-of_sensor-_register/20181212-185837
base: https://git.kernel.org/pub/scm/linux/kernel/git/evalenti/linux-soc-thermal.git next
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (Debian 7.2.0-11) 7.2.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=7.2.0 make.cross ARCH=arm
All errors (new ones prefixed by >>):
>> drivers/thermal/st/stm_thermal.c:602:48: error: conflicting type qualifiers for 'stm_tz_ops'
static const struct thermal_zone_of_device_ops stm_tz_ops = {
^~~~~~~~~~
drivers/thermal/st/stm_thermal.c:105:35: note: previous definition of 'stm_tz_ops' was here
static struct thermal_zone_params stm_tz_ops = {
^~~~~~~~~~
drivers/thermal/st/stm_thermal.c: In function 'stm_thermal_probe':
>> drivers/thermal/st/stm_thermal.c:659:29: error: passing argument 5 of 'devm_thermal_zone_of_sensor_register_params' from incompatible pointer type [-Werror=incompatible-pointer-types]
0, sensor, &stm_tz_ops, &stm_tz_ops);
^
In file included from drivers/thermal/st/stm_thermal.c:20:0:
include/linux/thermal.h:390:29: note: expected 'struct thermal_zone_params *' but argument is of type 'const struct thermal_zone_of_device_ops *'
struct thermal_zone_device *devm_thermal_zone_of_sensor_register_params(
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
At top level:
drivers/thermal/st/stm_thermal.c:105:35: warning: 'stm_tz_ops' defined but not used [-Wunused-variable]
static struct thermal_zone_params stm_tz_ops = {
^~~~~~~~~~
cc1: some warnings being treated as errors
vim +/stm_tz_ops +602 drivers/thermal/st/stm_thermal.c
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 601
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 @602 static const struct thermal_zone_of_device_ops stm_tz_ops = {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 603 .get_temp = stm_thermal_get_temp,
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 604 };
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 605
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 606 static const struct of_device_id stm_thermal_of_match[] = {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 607 { .compatible = "st,stm32-thermal"},
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 608 { /* sentinel */ }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 609 };
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 610 MODULE_DEVICE_TABLE(of, stm_thermal_of_match);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 611
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 612 static int stm_thermal_probe(struct platform_device *pdev)
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 613 {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 614 struct stm_thermal_sensor *sensor;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 615 struct resource *res;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 616 const struct thermal_trip *trip;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 617 void __iomem *base;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 618 int ret, i;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 619
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 620 if (!pdev->dev.of_node) {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 621 dev_err(&pdev->dev, "%s: device tree node not found\n",
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 622 __func__);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 623 return -EINVAL;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 624 }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 625
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 626 sensor = devm_kzalloc(&pdev->dev, sizeof(*sensor), GFP_KERNEL);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 627 if (!sensor)
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 628 return -ENOMEM;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 629
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 630 platform_set_drvdata(pdev, sensor);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 631
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 632 sensor->dev = &pdev->dev;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 633
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 634 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 635 base = devm_ioremap_resource(&pdev->dev, res);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 636 if (IS_ERR(base))
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 637 return PTR_ERR(base);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 638
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 639 /* Populate sensor */
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 640 sensor->base = base;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 641
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 642 ret = stm_thermal_read_factory_settings(sensor);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 643 if (ret)
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 644 return ret;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 645
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 646 sensor->clk = devm_clk_get(&pdev->dev, "pclk");
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 647 if (IS_ERR(sensor->clk)) {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 648 dev_err(&pdev->dev, "%s: failed to fetch PCLK clock\n",
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 649 __func__);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 650 return PTR_ERR(sensor->clk);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 651 }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 652
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 653 /* Register IRQ into GIC */
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 654 ret = stm_register_irq(sensor);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 655 if (ret)
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 656 return ret;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 657
06b6bb60 Marek Vasut 2018-12-12 658 sensor->th_dev = devm_thermal_zone_of_sensor_register_params(&pdev->dev,
06b6bb60 Marek Vasut 2018-12-12 @659 0, sensor, &stm_tz_ops, &stm_tz_ops);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 660
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 661 if (IS_ERR(sensor->th_dev)) {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 662 dev_err(&pdev->dev, "%s: thermal zone sensor registering KO\n",
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 663 __func__);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 664 ret = PTR_ERR(sensor->th_dev);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 665 return ret;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 666 }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 667
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 668 if (!sensor->th_dev->ops->get_crit_temp) {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 669 /* Critical point must be provided */
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 670 ret = -EINVAL;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 671 goto err_tz;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 672 }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 673
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 674 ret = sensor->th_dev->ops->get_crit_temp(sensor->th_dev,
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 675 &sensor->temp_critical);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 676 if (ret) {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 677 dev_err(&pdev->dev,
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 678 "Not able to read critical_temp: %d\n", ret);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 679 goto err_tz;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 680 }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 681
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 682 sensor->temp_critical = celsius(sensor->temp_critical);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 683
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 684 /* Set thresholds for IRQ */
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 685 sensor->high_temp = sensor->temp_critical;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 686
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 687 trip = of_thermal_get_trip_points(sensor->th_dev);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 688 sensor->num_trips = of_thermal_get_ntrips(sensor->th_dev);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 689
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 690 /* Find out passive temperature if it exists */
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 691 for (i = (sensor->num_trips - 1); i >= 0; i--) {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 692 if (trip[i].type == THERMAL_TRIP_PASSIVE) {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 693 sensor->temp_passive = celsius(trip[i].temperature);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 694 /* Update high temperature threshold */
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 695 sensor->high_temp = sensor->temp_passive;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 696 }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 697 }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 698
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 699 /*
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 700 * Ensure low_temp_enabled flag is disabled.
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 701 * By disabling low_temp_enabled, low threshold IT will not be
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 702 * configured neither enabled because it is not needed as high
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 703 * threshold is set on the lowest temperature trip point after
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 704 * probe.
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 705 */
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 706 sensor->low_temp_enabled = false;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 707
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 708 /* Configure and enable HW sensor */
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 709 ret = stm_thermal_prepare(sensor);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 710 if (ret) {
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 711 dev_err(&pdev->dev,
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 712 "Not able to enable sensor: %d\n", ret);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 713 goto err_tz;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 714 }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 715
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 716 sensor->mode = THERMAL_DEVICE_ENABLED;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 717
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 718 dev_info(&pdev->dev, "%s: Driver initialized successfully\n",
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 719 __func__);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 720
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 721 return 0;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 722
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 723 err_tz:
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 724 thermal_zone_of_sensor_unregister(&pdev->dev, sensor->th_dev);
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 725 return ret;
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 726 }
1d693155 David HERNANDEZ SANCHEZ 2018-10-05 727
:::::: The code at line 602 was first introduced by commit
:::::: 1d693155607329adff57f5307d35a3a8320d4e7f thermal: add stm32 thermal driver
:::::: TO: David HERNANDEZ SANCHEZ <david.hernandezsanchez at st.com>
:::::: CC: Eduardo Valentin <edubezval at gmail.com>
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 66865 bytes
Desc: not available
URL: <http://st-md-mailman.stormreply.com/pipermail/linux-stm32/attachments/20181213/bfb67a3a/attachment.gz>
More information about the Linux-stm32
mailing list