Message ID | 20240625-thermal-v2-2-bf8354ed51ee@gmail.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Daniel Lezcano |
Headers | show |
Series | Add thermal management support for STi platform | expand |
Hi Raphael,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 0fc4bfab2cd45f9acb86c4f04b5191e114e901ed]
url: https://github.com/intel-lab-lkp/linux/commits/Raphael-Gallais-Pou/thermal-st-switch-from-CONFIG_PM_SLEEP-guards-to-pm_sleep_ptr/20240626-090203
base: 0fc4bfab2cd45f9acb86c4f04b5191e114e901ed
patch link: https://lore.kernel.org/r/20240625-thermal-v2-2-bf8354ed51ee%40gmail.com
patch subject: [PATCH v2 2/3] thermal: sti: depend on THERMAL_OF subsystem
config: arm-allmodconfig (https://download.01.org/0day-ci/archive/20240627/202406270530.kN5wIswi-lkp@intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240627/202406270530.kN5wIswi-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406270530.kN5wIswi-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/thermal/st/st_thermal.c: In function 'st_thermal_register':
>> drivers/thermal/st/st_thermal.c:147:13: warning: variable 'polling_delay' set but not used [-Wunused-but-set-variable]
147 | int polling_delay;
| ^~~~~~~~~~~~~
vim +/polling_delay +147 drivers/thermal/st/st_thermal.c
60aef7ce455653 Lee Jones 2014-06-05 138
60aef7ce455653 Lee Jones 2014-06-05 139 int st_thermal_register(struct platform_device *pdev,
60aef7ce455653 Lee Jones 2014-06-05 140 const struct of_device_id *st_thermal_of_match)
60aef7ce455653 Lee Jones 2014-06-05 141 {
60aef7ce455653 Lee Jones 2014-06-05 142 struct st_thermal_sensor *sensor;
60aef7ce455653 Lee Jones 2014-06-05 143 struct device *dev = &pdev->dev;
60aef7ce455653 Lee Jones 2014-06-05 144 struct device_node *np = dev->of_node;
60aef7ce455653 Lee Jones 2014-06-05 145 const struct of_device_id *match;
60aef7ce455653 Lee Jones 2014-06-05 146
60aef7ce455653 Lee Jones 2014-06-05 @147 int polling_delay;
60aef7ce455653 Lee Jones 2014-06-05 148 int ret;
60aef7ce455653 Lee Jones 2014-06-05 149
60aef7ce455653 Lee Jones 2014-06-05 150 if (!np) {
60aef7ce455653 Lee Jones 2014-06-05 151 dev_err(dev, "device tree node not found\n");
60aef7ce455653 Lee Jones 2014-06-05 152 return -EINVAL;
60aef7ce455653 Lee Jones 2014-06-05 153 }
60aef7ce455653 Lee Jones 2014-06-05 154
60aef7ce455653 Lee Jones 2014-06-05 155 sensor = devm_kzalloc(dev, sizeof(*sensor), GFP_KERNEL);
60aef7ce455653 Lee Jones 2014-06-05 156 if (!sensor)
60aef7ce455653 Lee Jones 2014-06-05 157 return -ENOMEM;
60aef7ce455653 Lee Jones 2014-06-05 158
60aef7ce455653 Lee Jones 2014-06-05 159 sensor->dev = dev;
60aef7ce455653 Lee Jones 2014-06-05 160
60aef7ce455653 Lee Jones 2014-06-05 161 match = of_match_device(st_thermal_of_match, dev);
60aef7ce455653 Lee Jones 2014-06-05 162 if (!(match && match->data))
60aef7ce455653 Lee Jones 2014-06-05 163 return -EINVAL;
60aef7ce455653 Lee Jones 2014-06-05 164
60aef7ce455653 Lee Jones 2014-06-05 165 sensor->cdata = match->data;
60aef7ce455653 Lee Jones 2014-06-05 166 if (!sensor->cdata->ops)
60aef7ce455653 Lee Jones 2014-06-05 167 return -EINVAL;
60aef7ce455653 Lee Jones 2014-06-05 168
60aef7ce455653 Lee Jones 2014-06-05 169 sensor->ops = sensor->cdata->ops;
60aef7ce455653 Lee Jones 2014-06-05 170
331a5fc9f2ed28 Nicolas Boichat 2015-07-08 171 ret = (sensor->ops->regmap_init)(sensor);
60aef7ce455653 Lee Jones 2014-06-05 172 if (ret)
60aef7ce455653 Lee Jones 2014-06-05 173 return ret;
60aef7ce455653 Lee Jones 2014-06-05 174
60aef7ce455653 Lee Jones 2014-06-05 175 ret = st_thermal_alloc_regfields(sensor);
60aef7ce455653 Lee Jones 2014-06-05 176 if (ret)
60aef7ce455653 Lee Jones 2014-06-05 177 return ret;
60aef7ce455653 Lee Jones 2014-06-05 178
60aef7ce455653 Lee Jones 2014-06-05 179 sensor->clk = devm_clk_get(dev, "thermal");
60aef7ce455653 Lee Jones 2014-06-05 180 if (IS_ERR(sensor->clk)) {
60aef7ce455653 Lee Jones 2014-06-05 181 dev_err(dev, "failed to fetch clock\n");
60aef7ce455653 Lee Jones 2014-06-05 182 return PTR_ERR(sensor->clk);
60aef7ce455653 Lee Jones 2014-06-05 183 }
60aef7ce455653 Lee Jones 2014-06-05 184
60aef7ce455653 Lee Jones 2014-06-05 185 if (sensor->ops->register_enable_irq) {
60aef7ce455653 Lee Jones 2014-06-05 186 ret = sensor->ops->register_enable_irq(sensor);
60aef7ce455653 Lee Jones 2014-06-05 187 if (ret)
60aef7ce455653 Lee Jones 2014-06-05 188 return ret;
60aef7ce455653 Lee Jones 2014-06-05 189 }
60aef7ce455653 Lee Jones 2014-06-05 190
60aef7ce455653 Lee Jones 2014-06-05 191 ret = st_thermal_sensor_on(sensor);
60aef7ce455653 Lee Jones 2014-06-05 192 if (ret)
60aef7ce455653 Lee Jones 2014-06-05 193 return ret;
60aef7ce455653 Lee Jones 2014-06-05 194
60aef7ce455653 Lee Jones 2014-06-05 195 ret = st_thermal_calibration(sensor);
60aef7ce455653 Lee Jones 2014-06-05 196 if (ret)
60aef7ce455653 Lee Jones 2014-06-05 197 goto sensor_off;
60aef7ce455653 Lee Jones 2014-06-05 198
60aef7ce455653 Lee Jones 2014-06-05 199 polling_delay = sensor->ops->register_enable_irq ? 0 : 1000;
60aef7ce455653 Lee Jones 2014-06-05 200
60aef7ce455653 Lee Jones 2014-06-05 201 sensor->thermal_dev =
9819ef601045bf Raphael Gallais-Pou 2024-06-25 202 devm_thermal_of_zone_register(dev, 0, sensor, &st_tz_ops);
60aef7ce455653 Lee Jones 2014-06-05 203 if (IS_ERR(sensor->thermal_dev)) {
9819ef601045bf Raphael Gallais-Pou 2024-06-25 204 dev_err(dev, "failed to register thermal of zone\n");
60aef7ce455653 Lee Jones 2014-06-05 205 ret = PTR_ERR(sensor->thermal_dev);
60aef7ce455653 Lee Jones 2014-06-05 206 goto sensor_off;
60aef7ce455653 Lee Jones 2014-06-05 207 }
60aef7ce455653 Lee Jones 2014-06-05 208
60aef7ce455653 Lee Jones 2014-06-05 209 platform_set_drvdata(pdev, sensor);
60aef7ce455653 Lee Jones 2014-06-05 210
9819ef601045bf Raphael Gallais-Pou 2024-06-25 211 /*
9819ef601045bf Raphael Gallais-Pou 2024-06-25 212 * devm_thermal_of_zone_register() doesn't enable hwmon by default
9819ef601045bf Raphael Gallais-Pou 2024-06-25 213 * Enable it here
9819ef601045bf Raphael Gallais-Pou 2024-06-25 214 */
9819ef601045bf Raphael Gallais-Pou 2024-06-25 215 return devm_thermal_add_hwmon_sysfs(dev, sensor->thermal_dev);
60aef7ce455653 Lee Jones 2014-06-05 216
60aef7ce455653 Lee Jones 2014-06-05 217 sensor_off:
60aef7ce455653 Lee Jones 2014-06-05 218 st_thermal_sensor_off(sensor);
60aef7ce455653 Lee Jones 2014-06-05 219
60aef7ce455653 Lee Jones 2014-06-05 220 return ret;
60aef7ce455653 Lee Jones 2014-06-05 221 }
60aef7ce455653 Lee Jones 2014-06-05 222 EXPORT_SYMBOL_GPL(st_thermal_register);
60aef7ce455653 Lee Jones 2014-06-05 223
Hi Raphael,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 0fc4bfab2cd45f9acb86c4f04b5191e114e901ed]
url: https://github.com/intel-lab-lkp/linux/commits/Raphael-Gallais-Pou/thermal-st-switch-from-CONFIG_PM_SLEEP-guards-to-pm_sleep_ptr/20240626-090203
base: 0fc4bfab2cd45f9acb86c4f04b5191e114e901ed
patch link: https://lore.kernel.org/r/20240625-thermal-v2-2-bf8354ed51ee%40gmail.com
patch subject: [PATCH v2 2/3] thermal: sti: depend on THERMAL_OF subsystem
config: arm64-kismet-CONFIG_ST_THERMAL-CONFIG_ST_THERMAL_MEMMAP-0-0 (https://download.01.org/0day-ci/archive/20240627/202406270605.qodaWd4n-lkp@intel.com/config)
reproduce: (https://download.01.org/0day-ci/archive/20240627/202406270605.qodaWd4n-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202406270605.qodaWd4n-lkp@intel.com/
kismet warnings: (new ones prefixed by >>)
>> kismet: WARNING: unmet direct dependencies detected for ST_THERMAL when selected by ST_THERMAL_MEMMAP
WARNING: unmet direct dependencies detected for ST_THERMAL
Depends on [n]: THERMAL [=y] && (ARCH_STI || ARCH_STM32 [=y]) && OF [=y] && THERMAL_OF [=n]
Selected by [y]:
- ST_THERMAL_MEMMAP [=y] && THERMAL [=y] && (ARCH_STI || ARCH_STM32 [=y]) && OF [=y]
diff --git a/drivers/thermal/st/Kconfig b/drivers/thermal/st/Kconfig index ecbdf4ef00f4..2d08147876ee 100644 --- a/drivers/thermal/st/Kconfig +++ b/drivers/thermal/st/Kconfig @@ -5,6 +5,7 @@ config ST_THERMAL tristate "Thermal sensors on STMicroelectronics STi series of SoCs" + depends on THERMAL_OF help Support for thermal sensors on STMicroelectronics STi series of SoCs. diff --git a/drivers/thermal/st/st_thermal.c b/drivers/thermal/st/st_thermal.c index 5f33543a3a54..1f2ba5c88cbc 100644 --- a/drivers/thermal/st/st_thermal.c +++ b/drivers/thermal/st/st_thermal.c @@ -12,6 +12,7 @@ #include <linux/of_device.h> #include "st_thermal.h" +#include "../thermal_hwmon.h" /* The Thermal Framework expects millidegrees */ #define mcelsius(temp) ((temp) * 1000) @@ -135,8 +136,6 @@ static struct thermal_zone_device_ops st_tz_ops = { .get_temp = st_thermal_get_temp, }; -static struct thermal_trip trip; - int st_thermal_register(struct platform_device *pdev, const struct of_device_id *st_thermal_of_match) { @@ -199,27 +198,22 @@ int st_thermal_register(struct platform_device *pdev, polling_delay = sensor->ops->register_enable_irq ? 0 : 1000; - trip.temperature = sensor->cdata->crit_temp; - trip.type = THERMAL_TRIP_CRITICAL; - sensor->thermal_dev = - thermal_zone_device_register_with_trips(dev_name(dev), &trip, 1, sensor, - &st_tz_ops, NULL, 0, polling_delay); + devm_thermal_of_zone_register(dev, 0, sensor, &st_tz_ops); if (IS_ERR(sensor->thermal_dev)) { - dev_err(dev, "failed to register thermal zone device\n"); + dev_err(dev, "failed to register thermal of zone\n"); ret = PTR_ERR(sensor->thermal_dev); goto sensor_off; } - ret = thermal_zone_device_enable(sensor->thermal_dev); - if (ret) - goto tzd_unregister; platform_set_drvdata(pdev, sensor); - return 0; + /* + * devm_thermal_of_zone_register() doesn't enable hwmon by default + * Enable it here + */ + return devm_thermal_add_hwmon_sysfs(dev, sensor->thermal_dev); -tzd_unregister: - thermal_zone_device_unregister(sensor->thermal_dev); sensor_off: st_thermal_sensor_off(sensor); @@ -232,7 +226,8 @@ void st_thermal_unregister(struct platform_device *pdev) struct st_thermal_sensor *sensor = platform_get_drvdata(pdev); st_thermal_sensor_off(sensor); - thermal_zone_device_unregister(sensor->thermal_dev); + thermal_remove_hwmon_sysfs(sensor->thermal_dev); + devm_thermal_of_zone_unregister(sensor->dev, sensor->thermal_dev); } EXPORT_SYMBOL_GPL(st_thermal_unregister);
Switch to thermal_of_zone to handle thermal-zones. Replace thermal_zone_device_register() by devm_thermal_of_zone_register() and remove ops st_thermal_get_trip_type, st_thermal_get_trip_temp. Signed-off-by: Raphael Gallais-Pou <rgallaispou@gmail.com> --- Changes in v2: - Remove unused struct thermal_trip trip --- drivers/thermal/st/Kconfig | 1 + drivers/thermal/st/st_thermal.c | 25 ++++++++++--------------- 2 files changed, 11 insertions(+), 15 deletions(-)