Commit dfd977d8 authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Guenter Roeck
Browse files

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: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: default avatarUwe 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: default avatarGuenter Roeck <linux@roeck-us.net>
parent 9c871df0
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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.
+10 −11
Original line number Diff line number Diff line
@@ -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,7 +441,7 @@ 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",
	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");
@@ -574,7 +573,7 @@ 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",
		device_property_read_u32_array(dev, "pulses-per-revolution",
					       ctx->pulses_per_revolution, ctx->tach_count);
	}

@@ -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;