mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-04 01:24:12 +08:00
hwmon: (pwm-fan) Make use of device properties
Convert the module to be property provider agnostic and allow it to be used on non-OF platforms. Add mod_devicetable.h include. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Link: https://lore.kernel.org/r/20240404191323.3547465-3-andriy.shevchenko@linux.intel.com Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
9c871df02a
commit
dfd977d85b
@ -1785,7 +1785,7 @@ config SENSORS_PT5161L
|
||||
|
||||
config SENSORS_PWM_FAN
|
||||
tristate "PWM fan"
|
||||
depends on (PWM && OF) || COMPILE_TEST
|
||||
depends on PWM || COMPILE_TEST
|
||||
depends on THERMAL || THERMAL=n
|
||||
help
|
||||
If you say yes here you get support for fans connected to PWM lines.
|
||||
|
@ -9,10 +9,11 @@
|
||||
|
||||
#include <linux/hwmon.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/property.h>
|
||||
#include <linux/pwm.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
#include <linux/sysfs.h>
|
||||
@ -421,16 +422,14 @@ static const struct thermal_cooling_device_ops pwm_fan_cooling_ops = {
|
||||
.set_cur_state = pwm_fan_set_cur_state,
|
||||
};
|
||||
|
||||
static int pwm_fan_of_get_cooling_data(struct device *dev,
|
||||
struct pwm_fan_ctx *ctx)
|
||||
static int pwm_fan_get_cooling_data(struct device *dev, struct pwm_fan_ctx *ctx)
|
||||
{
|
||||
struct device_node *np = dev->of_node;
|
||||
int num, i, ret;
|
||||
|
||||
if (!of_property_present(np, "cooling-levels"))
|
||||
if (!device_property_present(dev, "cooling-levels"))
|
||||
return 0;
|
||||
|
||||
ret = of_property_count_u32_elems(np, "cooling-levels");
|
||||
ret = device_property_count_u32(dev, "cooling-levels");
|
||||
if (ret <= 0) {
|
||||
dev_err(dev, "Wrong data!\n");
|
||||
return ret ? : -EINVAL;
|
||||
@ -442,8 +441,8 @@ static int pwm_fan_of_get_cooling_data(struct device *dev,
|
||||
if (!ctx->pwm_fan_cooling_levels)
|
||||
return -ENOMEM;
|
||||
|
||||
ret = of_property_read_u32_array(np, "cooling-levels",
|
||||
ctx->pwm_fan_cooling_levels, num);
|
||||
ret = device_property_read_u32_array(dev, "cooling-levels",
|
||||
ctx->pwm_fan_cooling_levels, num);
|
||||
if (ret) {
|
||||
dev_err(dev, "Property 'cooling-levels' cannot be read!\n");
|
||||
return ret;
|
||||
@ -574,8 +573,8 @@ static int pwm_fan_probe(struct platform_device *pdev)
|
||||
for (i = 0; i < ctx->tach_count; i++)
|
||||
ctx->pulses_per_revolution[i] = 2;
|
||||
|
||||
of_property_read_u32_array(dev->of_node, "pulses-per-revolution",
|
||||
ctx->pulses_per_revolution, ctx->tach_count);
|
||||
device_property_read_u32_array(dev, "pulses-per-revolution",
|
||||
ctx->pulses_per_revolution, ctx->tach_count);
|
||||
}
|
||||
|
||||
channels = devm_kcalloc(dev, channel_count + 1,
|
||||
@ -630,7 +629,7 @@ static int pwm_fan_probe(struct platform_device *pdev)
|
||||
return PTR_ERR(hwmon);
|
||||
}
|
||||
|
||||
ret = pwm_fan_of_get_cooling_data(dev, ctx);
|
||||
ret = pwm_fan_get_cooling_data(dev, ctx);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user