From 86430c1a66fe490fc97b0970575c223e27dee49d Mon Sep 17 00:00:00 2001 From: Guenter Roeck Date: Fri, 12 Aug 2016 06:28:15 -0700 Subject: [PATCH] hwmon: (core) Avoid cyclic dependency between hwmon and thermal_sys If both hwmon and thermal_sys are built as modules, and CONFIG_THERMAL_HWMON is enabled, the following cyclic module dependency is reported. depmod: ERROR: Found 2 modules in dependency cycles! depmod: ERROR: Cycle detected: hwmon -> thermal_sys -> hwmon Fixes: e4bce763adb2 ("hwmon: (core) New hwmon registration API") Reported-by: Vignesh R Cc: Keerthy J Signed-off-by: Guenter Roeck --- drivers/hwmon/hwmon.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/hwmon/hwmon.c b/drivers/hwmon/hwmon.c index fade170977e8..adae6848ffb2 100644 --- a/drivers/hwmon/hwmon.c +++ b/drivers/hwmon/hwmon.c @@ -108,7 +108,13 @@ static DEFINE_IDA(hwmon_ida); /* Thermal zone handling */ -#if IS_REACHABLE(CONFIG_THERMAL) && defined(CONFIG_THERMAL_OF) +/* + * The complex conditional is necessary to avoid a cyclic dependency + * between hwmon and thermal_sys modules. + */ +#if IS_REACHABLE(CONFIG_THERMAL) && defined(CONFIG_THERMAL_OF) && \ + (!defined(CONFIG_THERMAL_HWMON) || \ + !(defined(MODULE) && IS_MODULE(CONFIG_THERMAL))) static int hwmon_thermal_get_temp(void *data, int *temp) { struct hwmon_thermal_data *tdata = data; @@ -153,7 +159,7 @@ static int hwmon_thermal_add_sensor(struct device *dev, { return 0; } -#endif /* IS_REACHABLE(CONFIG_THERMAL) && defined(CONFIG_THERMAL_OF) */ +#endif /* IS_REACHABLE(CONFIG_THERMAL) && ... */ /* sysfs attribute management */