* [PATCH v4 0/3] hwmon: (amc6821) Add cooling device support
@ 2025-06-13 13:42 João Paulo Gonçalves
2025-06-13 13:42 ` [PATCH v4 1/3] dt-bindings: hwmon: amc6821: Add cooling levels João Paulo Gonçalves
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: João Paulo Gonçalves @ 2025-06-13 13:42 UTC (permalink / raw)
To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Farouk Bouabid, Quentin Schulz
Cc: linux-hwmon, devicetree, linux-kernel,
João Paulo Gonçalves
Add support for using the AMC6821 as a cooling device. The AMC6821
registers with the thermal framework only if the `cooling-levels`
property is present in the fan device tree child node. If this property
is present, the driver assumes the fan will operate in open-loop, and
the kernel will control it directly. In this case, the driver will
change the AMC6821 mode to manual (software DCY) and set the initial PWM
duty cycle to the maximum fan cooling state level as defined in the DT.
It is worth mentioning that the cooling device is registered on the
child fan node, not on the fan controller node. Existing behavior is
unchanged, so the AMC6821 can still be used without the thermal
framework (hwmon only).
Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
---
v4:
- Fix uninitialized variable `err` on probe()
v3: https://lore.kernel.org/r/20250612-b4-amc6821-cooling-device-support-v3-0-360681a7652c@toradex.com/
- Fix using fan node after of_node_put() with scope based free
- Add setting the pwm duty cycle to max fan cooling state level on
initialization
v2: https://lore.kernel.org/lkml/20250603-b4-amc6821-cooling-device-support-v2-0-74943c889a2d@toradex.com/
- Remove devm_action on release and call of_node_put() manually
- Change of_pwm_polarity to store resulting pwm polarity on driver
private data
v1: https://lore.kernel.org/lkml/20250530-b4-v1-amc6821-cooling-device-support-b4-v1-0-7bb98496c969@toradex.com/
---
João Paulo Gonçalves (3):
dt-bindings: hwmon: amc6821: Add cooling levels
hwmon: (amc6821) Move reading fan data from OF to a function
hwmon: (amc6821) Add cooling device support
.../devicetree/bindings/hwmon/ti,amc6821.yaml | 6 +
drivers/hwmon/amc6821.c | 130 +++++++++++++++++++--
2 files changed, 127 insertions(+), 9 deletions(-)
---
base-commit: 78ca360f14d17f2c4dd4f3a1c9381b1c3451f4c8
change-id: 20250602-b4-amc6821-cooling-device-support-c03b0a899357
Best regards,
--
João Paulo Gonçalves <joao.goncalves@toradex.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v4 1/3] dt-bindings: hwmon: amc6821: Add cooling levels
2025-06-13 13:42 [PATCH v4 0/3] hwmon: (amc6821) Add cooling device support João Paulo Gonçalves
@ 2025-06-13 13:42 ` João Paulo Gonçalves
2025-06-13 14:36 ` Conor Dooley
2025-06-15 23:05 ` Guenter Roeck
2025-06-13 13:42 ` [PATCH v4 2/3] hwmon: (amc6821) Move reading fan data from OF to a function João Paulo Gonçalves
2025-06-13 13:42 ` [PATCH v4 3/3] hwmon: (amc6821) Add cooling device support João Paulo Gonçalves
2 siblings, 2 replies; 8+ messages in thread
From: João Paulo Gonçalves @ 2025-06-13 13:42 UTC (permalink / raw)
To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Farouk Bouabid, Quentin Schulz
Cc: linux-hwmon, devicetree, linux-kernel,
João Paulo Gonçalves
From: João Paulo Gonçalves <joao.goncalves@toradex.com>
The fan can be used as a cooling device, add a description of the
`cooling-levels` property and restrict the maximum value to 255, which
is the highest PWM duty cycle supported by the AMC6821 fan controller.
Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
---
v4: Unchanged
v3: https://lore.kernel.org/lkml/20250612-b4-amc6821-cooling-device-support-v3-0-360681a7652c@toradex.com/
v2: https://lore.kernel.org/lkml/20250603-b4-amc6821-cooling-device-support-v2-0-74943c889a2d@toradex.com/
v1: https://lore.kernel.org/lkml/20250530-b4-v1-amc6821-cooling-device-support-b4-v1-0-7bb98496c969@toradex.com/
---
Documentation/devicetree/bindings/hwmon/ti,amc6821.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/hwmon/ti,amc6821.yaml b/Documentation/devicetree/bindings/hwmon/ti,amc6821.yaml
index 9ca7356760a74b1ab5e6c5a4966ba30f050a1eed..eb00756988be158b104642707d96e371930c9fd7 100644
--- a/Documentation/devicetree/bindings/hwmon/ti,amc6821.yaml
+++ b/Documentation/devicetree/bindings/hwmon/ti,amc6821.yaml
@@ -32,6 +32,12 @@ properties:
$ref: fan-common.yaml#
unevaluatedProperties: false
+ properties:
+ cooling-levels:
+ description: PWM duty cycle values corresponding to thermal cooling states.
+ items:
+ maximum: 255
+
"#pwm-cells":
const: 2
description: |
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v4 2/3] hwmon: (amc6821) Move reading fan data from OF to a function
2025-06-13 13:42 [PATCH v4 0/3] hwmon: (amc6821) Add cooling device support João Paulo Gonçalves
2025-06-13 13:42 ` [PATCH v4 1/3] dt-bindings: hwmon: amc6821: Add cooling levels João Paulo Gonçalves
@ 2025-06-13 13:42 ` João Paulo Gonçalves
2025-06-15 23:06 ` Guenter Roeck
2025-06-13 13:42 ` [PATCH v4 3/3] hwmon: (amc6821) Add cooling device support João Paulo Gonçalves
2 siblings, 1 reply; 8+ messages in thread
From: João Paulo Gonçalves @ 2025-06-13 13:42 UTC (permalink / raw)
To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Farouk Bouabid, Quentin Schulz
Cc: linux-hwmon, devicetree, linux-kernel,
João Paulo Gonçalves
From: João Paulo Gonçalves <joao.goncalves@toradex.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@toradex.com>
---
v4: Unchanged
v3: https://lore.kernel.org/lkml/20250612-b4-amc6821-cooling-device-support-v3-0-360681a7652c@toradex.com/
- Change call to of_node_put() on fan node to be scope based
v2: https://lore.kernel.org/lkml/20250603-b4-amc6821-cooling-device-support-v2-0-74943c889a2d@toradex.com/
- Remove devm_action on release and call of_node_put() manually
- Change of_pwm_polarity to store resulting pwm polarity on driver private data
v1: https://lore.kernel.org/lkml/20250530-b4-v1-amc6821-cooling-device-support-b4-v1-0-7bb98496c969@toradex.com/
---
drivers/hwmon/amc6821.c | 24 ++++++++++++++++--------
1 file changed, 16 insertions(+), 8 deletions(-)
diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
index 13a789cc85d24da282430eb2d4edf0003617fe6b..612895db7d8d4096372310c9fa71c103d642dd07 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 pwm_polarity;
};
/*
@@ -848,11 +849,11 @@ static int amc6821_detect(struct i2c_client *client, struct i2c_board_info *info
return 0;
}
-static enum pwm_polarity amc6821_pwm_polarity(struct i2c_client *client)
+static enum pwm_polarity amc6821_pwm_polarity(struct i2c_client *client,
+ struct device_node *fan_np)
{
enum pwm_polarity polarity = PWM_POLARITY_NORMAL;
struct of_phandle_args args;
- struct device_node *fan_np;
/*
* For backward compatibility, the pwminv module parameter takes
@@ -863,10 +864,6 @@ static enum pwm_polarity amc6821_pwm_polarity(struct i2c_client *client)
if (pwminv > 0)
return PWM_POLARITY_INVERSED;
- fan_np = of_get_child_by_name(client->dev.of_node, "fan");
- if (!fan_np)
- return PWM_POLARITY_NORMAL;
-
if (of_parse_phandle_with_args(fan_np, "pwms", "#pwm-cells", 0, &args))
goto out;
of_node_put(args.np);
@@ -877,10 +874,16 @@ static enum pwm_polarity amc6821_pwm_polarity(struct i2c_client *client)
if (args.args[1] & PWM_POLARITY_INVERTED)
polarity = PWM_POLARITY_INVERSED;
out:
- of_node_put(fan_np);
return polarity;
}
+static void amc6821_of_fan_read_data(struct i2c_client *client,
+ struct amc6821_data *data,
+ struct device_node *fan_np)
+{
+ data->pwm_polarity = amc6821_pwm_polarity(client, fan_np);
+}
+
static int amc6821_init_client(struct i2c_client *client, struct amc6821_data *data)
{
struct regmap *regmap = data->regmap;
@@ -902,7 +905,7 @@ static int amc6821_init_client(struct i2c_client *client, struct amc6821_data *d
return err;
regval = AMC6821_CONF1_START;
- if (amc6821_pwm_polarity(client) == PWM_POLARITY_INVERSED)
+ if (data->pwm_polarity == PWM_POLARITY_INVERSED)
regval |= AMC6821_CONF1_PWMINV;
err = regmap_update_bits(regmap, AMC6821_REG_CONF1,
@@ -944,6 +947,7 @@ static int amc6821_probe(struct i2c_client *client)
struct amc6821_data *data;
struct device *hwmon_dev;
struct regmap *regmap;
+ struct device_node *fan_np __free(device_node) = NULL;
int err;
data = devm_kzalloc(dev, sizeof(struct amc6821_data), GFP_KERNEL);
@@ -956,6 +960,10 @@ 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)
+ amc6821_of_fan_read_data(client, data, fan_np);
+
err = amc6821_init_client(client, data);
if (err)
return err;
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v4 3/3] hwmon: (amc6821) Add cooling device support
2025-06-13 13:42 [PATCH v4 0/3] hwmon: (amc6821) Add cooling device support João Paulo Gonçalves
2025-06-13 13:42 ` [PATCH v4 1/3] dt-bindings: hwmon: amc6821: Add cooling levels João Paulo Gonçalves
2025-06-13 13:42 ` [PATCH v4 2/3] hwmon: (amc6821) Move reading fan data from OF to a function João Paulo Gonçalves
@ 2025-06-13 13:42 ` João Paulo Gonçalves
2025-06-15 23:08 ` Guenter Roeck
2 siblings, 1 reply; 8+ messages in thread
From: João Paulo Gonçalves @ 2025-06-13 13:42 UTC (permalink / raw)
To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Farouk Bouabid, Quentin Schulz
Cc: linux-hwmon, devicetree, linux-kernel,
João Paulo Gonçalves
From: João Paulo Gonçalves <joao.goncalves@toradex.com>
Add support for using the AMC6821 as a cooling device. The AMC6821
registers with the thermal framework only if the `cooling-levels`
property is present in the fan device tree child node. If this property
is present, the driver assumes the fan will operate in open-loop, and
the kernel will control it directly. In this case, the driver will
change the AMC6821 mode to manual (software DCY) and set the initial PWM
duty cycle to the maximum fan cooling state level as defined in the DT.
It is worth mentioning that the cooling device is registered on the
child fan node, not on the fan controller node. Existing behavior is
unchanged, so the AMC6821 can still be used without the thermal
framework (hwmon only).
Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
---
v4:
- Fix uninitialized variable `err` on probe()
v3: https://lore.kernel.org/lkml/20250612-b4-amc6821-cooling-device-support-v3-0-360681a7652c@toradex.com/
- Fix using fan node after of_node_put()
- Add setting the pwm duty cycle to max fan cooling state level on
initialization
v2: https://lore.kernel.org/lkml/20250603-b4-amc6821-cooling-device-support-v2-0-74943c889a2d@toradex.com/
v1: https://lore.kernel.org/lkml/20250530-b4-v1-amc6821-cooling-device-support-b4-v1-0-7bb98496c969@toradex.com/
---
drivers/hwmon/amc6821.c | 116 +++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 110 insertions(+), 6 deletions(-)
diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c
index 612895db7d8d4096372310c9fa71c103d642dd07..bca33090a93fd745b5c51ec404f671d07c2ba43c 100644
--- a/drivers/hwmon/amc6821.c
+++ b/drivers/hwmon/amc6821.c
@@ -26,6 +26,7 @@
#include <linux/pwm.h>
#include <linux/regmap.h>
#include <linux/slab.h>
+#include <linux/thermal.h>
#include <dt-bindings/pwm/pwm.h>
@@ -126,6 +127,9 @@ module_param(init, int, 0444);
struct amc6821_data {
struct regmap *regmap;
struct mutex update_lock;
+ unsigned long fan_state;
+ unsigned long fan_max_state;
+ unsigned int *fan_cooling_levels;
enum pwm_polarity pwm_polarity;
};
@@ -805,6 +809,65 @@ static const struct hwmon_chip_info amc6821_chip_info = {
.info = amc6821_info,
};
+static int amc6821_set_sw_dcy(struct amc6821_data *data, u8 duty_cycle)
+{
+ int ret;
+
+ ret = regmap_write(data->regmap, AMC6821_REG_DCY, duty_cycle);
+ if (ret)
+ return ret;
+
+ return regmap_update_bits(data->regmap, AMC6821_REG_CONF1,
+ AMC6821_CONF1_FDRC0 | AMC6821_CONF1_FDRC1, 0);
+}
+
+static int amc6821_get_max_state(struct thermal_cooling_device *cdev, unsigned long *state)
+{
+ struct amc6821_data *data = cdev->devdata;
+
+ if (!data)
+ return -EINVAL;
+
+ *state = data->fan_max_state;
+
+ return 0;
+}
+
+static int amc6821_get_cur_state(struct thermal_cooling_device *cdev, unsigned long *state)
+{
+ struct amc6821_data *data = cdev->devdata;
+
+ if (!data)
+ return -EINVAL;
+
+ *state = data->fan_state;
+
+ return 0;
+}
+
+static int amc6821_set_cur_state(struct thermal_cooling_device *cdev, unsigned long state)
+{
+ struct amc6821_data *data = cdev->devdata;
+ int ret;
+
+ if (!data || state > data->fan_max_state)
+ return -EINVAL;
+
+ ret = amc6821_set_sw_dcy(data, data->fan_cooling_levels[state]);
+ if (ret)
+ return ret;
+
+ data->fan_state = state;
+
+ return 0;
+}
+
+static const struct thermal_cooling_device_ops amc6821_cooling_ops = {
+ .get_max_state = amc6821_get_max_state,
+ .get_cur_state = amc6821_get_cur_state,
+ .set_cur_state = amc6821_set_cur_state,
+};
+
/* Return 0 if detection is successful, -ENODEV otherwise */
static int amc6821_detect(struct i2c_client *client, struct i2c_board_info *info)
{
@@ -877,11 +940,29 @@ static enum pwm_polarity amc6821_pwm_polarity(struct i2c_client *client,
return polarity;
}
-static void amc6821_of_fan_read_data(struct i2c_client *client,
- struct amc6821_data *data,
- struct device_node *fan_np)
+static int amc6821_of_fan_read_data(struct i2c_client *client,
+ struct amc6821_data *data,
+ struct device_node *fan_np)
{
+ int num;
+
data->pwm_polarity = amc6821_pwm_polarity(client, fan_np);
+
+ num = of_property_count_u32_elems(fan_np, "cooling-levels");
+ if (num <= 0)
+ return 0;
+
+ data->fan_max_state = num - 1;
+
+ data->fan_cooling_levels = devm_kcalloc(&client->dev, num,
+ sizeof(u32),
+ GFP_KERNEL);
+
+ if (!data->fan_cooling_levels)
+ return -ENOMEM;
+
+ return of_property_read_u32_array(fan_np, "cooling-levels",
+ data->fan_cooling_levels, num);
}
static int amc6821_init_client(struct i2c_client *client, struct amc6821_data *data)
@@ -914,6 +995,14 @@ static int amc6821_init_client(struct i2c_client *client, struct amc6821_data *d
regval);
if (err)
return err;
+
+ /* Software DCY-control mode with fan enabled when cooling-levels present */
+ if (data->fan_cooling_levels) {
+ err = amc6821_set_sw_dcy(data,
+ data->fan_cooling_levels[data->fan_max_state]);
+ if (err)
+ return err;
+ }
}
return 0;
}
@@ -961,8 +1050,12 @@ static int amc6821_probe(struct i2c_client *client)
data->regmap = regmap;
fan_np = of_get_child_by_name(dev->of_node, "fan");
- if (fan_np)
- amc6821_of_fan_read_data(client, data, fan_np);
+ if (fan_np) {
+ err = amc6821_of_fan_read_data(client, data, fan_np);
+ if (err)
+ return dev_err_probe(dev, err,
+ "Failed to read fan device tree data\n");
+ }
err = amc6821_init_client(client, data);
if (err)
@@ -978,7 +1071,18 @@ static int amc6821_probe(struct i2c_client *client)
hwmon_dev = devm_hwmon_device_register_with_info(dev, client->name,
data, &amc6821_chip_info,
amc6821_groups);
- return PTR_ERR_OR_ZERO(hwmon_dev);
+ if (IS_ERR(hwmon_dev))
+ return dev_err_probe(dev, PTR_ERR(hwmon_dev),
+ "Failed to initialize hwmon\n");
+
+ if (IS_ENABLED(CONFIG_THERMAL) && fan_np && data->fan_cooling_levels)
+ return PTR_ERR_OR_ZERO(devm_thermal_of_cooling_device_register(dev,
+ fan_np,
+ client->name,
+ data,
+ &amc6821_cooling_ops));
+
+ return 0;
}
static const struct i2c_device_id amc6821_id[] = {
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v4 1/3] dt-bindings: hwmon: amc6821: Add cooling levels
2025-06-13 13:42 ` [PATCH v4 1/3] dt-bindings: hwmon: amc6821: Add cooling levels João Paulo Gonçalves
@ 2025-06-13 14:36 ` Conor Dooley
2025-06-15 23:05 ` Guenter Roeck
1 sibling, 0 replies; 8+ messages in thread
From: Conor Dooley @ 2025-06-13 14:36 UTC (permalink / raw)
To: João Paulo Gonçalves
Cc: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Farouk Bouabid, Quentin Schulz, linux-hwmon,
devicetree, linux-kernel, João Paulo Gonçalves
[-- Attachment #1: Type: text/plain, Size: 478 bytes --]
On Fri, Jun 13, 2025 at 10:42:38AM -0300, João Paulo Gonçalves wrote:
> From: João Paulo Gonçalves <joao.goncalves@toradex.com>
>
> The fan can be used as a cooling device, add a description of the
> `cooling-levels` property and restrict the maximum value to 255, which
> is the highest PWM duty cycle supported by the AMC6821 fan controller.
>
> Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v4 1/3] dt-bindings: hwmon: amc6821: Add cooling levels
2025-06-13 13:42 ` [PATCH v4 1/3] dt-bindings: hwmon: amc6821: Add cooling levels João Paulo Gonçalves
2025-06-13 14:36 ` Conor Dooley
@ 2025-06-15 23:05 ` Guenter Roeck
1 sibling, 0 replies; 8+ messages in thread
From: Guenter Roeck @ 2025-06-15 23:05 UTC (permalink / raw)
To: João Paulo Gonçalves
Cc: Jean Delvare, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Farouk Bouabid, Quentin Schulz, linux-hwmon, devicetree,
linux-kernel, João Paulo Gonçalves
On Fri, Jun 13, 2025 at 10:42:38AM -0300, João Paulo Gonçalves wrote:
> From: João Paulo Gonçalves <joao.goncalves@toradex.com>
>
> The fan can be used as a cooling device, add a description of the
> `cooling-levels` property and restrict the maximum value to 255, which
> is the highest PWM duty cycle supported by the AMC6821 fan controller.
>
> Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
> Acked-by: Conor Dooley <conor.dooley@microchip.com>
Applied.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v4 2/3] hwmon: (amc6821) Move reading fan data from OF to a function
2025-06-13 13:42 ` [PATCH v4 2/3] hwmon: (amc6821) Move reading fan data from OF to a function João Paulo Gonçalves
@ 2025-06-15 23:06 ` Guenter Roeck
0 siblings, 0 replies; 8+ messages in thread
From: Guenter Roeck @ 2025-06-15 23:06 UTC (permalink / raw)
To: João Paulo Gonçalves
Cc: Jean Delvare, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Farouk Bouabid, Quentin Schulz, linux-hwmon, devicetree,
linux-kernel, João Paulo Gonçalves
On Fri, Jun 13, 2025 at 10:42:39AM -0300, João Paulo Gonçalves wrote:
> From: João Paulo Gonçalves <joao.goncalves@toradex.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@toradex.com>
Applied.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v4 3/3] hwmon: (amc6821) Add cooling device support
2025-06-13 13:42 ` [PATCH v4 3/3] hwmon: (amc6821) Add cooling device support João Paulo Gonçalves
@ 2025-06-15 23:08 ` Guenter Roeck
0 siblings, 0 replies; 8+ messages in thread
From: Guenter Roeck @ 2025-06-15 23:08 UTC (permalink / raw)
To: João Paulo Gonçalves
Cc: Jean Delvare, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Farouk Bouabid, Quentin Schulz, linux-hwmon, devicetree,
linux-kernel, João Paulo Gonçalves
On Fri, Jun 13, 2025 at 10:42:40AM -0300, João Paulo Gonçalves wrote:
> From: João Paulo Gonçalves <joao.goncalves@toradex.com>
>
> Add support for using the AMC6821 as a cooling device. The AMC6821
> registers with the thermal framework only if the `cooling-levels`
> property is present in the fan device tree child node. If this property
> is present, the driver assumes the fan will operate in open-loop, and
> the kernel will control it directly. In this case, the driver will
> change the AMC6821 mode to manual (software DCY) and set the initial PWM
> duty cycle to the maximum fan cooling state level as defined in the DT.
> It is worth mentioning that the cooling device is registered on the
> child fan node, not on the fan controller node. Existing behavior is
> unchanged, so the AMC6821 can still be used without the thermal
> framework (hwmon only).
>
> Signed-off-by: João Paulo Gonçalves <joao.goncalves@toradex.com>
Applied.
Thanks,
Guenter
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-06-15 23:08 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-13 13:42 [PATCH v4 0/3] hwmon: (amc6821) Add cooling device support João Paulo Gonçalves
2025-06-13 13:42 ` [PATCH v4 1/3] dt-bindings: hwmon: amc6821: Add cooling levels João Paulo Gonçalves
2025-06-13 14:36 ` Conor Dooley
2025-06-15 23:05 ` Guenter Roeck
2025-06-13 13:42 ` [PATCH v4 2/3] hwmon: (amc6821) Move reading fan data from OF to a function João Paulo Gonçalves
2025-06-15 23:06 ` Guenter Roeck
2025-06-13 13:42 ` [PATCH v4 3/3] hwmon: (amc6821) Add cooling device support João Paulo Gonçalves
2025-06-15 23:08 ` Guenter Roeck
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).