lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <517a6335-9246-4de6-aab4-24949eb7277f@cherry.de>
Date: Mon, 2 Jun 2025 15:21:31 +0200
From: Quentin Schulz <quentin.schulz@...rry.de>
To: João Paulo Gonçalves
 <jpaulo.silvagoncalves@...il.com>, Jean Delvare <jdelvare@...e.com>,
 Guenter Roeck <linux@...ck-us.net>, Rob Herring <robh@...nel.org>,
 Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley
 <conor+dt@...nel.org>, Farouk Bouabid <farouk.bouabid@...rry.de>
Cc: linux-hwmon@...r.kernel.org, devicetree@...r.kernel.org,
 linux-kernel@...r.kernel.org,
 João Paulo Gonçalves <joao.goncalves@...adex.com>
Subject: Re: [PATCH 2/3] hwmon: (amc6821) Move reading fan data from OF to a
 function

Hi João Paulo,

On 5/30/25 7:46 PM, João Paulo Gonçalves wrote:
> From: João Paulo Gonçalves <joao.goncalves@...adex.com>
> 
> Move fan property reading from OF to a separate function. This keeps OF
> data handling separate from the code logic and makes it easier to add
> features like cooling device support that use the same fan node.
> 
> Signed-off-by: João Paulo Gonçalves <joao.goncalves@...adex.com>
> ---
>   drivers/hwmon/amc6821.c | 58 +++++++++++++++++++++++++++++++------------------
>   1 file changed, 37 insertions(+), 21 deletions(-)
> 
> diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
> index 13a789cc85d24da282430eb2d4edf0003617fe6b..a969fad803ae1abb05113ce15f2476e83df029d9 100644
> --- a/drivers/hwmon/amc6821.c
> +++ b/drivers/hwmon/amc6821.c
> @@ -126,6 +126,7 @@ module_param(init, int, 0444);
>   struct amc6821_data {
>   	struct regmap *regmap;
>   	struct mutex update_lock;
> +	enum pwm_polarity of_pwm_polarity;

Do we actually need to keep the information about the OF polarity?

Are you trying to handle runtime modification of the pwminv module 
parameter where we could set it to -1 to force reading from the Device 
Tree again? This seems to be possible, c.f. https://lwn.net/Articles/85443/

Otherwise I would have said we just need to store the "computed" 
polarity, the output of amc6821_pwm_polarity instead of going through 
the logic every time we ask for the polarity.

Justify in the commit log why we want to keep the OF value instead of 
the resolved one (with the module param one).

[...]

> @@ -938,13 +935,21 @@ static const struct regmap_config amc6821_regmap_config = {
>   	.cache_type = REGCACHE_MAPLE,
>   };
>   
> +static void amc6821_of_fan_put(void *data)
> +{
> +	struct device_node *fan_np = data;
> +
> +	of_node_put(fan_np);
> +}
> +
>   static int amc6821_probe(struct i2c_client *client)
>   {
>   	struct device *dev = &client->dev;
>   	struct amc6821_data *data;
>   	struct device *hwmon_dev;
>   	struct regmap *regmap;
> -	int err;
> +	struct device_node *fan_np;
> +	int err = 0;
>   
>   	data = devm_kzalloc(dev, sizeof(struct amc6821_data), GFP_KERNEL);
>   	if (!data)
> @@ -956,6 +961,17 @@ static int amc6821_probe(struct i2c_client *client)
>   				     "Failed to initialize regmap\n");
>   	data->regmap = regmap;
>   
> +	fan_np = of_get_child_by_name(dev->of_node, "fan");
> +	if (fan_np)
> +		err = devm_add_action_or_reset(dev, amc6821_of_fan_put, fan_np);
> +

This seems a bit overkill to me. If I'm not mistaken, we should be able 
to do something simpler such as:

fan_np = of_get_child_by_name(dev->of_node, "fan");
if (fan_np) {
     amc6821_of_fan_read_data(data, fan_np);
     of_node_put(fan_np);
}

(not tested) what do you think? What made you pick the 
devm_add_action_or_reset here? What am I missing :)

Cheers,
Quentin

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ