[rafael-pm:bleeding-edge 170/268] drivers/hwmon/emc2305.c:312:undefined reference to `devm_thermal_of_cooling_device_register'

kernel test robot
2026-04-08T09:43:52Z

Hi Daniel,

FYI, the error/warning was bisected to this commit, please ignore it if it's irrelevant.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git bleeding-edge
head: d18364264af84e2a89da14c6b5f0eae2ba7f98de
commit: e1b96fba58c6fe18a31a06f752ebc8ad6921b1cb [170/268] thermal/of: Move OF code where it belongs to
config: x86_64-randconfig-074-20260408 (https://download.01.org/0day-ci/archive/20260408/202604081734.3OJSeExW-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260408/202604081734.3OJSeExW-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/202604081734.3OJSeExW-lkp@intel.com/

All errors (new ones prefixed by >>):

ld: vmlinux.o: in function `emc2305_set_single_tz':
>> drivers/hwmon/emc2305.c:312:(.text+0x311f7a1): undefined reference to `devm_thermal_of_cooling_device_register'
ld: vmlinux.o: in function `max6650_probe':
>> drivers/hwmon/max6650.c:796:(.text+0x318d88a): undefined reference to `devm_thermal_of_cooling_device_register'
ld: vmlinux.o: in function `tc654_probe':
>> drivers/hwmon/tc654.c:544:(.text+0x3193384): undefined reference to `devm_thermal_of_cooling_device_register'

vim +312 drivers/hwmon/emc2305.c

0d8400c5a2ce159 Michael Shych 2022-08-10 301
2ed4db7a1d07b34 Florin Leotescu 2025-06-03 302 static int emc2305_set_single_tz(struct device *dev, struct device_node *fan_node, int idx)
0d8400c5a2ce159 Michael Shych 2022-08-10 303 {
0d8400c5a2ce159 Michael Shych 2022-08-10 304 struct emc2305_data *data = dev_get_drvdata(dev);
0d8400c5a2ce159 Michael Shych 2022-08-10 305 long pwm;
0d8400c5a2ce159 Michael Shych 2022-08-10 306 int i, cdev_idx, ret;
0d8400c5a2ce159 Michael Shych 2022-08-10 307
0d8400c5a2ce159 Michael Shych 2022-08-10 308 cdev_idx = (idx) ? idx - 1 : 0;
0d8400c5a2ce159 Michael Shych 2022-08-10 309 pwm = data->pwm_min[cdev_idx];
0d8400c5a2ce159 Michael Shych 2022-08-10 310
0d8400c5a2ce159 Michael Shych 2022-08-10 311 data->cdev_data[cdev_idx].cdev =
2ed4db7a1d07b34 Florin Leotescu 2025-06-03 @312 devm_thermal_of_cooling_device_register(dev, fan_node,
2115cbeec8a3ccc Florin Leotescu 2025-03-21 313 emc2305_fan_name[idx], data,
0d8400c5a2ce159 Michael Shych 2022-08-10 314 &emc2305_cooling_ops);
0d8400c5a2ce159 Michael Shych 2022-08-10 315
0d8400c5a2ce159 Michael Shych 2022-08-10 316 if (IS_ERR(data->cdev_data[cdev_idx].cdev)) {
0d8400c5a2ce159 Michael Shych 2022-08-10 317 dev_err(dev, "Failed to register cooling device %s\n", emc2305_fan_name[idx]);
0d8400c5a2ce159 Michael Shych 2022-08-10 318 return PTR_ERR(data->cdev_data[cdev_idx].cdev);
0d8400c5a2ce159 Michael Shych 2022-08-10 319 }
0429415a084a154 Florin Leotescu 2025-06-03 320
0429415a084a154 Florin Leotescu 2025-06-03 321 if (data->cdev_data[cdev_idx].cur_state > 0)
0429415a084a154 Florin Leotescu 2025-06-03 322 /* Update pwm when temperature is above trips */
0429415a084a154 Florin Leotescu 2025-06-03 323 pwm = EMC2305_PWM_STATE2DUTY(data->cdev_data[cdev_idx].cur_state,
0429415a084a154 Florin Leotescu 2025-06-03 324 data->max_state, EMC2305_FAN_MAX);
0429415a084a154 Florin Leotescu 2025-06-03 325
0d8400c5a2ce159 Michael Shych 2022-08-10 326 /* Set minimal PWM speed. */
0d8400c5a2ce159 Michael Shych 2022-08-10 327 if (data->pwm_separate) {
0d8400c5a2ce159 Michael Shych 2022-08-10 328 ret = emc2305_set_pwm(dev, pwm, cdev_idx);
0d8400c5a2ce159 Michael Shych 2022-08-10 329 if (ret < 0)
0d8400c5a2ce159 Michael Shych 2022-08-10 330 return ret;
0d8400c5a2ce159 Michael Shych 2022-08-10 331 } else {
0d8400c5a2ce159 Michael Shych 2022-08-10 332 for (i = 0; i < data->pwm_num; i++) {
0d8400c5a2ce159 Michael Shych 2022-08-10 333 ret = emc2305_set_pwm(dev, pwm, i);
0d8400c5a2ce159 Michael Shych 2022-08-10 334 if (ret < 0)
0d8400c5a2ce159 Michael Shych 2022-08-10 335 return ret;
0d8400c5a2ce159 Michael Shych 2022-08-10 336 }
0d8400c5a2ce159 Michael Shych 2022-08-10 337 }
0d8400c5a2ce159 Michael Shych 2022-08-10 338 data->cdev_data[cdev_idx].cur_state =
0429415a084a154 Florin Leotescu 2025-06-03 339 EMC2305_PWM_DUTY2STATE(pwm, data->max_state,
0d8400c5a2ce159 Michael Shych 2022-08-10 340 EMC2305_FAN_MAX);
0d8400c5a2ce159 Michael Shych 2022-08-10 341 data->cdev_data[cdev_idx].last_hwmon_state =
0429415a084a154 Florin Leotescu 2025-06-03 342 EMC2305_PWM_DUTY2STATE(pwm, data->max_state,
0d8400c5a2ce159 Michael Shych 2022-08-10 343 EMC2305_FAN_MAX);
0d8400c5a2ce159 Michael Shych 2022-08-10 344 return 0;
0d8400c5a2ce159 Michael Shych 2022-08-10 345 }
0d8400c5a2ce159 Michael Shych 2022-08-10 346

:::::: The code at line 312 was first introduced by commit
:::::: 2ed4db7a1d07b349b50e890dee3d0f245230d254 hwmon: (emc2305) Configure PWM channels based on DT properties

:::::: TO: Florin Leotescu <florin.leotescu@nxp.com>
:::::: CC: Guenter Roeck <linux@roeck-us.net>

--
0-DAY CI Kernel Test Service