mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
synced 2025-08-27 15:36:48 +00: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
|
config SENSORS_PWM_FAN
|
||||||
tristate "PWM fan"
|
tristate "PWM fan"
|
||||||
depends on (PWM && OF) || COMPILE_TEST
|
depends on PWM || COMPILE_TEST
|
||||||
depends on THERMAL || THERMAL=n
|
depends on THERMAL || THERMAL=n
|
||||||
help
|
help
|
||||||
If you say yes here you get support for fans connected to PWM lines.
|
If you say yes here you get support for fans connected to PWM lines.
|
||||||
|
@ -9,10 +9,11 @@
|
|||||||
|
|
||||||
#include <linux/hwmon.h>
|
#include <linux/hwmon.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/mod_devicetable.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/of.h>
|
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
|
#include <linux/property.h>
|
||||||
#include <linux/pwm.h>
|
#include <linux/pwm.h>
|
||||||
#include <linux/regulator/consumer.h>
|
#include <linux/regulator/consumer.h>
|
||||||
#include <linux/sysfs.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,
|
.set_cur_state = pwm_fan_set_cur_state,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int pwm_fan_of_get_cooling_data(struct device *dev,
|
static int pwm_fan_get_cooling_data(struct device *dev, struct pwm_fan_ctx *ctx)
|
||||||
struct pwm_fan_ctx *ctx)
|
|
||||||
{
|
{
|
||||||
struct device_node *np = dev->of_node;
|
|
||||||
int num, i, ret;
|
int num, i, ret;
|
||||||
|
|
||||||
if (!of_property_present(np, "cooling-levels"))
|
if (!device_property_present(dev, "cooling-levels"))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ret = of_property_count_u32_elems(np, "cooling-levels");
|
ret = device_property_count_u32(dev, "cooling-levels");
|
||||||
if (ret <= 0) {
|
if (ret <= 0) {
|
||||||
dev_err(dev, "Wrong data!\n");
|
dev_err(dev, "Wrong data!\n");
|
||||||
return ret ? : -EINVAL;
|
return ret ? : -EINVAL;
|
||||||
@ -442,8 +441,8 @@ static int pwm_fan_of_get_cooling_data(struct device *dev,
|
|||||||
if (!ctx->pwm_fan_cooling_levels)
|
if (!ctx->pwm_fan_cooling_levels)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
ret = of_property_read_u32_array(np, "cooling-levels",
|
ret = device_property_read_u32_array(dev, "cooling-levels",
|
||||||
ctx->pwm_fan_cooling_levels, num);
|
ctx->pwm_fan_cooling_levels, num);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(dev, "Property 'cooling-levels' cannot be read!\n");
|
dev_err(dev, "Property 'cooling-levels' cannot be read!\n");
|
||||||
return ret;
|
return ret;
|
||||||
@ -574,8 +573,8 @@ static int pwm_fan_probe(struct platform_device *pdev)
|
|||||||
for (i = 0; i < ctx->tach_count; i++)
|
for (i = 0; i < ctx->tach_count; i++)
|
||||||
ctx->pulses_per_revolution[i] = 2;
|
ctx->pulses_per_revolution[i] = 2;
|
||||||
|
|
||||||
of_property_read_u32_array(dev->of_node, "pulses-per-revolution",
|
device_property_read_u32_array(dev, "pulses-per-revolution",
|
||||||
ctx->pulses_per_revolution, ctx->tach_count);
|
ctx->pulses_per_revolution, ctx->tach_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
channels = devm_kcalloc(dev, channel_count + 1,
|
channels = devm_kcalloc(dev, channel_count + 1,
|
||||||
@ -630,7 +629,7 @@ static int pwm_fan_probe(struct platform_device *pdev)
|
|||||||
return PTR_ERR(hwmon);
|
return PTR_ERR(hwmon);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = pwm_fan_of_get_cooling_data(dev, ctx);
|
ret = pwm_fan_get_cooling_data(dev, ctx);
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user