[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