* [RFC PATCH v2 0/2] hwmon: emc2305: Support configurable fan PWM at shutdown
@ 2026-03-12 12:22 florin.leotescu
2026-03-12 12:22 ` [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property florin.leotescu
2026-03-12 12:22 ` [RFC PATCH v2 2/2] hwmon: emc2305: Support configurable fan PWM at shutdown florin.leotescu
0 siblings, 2 replies; 9+ messages in thread
From: florin.leotescu @ 2026-03-12 12:22 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Michael Shych, linux-hwmon, devicetree, linux-kernel
Cc: daniel.baluta, viorel.suman, linux-arm-kernel, imx, festevam,
Florin Leotescu
From: Florin Leotescu <florin.leotescu@nxp.com>
This series adds support for configuring the fan PWM duty cycle applied
during system shutdown for the EMC2305 fan controller.
Some platforms require fans to transition to a predefined safe state
during shutdown or reboot handoff until firmware or the next boot stage
reconfigures the controller.
The new optional Device Tree property "fan-shutdown-percent" allows the
shutdown PWM duty cycle to be configured per fan output.
Changes in v2:
- Address feedback from Guenter Roeck
- Make shutdown behavior configurable via Device Tree
- Add optional fan-shutdown-percent property
- Apply shutdown PWM only for channels defining the property
Florin Leotescu (2):
dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property
hwmon: emc2305: Support configurable fan PWM at shutdown
.../bindings/hwmon/microchip,emc2305.yaml | 8 +++++
drivers/hwmon/emc2305.c | 35 +++++++++++++++++++
2 files changed, 43 insertions(+)
--
2.34.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property
2026-03-12 12:22 [RFC PATCH v2 0/2] hwmon: emc2305: Support configurable fan PWM at shutdown florin.leotescu
@ 2026-03-12 12:22 ` florin.leotescu
2026-03-12 17:37 ` Conor Dooley
2026-03-12 12:22 ` [RFC PATCH v2 2/2] hwmon: emc2305: Support configurable fan PWM at shutdown florin.leotescu
1 sibling, 1 reply; 9+ messages in thread
From: florin.leotescu @ 2026-03-12 12:22 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Michael Shych, linux-hwmon, devicetree, linux-kernel
Cc: daniel.baluta, viorel.suman, linux-arm-kernel, imx, festevam,
Florin Leotescu
From: Florin Leotescu <florin.leotescu@nxp.com>
The EMC2305 fan controller supports multiple independent PWM fan
outputs. Some systems require fans to enter a defined safe state
during system shutdown or reboot handoff, until firmware or the next
boot stage reconfigures the controller.
Add an optional "fan-shutdown-percent" property to fan child nodes
allowing the shutdown fan speed to be configured per fan output.
Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
---
.../devicetree/bindings/hwmon/microchip,emc2305.yaml | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
index d3f06ebc19fa..7bcadfab9fc4 100644
--- a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
+++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
@@ -54,6 +54,12 @@ patternProperties:
The fan number used to determine the associated PWM channel.
maxItems: 1
+ fan-shutdown-percent:
+ description:
+ Fan RPM in percent set during shutdown.
+ minimum: 0
+ maximum: 100
+
required:
- reg
@@ -80,12 +86,14 @@ examples:
fan@0 {
reg = <0x0>;
pwms = <&fan_controller 26000 PWM_POLARITY_INVERTED 1>;
+ fan-shutdown-percent = <100>;
#cooling-cells = <2>;
};
fan@1 {
reg = <0x1>;
pwms = <&fan_controller 26000 0 1>;
+ fan-shutdown-percent = <50>;
#cooling-cells = <2>;
};
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [RFC PATCH v2 2/2] hwmon: emc2305: Support configurable fan PWM at shutdown
2026-03-12 12:22 [RFC PATCH v2 0/2] hwmon: emc2305: Support configurable fan PWM at shutdown florin.leotescu
2026-03-12 12:22 ` [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property florin.leotescu
@ 2026-03-12 12:22 ` florin.leotescu
2026-03-12 14:34 ` Florin Leotescu
1 sibling, 1 reply; 9+ messages in thread
From: florin.leotescu @ 2026-03-12 12:22 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Michael Shych, linux-hwmon, devicetree, linux-kernel
Cc: daniel.baluta, viorel.suman, linux-arm-kernel, imx, festevam,
Florin Leotescu
From: Florin Leotescu <florin.leotescu@nxp.com>
Some systems require fans to enter in a defined safe state during system
shutdown or reboot handoff.
Add support for the optional Device Tree property "fan-shutdown-percent"
to configure the shutdown PWM duty cycle per fan output.
If the property is present for a fan channel, the driver converts the
configured percentage value to the corresponding PWM duty cycle and
applies it during driver shutdown.
If the property is not present, the fan state remains unchanged.
Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
---
drivers/hwmon/emc2305.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c
index 60809289f816..1fb5eac75f4a 100644
--- a/drivers/hwmon/emc2305.c
+++ b/drivers/hwmon/emc2305.c
@@ -32,6 +32,7 @@
#define EMC2305_REG_DRIVE_PWM_OUT 0x2b
#define EMC2305_OPEN_DRAIN 0x0
#define EMC2305_PUSH_PULL 0x1
+#define EMC2305_PWM_SHUTDOWN_UNSET -1
#define EMC2305_PWM_DUTY2STATE(duty, max_state, pwm_max) \
DIV_ROUND_CLOSEST((duty) * (max_state), (pwm_max))
@@ -104,6 +105,7 @@ struct emc2305_cdev_data {
* @pwm_output_mask: PWM output mask
* @pwm_polarity_mask: PWM polarity mask
* @pwm_separate: separate PWM settings for every channel
+ * @pwm_shutdown: Set shutdown PWM.
* @pwm_min: array of minimum PWM per channel
* @pwm_freq: array of PWM frequency per channel
* @cdev_data: array of cooling devices data
@@ -116,6 +118,7 @@ struct emc2305_data {
u8 pwm_output_mask;
u8 pwm_polarity_mask;
bool pwm_separate;
+ s16 pwm_shutdown[EMC2305_PWM_MAX];
u8 pwm_min[EMC2305_PWM_MAX];
u16 pwm_freq[EMC2305_PWM_MAX];
struct emc2305_cdev_data cdev_data[EMC2305_PWM_MAX];
@@ -539,6 +542,7 @@ static int emc2305_of_parse_pwm_child(struct device *dev,
struct device_node *child,
struct emc2305_data *data)
{ u32 ch;
+ u32 pwm_shutdown_percent;
int ret;
struct of_phandle_args args;
@@ -578,6 +582,19 @@ static int emc2305_of_parse_pwm_child(struct device *dev,
data->pwm_output_mask |= EMC2305_OPEN_DRAIN << ch;
}
+ of_node_put(args.np);
+
+ ret = of_property_read_u32(child, "fan-shutdown-percent",
+ &pwm_shutdown_percent);
+
+ data->pwm_shutdown[ch] = EMC2305_PWM_SHUTDOWN_UNSET;
+
+ if (!ret) {
+ pwm_shutdown_percent = clamp(pwm_shutdown_percent, 0, 100);
+ data->pwm_shutdown[ch] =
+ DIV_ROUND_CLOSEST(pwm_shutdown_percent * EMC2305_FAN_MAX, 100);
+ }
+
return 0;
}
@@ -716,6 +733,23 @@ static int emc2305_probe(struct i2c_client *client)
return 0;
}
+static void emc2305_shutdown(struct i2c_client *client)
+{
+ int i;
+ int ret;
+ struct emc2305_data *data = i2c_get_clientdata(client);
+
+ for (i = 0; i < data->pwm_num; i++) {
+ if (data->pwm_shutdown[i] != EMC2305_PWM_SHUTDOWN_UNSET) {
+ ret = i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_DRIVE(i),
+ data->pwm_shutdown[i]);
+ if (ret < 0)
+ dev_warn(&client->dev,
+ "Failed to set shutdown PWM for ch %d\n", i);
+ }
+ }
+}
+
static const struct of_device_id of_emc2305_match_table[] = {
{ .compatible = "microchip,emc2305", },
{},
@@ -728,6 +762,7 @@ static struct i2c_driver emc2305_driver = {
.of_match_table = of_emc2305_match_table,
},
.probe = emc2305_probe,
+ .shutdown = emc2305_shutdown,
.id_table = emc2305_ids,
};
--
2.34.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [RFC PATCH v2 2/2] hwmon: emc2305: Support configurable fan PWM at shutdown
2026-03-12 12:22 ` [RFC PATCH v2 2/2] hwmon: emc2305: Support configurable fan PWM at shutdown florin.leotescu
@ 2026-03-12 14:34 ` Florin Leotescu
0 siblings, 0 replies; 9+ messages in thread
From: Florin Leotescu @ 2026-03-12 14:34 UTC (permalink / raw)
To: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Michael Shych, linux-hwmon, devicetree, linux-kernel
Cc: daniel.baluta, viorel.suman, linux-arm-kernel, imx, festevam,
Florin Leotescu
Hi,
The previous version was based on an outdated local branch and
included the of_node_put(child) fix, which is already upstream.
I'll resend a cleaned-up v3 rebased on current upstream.
On Thu, Mar 12, 2026 at 02:22:48PM +0200, florin.leotescu@oss.nxp.com wrote:
> From: Florin Leotescu <florin.leotescu@nxp.com>
>
> Some systems require fans to enter in a defined safe state during system
> shutdown or reboot handoff.
>
> Add support for the optional Device Tree property "fan-shutdown-percent"
> to configure the shutdown PWM duty cycle per fan output.
>
> If the property is present for a fan channel, the driver converts the
> configured percentage value to the corresponding PWM duty cycle and
> applies it during driver shutdown.
>
> If the property is not present, the fan state remains unchanged.
>
> Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> ---
> drivers/hwmon/emc2305.c | 35 +++++++++++++++++++++++++++++++++++
> 1 file changed, 35 insertions(+)
>
> diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c
> index 60809289f816..1fb5eac75f4a 100644
> --- a/drivers/hwmon/emc2305.c
> +++ b/drivers/hwmon/emc2305.c
> @@ -32,6 +32,7 @@
> #define EMC2305_REG_DRIVE_PWM_OUT 0x2b
> #define EMC2305_OPEN_DRAIN 0x0
> #define EMC2305_PUSH_PULL 0x1
> +#define EMC2305_PWM_SHUTDOWN_UNSET -1
>
> #define EMC2305_PWM_DUTY2STATE(duty, max_state, pwm_max) \
> DIV_ROUND_CLOSEST((duty) * (max_state), (pwm_max))
> @@ -104,6 +105,7 @@ struct emc2305_cdev_data {
> * @pwm_output_mask: PWM output mask
> * @pwm_polarity_mask: PWM polarity mask
> * @pwm_separate: separate PWM settings for every channel
> + * @pwm_shutdown: Set shutdown PWM.
> * @pwm_min: array of minimum PWM per channel
> * @pwm_freq: array of PWM frequency per channel
> * @cdev_data: array of cooling devices data
> @@ -116,6 +118,7 @@ struct emc2305_data {
> u8 pwm_output_mask;
> u8 pwm_polarity_mask;
> bool pwm_separate;
> + s16 pwm_shutdown[EMC2305_PWM_MAX];
> u8 pwm_min[EMC2305_PWM_MAX];
> u16 pwm_freq[EMC2305_PWM_MAX];
> struct emc2305_cdev_data cdev_data[EMC2305_PWM_MAX];
> @@ -539,6 +542,7 @@ static int emc2305_of_parse_pwm_child(struct device *dev,
> struct device_node *child,
> struct emc2305_data *data)
> { u32 ch;
> + u32 pwm_shutdown_percent;
> int ret;
> struct of_phandle_args args;
>
> @@ -578,6 +582,19 @@ static int emc2305_of_parse_pwm_child(struct device *dev,
> data->pwm_output_mask |= EMC2305_OPEN_DRAIN << ch;
> }
>
> + of_node_put(args.np);
> +
> + ret = of_property_read_u32(child, "fan-shutdown-percent",
> + &pwm_shutdown_percent);
> +
> + data->pwm_shutdown[ch] = EMC2305_PWM_SHUTDOWN_UNSET;
> +
> + if (!ret) {
> + pwm_shutdown_percent = clamp(pwm_shutdown_percent, 0, 100);
> + data->pwm_shutdown[ch] =
> + DIV_ROUND_CLOSEST(pwm_shutdown_percent * EMC2305_FAN_MAX, 100);
> + }
> +
> return 0;
> }
>
> @@ -716,6 +733,23 @@ static int emc2305_probe(struct i2c_client *client)
> return 0;
> }
>
> +static void emc2305_shutdown(struct i2c_client *client)
> +{
> + int i;
> + int ret;
> + struct emc2305_data *data = i2c_get_clientdata(client);
> +
> + for (i = 0; i < data->pwm_num; i++) {
> + if (data->pwm_shutdown[i] != EMC2305_PWM_SHUTDOWN_UNSET) {
> + ret = i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_DRIVE(i),
> + data->pwm_shutdown[i]);
> + if (ret < 0)
> + dev_warn(&client->dev,
> + "Failed to set shutdown PWM for ch %d\n", i);
> + }
> + }
> +}
> +
> static const struct of_device_id of_emc2305_match_table[] = {
> { .compatible = "microchip,emc2305", },
> {},
> @@ -728,6 +762,7 @@ static struct i2c_driver emc2305_driver = {
> .of_match_table = of_emc2305_match_table,
> },
> .probe = emc2305_probe,
> + .shutdown = emc2305_shutdown,
> .id_table = emc2305_ids,
> };
>
> --
> 2.34.1
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property
2026-03-12 12:22 ` [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property florin.leotescu
@ 2026-03-12 17:37 ` Conor Dooley
2026-03-13 17:14 ` Florin Leotescu
0 siblings, 1 reply; 9+ messages in thread
From: Conor Dooley @ 2026-03-12 17:37 UTC (permalink / raw)
To: florin.leotescu
Cc: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Michael Shych, linux-hwmon, devicetree, linux-kernel,
daniel.baluta, viorel.suman, linux-arm-kernel, imx, festevam,
Florin Leotescu
[-- Attachment #1: Type: text/plain, Size: 2028 bytes --]
On Thu, Mar 12, 2026 at 02:22:47PM +0200, florin.leotescu@oss.nxp.com wrote:
> From: Florin Leotescu <florin.leotescu@nxp.com>
>
> The EMC2305 fan controller supports multiple independent PWM fan
> outputs. Some systems require fans to enter a defined safe state
> during system shutdown or reboot handoff, until firmware or the next
> boot stage reconfigures the controller.
>
> Add an optional "fan-shutdown-percent" property to fan child nodes
> allowing the shutdown fan speed to be configured per fan output.
>
> Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> ---
> .../devicetree/bindings/hwmon/microchip,emc2305.yaml | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> index d3f06ebc19fa..7bcadfab9fc4 100644
> --- a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> @@ -54,6 +54,12 @@ patternProperties:
> The fan number used to determine the associated PWM channel.
> maxItems: 1
>
> + fan-shutdown-percent:
> + description:
> + Fan RPM in percent set during shutdown.
This sounds like something generic, that other devices might need and
should be in fan-common.yaml?
> + minimum: 0
> + maximum: 100
> +
> required:
> - reg
>
> @@ -80,12 +86,14 @@ examples:
> fan@0 {
> reg = <0x0>;
> pwms = <&fan_controller 26000 PWM_POLARITY_INVERTED 1>;
> + fan-shutdown-percent = <100>;
> #cooling-cells = <2>;
> };
>
> fan@1 {
> reg = <0x1>;
> pwms = <&fan_controller 26000 0 1>;
> + fan-shutdown-percent = <50>;
> #cooling-cells = <2>;
> };
>
> --
> 2.34.1
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property
2026-03-12 17:37 ` Conor Dooley
@ 2026-03-13 17:14 ` Florin Leotescu
2026-03-13 17:38 ` Conor Dooley
0 siblings, 1 reply; 9+ messages in thread
From: Florin Leotescu @ 2026-03-13 17:14 UTC (permalink / raw)
To: Conor Dooley
Cc: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Michael Shych, linux-hwmon, devicetree, linux-kernel,
daniel.baluta, viorel.suman, linux-arm-kernel, imx, festevam,
Florin Leotescu
On Thu, Mar 12, 2026 at 05:37:51PM +0000, Conor Dooley wrote:
> On Thu, Mar 12, 2026 at 02:22:47PM +0200, florin.leotescu@oss.nxp.com wrote:
> > From: Florin Leotescu <florin.leotescu@nxp.com>
> >
> > The EMC2305 fan controller supports multiple independent PWM fan
> > outputs. Some systems require fans to enter a defined safe state
> > during system shutdown or reboot handoff, until firmware or the next
> > boot stage reconfigures the controller.
> >
> > Add an optional "fan-shutdown-percent" property to fan child nodes
> > allowing the shutdown fan speed to be configured per fan output.
> >
> > Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> > ---
> > .../devicetree/bindings/hwmon/microchip,emc2305.yaml | 8 ++++++++
> > 1 file changed, 8 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > index d3f06ebc19fa..7bcadfab9fc4 100644
> > --- a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > @@ -54,6 +54,12 @@ patternProperties:
> > The fan number used to determine the associated PWM channel.
> > maxItems: 1
> >
> > + fan-shutdown-percent:
> > + description:
> > + Fan RPM in percent set during shutdown.
>
> This sounds like something generic, that other devices might need and
> should be in fan-common.yaml?
>
Thanks for the feedback.
The property name was reused from pwm-fan.yaml where it already exists
with the same meaning. I kept it local to minimize the scope of the change.
However, if you prefer it to be modelled as a common property, I can adjust it in the next revision.
> > + minimum: 0
> > + maximum: 100
> > +
> > required:
> > - reg
> >
> > @@ -80,12 +86,14 @@ examples:
> > fan@0 {
> > reg = <0x0>;
> > pwms = <&fan_controller 26000 PWM_POLARITY_INVERTED 1>;
> > + fan-shutdown-percent = <100>;
> > #cooling-cells = <2>;
> > };
> >
> > fan@1 {
> > reg = <0x1>;
> > pwms = <&fan_controller 26000 0 1>;
> > + fan-shutdown-percent = <50>;
> > #cooling-cells = <2>;
> > };
> >
> > --
> > 2.34.1
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property
2026-03-13 17:14 ` Florin Leotescu
@ 2026-03-13 17:38 ` Conor Dooley
2026-03-13 18:12 ` Guenter Roeck
0 siblings, 1 reply; 9+ messages in thread
From: Conor Dooley @ 2026-03-13 17:38 UTC (permalink / raw)
To: Florin Leotescu
Cc: Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Michael Shych, linux-hwmon, devicetree, linux-kernel,
daniel.baluta, viorel.suman, linux-arm-kernel, imx, festevam,
Florin Leotescu
[-- Attachment #1: Type: text/plain, Size: 3027 bytes --]
On Fri, Mar 13, 2026 at 07:14:33PM +0200, Florin Leotescu wrote:
> On Thu, Mar 12, 2026 at 05:37:51PM +0000, Conor Dooley wrote:
> > On Thu, Mar 12, 2026 at 02:22:47PM +0200, florin.leotescu@oss.nxp.com wrote:
> > > From: Florin Leotescu <florin.leotescu@nxp.com>
> > >
> > > The EMC2305 fan controller supports multiple independent PWM fan
> > > outputs. Some systems require fans to enter a defined safe state
> > > during system shutdown or reboot handoff, until firmware or the next
> > > boot stage reconfigures the controller.
> > >
> > > Add an optional "fan-shutdown-percent" property to fan child nodes
> > > allowing the shutdown fan speed to be configured per fan output.
> > >
> > > Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> > > ---
> > > .../devicetree/bindings/hwmon/microchip,emc2305.yaml | 8 ++++++++
> > > 1 file changed, 8 insertions(+)
> > >
> > > diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > > index d3f06ebc19fa..7bcadfab9fc4 100644
> > > --- a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > > +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > > @@ -54,6 +54,12 @@ patternProperties:
> > > The fan number used to determine the associated PWM channel.
> > > maxItems: 1
> > >
> > > + fan-shutdown-percent:
> > > + description:
> > > + Fan RPM in percent set during shutdown.
> >
> > This sounds like something generic, that other devices might need and
> > should be in fan-common.yaml?
> >
> Thanks for the feedback.
>
> The property name was reused from pwm-fan.yaml where it already exists
> with the same meaning. I kept it local to minimize the scope of the change.
>
> However, if you prefer it to be modelled as a common property, I can adjust it in the next revision.
I see. Makes me wonder why half the properties in pwm-fan aren't also in
fan-common.
I suppose there's a reason for it, carry on I guess.. Can be lifted if
there are more users other than you and pwm-fan.
> > > + minimum: 0
> > > + maximum: 100
> > > +
> > > required:
> > > - reg
> > >
> > > @@ -80,12 +86,14 @@ examples:
> > > fan@0 {
> > > reg = <0x0>;
> > > pwms = <&fan_controller 26000 PWM_POLARITY_INVERTED 1>;
> > > + fan-shutdown-percent = <100>;
Also leads to the question of why these devices aren't pwm-fans. Too
late now to change anything, I just wanna understand why.
> > > #cooling-cells = <2>;
> > > };
> > >
> > > fan@1 {
> > > reg = <0x1>;
> > > pwms = <&fan_controller 26000 0 1>;
> > > + fan-shutdown-percent = <50>;
> > > #cooling-cells = <2>;
> > > };
> > >
> > > --
> > > 2.34.1
> > >
>
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property
2026-03-13 17:38 ` Conor Dooley
@ 2026-03-13 18:12 ` Guenter Roeck
2026-03-13 20:55 ` Conor Dooley
0 siblings, 1 reply; 9+ messages in thread
From: Guenter Roeck @ 2026-03-13 18:12 UTC (permalink / raw)
To: Conor Dooley, Florin Leotescu
Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Michael Shych,
linux-hwmon, devicetree, linux-kernel, daniel.baluta,
viorel.suman, linux-arm-kernel, imx, festevam, Florin Leotescu
On 3/13/26 10:38, Conor Dooley wrote:
> On Fri, Mar 13, 2026 at 07:14:33PM +0200, Florin Leotescu wrote:
>> On Thu, Mar 12, 2026 at 05:37:51PM +0000, Conor Dooley wrote:
>>> On Thu, Mar 12, 2026 at 02:22:47PM +0200, florin.leotescu@oss.nxp.com wrote:
>>>> From: Florin Leotescu <florin.leotescu@nxp.com>
>>>>
>>>> The EMC2305 fan controller supports multiple independent PWM fan
>>>> outputs. Some systems require fans to enter a defined safe state
>>>> during system shutdown or reboot handoff, until firmware or the next
>>>> boot stage reconfigures the controller.
>>>>
>>>> Add an optional "fan-shutdown-percent" property to fan child nodes
>>>> allowing the shutdown fan speed to be configured per fan output.
>>>>
>>>> Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
>>>> ---
>>>> .../devicetree/bindings/hwmon/microchip,emc2305.yaml | 8 ++++++++
>>>> 1 file changed, 8 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
>>>> index d3f06ebc19fa..7bcadfab9fc4 100644
>>>> --- a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
>>>> +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
>>>> @@ -54,6 +54,12 @@ patternProperties:
>>>> The fan number used to determine the associated PWM channel.
>>>> maxItems: 1
>>>>
>>>> + fan-shutdown-percent:
>>>> + description:
>>>> + Fan RPM in percent set during shutdown.
>>>
>>> This sounds like something generic, that other devices might need and
>>> should be in fan-common.yaml?
>>>
>> Thanks for the feedback.
>>
>> The property name was reused from pwm-fan.yaml where it already exists
>> with the same meaning. I kept it local to minimize the scope of the change.
>>
>> However, if you prefer it to be modelled as a common property, I can adjust it in the next revision.
>
> I see. Makes me wonder why half the properties in pwm-fan aren't also in
> fan-common.
>
> I suppose there's a reason for it, carry on I guess.. Can be lifted if
> there are more users other than you and pwm-fan.
>
>>>> + minimum: 0
>>>> + maximum: 100
>>>> +
>>>> required:
>>>> - reg
>>>>
>>>> @@ -80,12 +86,14 @@ examples:
>>>> fan@0 {
>>>> reg = <0x0>;
>>>> pwms = <&fan_controller 26000 PWM_POLARITY_INVERTED 1>;
>>>> + fan-shutdown-percent = <100>;
>
> Also leads to the question of why these devices aren't pwm-fans. Too
> late now to change anything, I just wanna understand why.
>
They are dedicated fan controllers, with an internal tach -> pwm feedback
loop. I don't mind modeling them as pwm controllers if there is a use case
(such as someone using a PWM output to control a LED), but I don't even know
how modeling them as pwm fans using the pwm-fan compatible would even be
possible since that would exclude the tach -> pwm feedback loop.
Also, if that were to be done, we might end up with two hwmon drivers
for one chip: one to report the fan speed, and one to report pwm values.
On top of that, even if it is not currently supported by the driver,
controlling the tach -> pwm feedback loop would become awkward.
Yes, I understand, there is a strong push to model everything with
a pwm output as pwm controller, but si far no one was able to describe
to me how to model a fan controller, and especially its feedback loop,
in such a scenario. That becomes even more complicated if temperatures
are used to control the feedback loop.
Guenter
>>>> #cooling-cells = <2>;
>>>> };
>>>>
>>>> fan@1 {
>>>> reg = <0x1>;
>>>> pwms = <&fan_controller 26000 0 1>;
>>>> + fan-shutdown-percent = <50>;
>>>> #cooling-cells = <2>;
>>>> };
>>>>
>>>> --
>>>> 2.34.1
>>>>
>>
>>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property
2026-03-13 18:12 ` Guenter Roeck
@ 2026-03-13 20:55 ` Conor Dooley
0 siblings, 0 replies; 9+ messages in thread
From: Conor Dooley @ 2026-03-13 20:55 UTC (permalink / raw)
To: Guenter Roeck
Cc: Florin Leotescu, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Michael Shych, linux-hwmon, devicetree, linux-kernel,
daniel.baluta, viorel.suman, linux-arm-kernel, imx, festevam,
Florin Leotescu
[-- Attachment #1: Type: text/plain, Size: 4317 bytes --]
On Fri, Mar 13, 2026 at 11:12:26AM -0700, Guenter Roeck wrote:
> On 3/13/26 10:38, Conor Dooley wrote:
> > On Fri, Mar 13, 2026 at 07:14:33PM +0200, Florin Leotescu wrote:
> > > On Thu, Mar 12, 2026 at 05:37:51PM +0000, Conor Dooley wrote:
> > > > On Thu, Mar 12, 2026 at 02:22:47PM +0200, florin.leotescu@oss.nxp.com wrote:
> > > > > From: Florin Leotescu <florin.leotescu@nxp.com>
> > > > >
> > > > > The EMC2305 fan controller supports multiple independent PWM fan
> > > > > outputs. Some systems require fans to enter a defined safe state
> > > > > during system shutdown or reboot handoff, until firmware or the next
> > > > > boot stage reconfigures the controller.
> > > > >
> > > > > Add an optional "fan-shutdown-percent" property to fan child nodes
> > > > > allowing the shutdown fan speed to be configured per fan output.
> > > > >
> > > > > Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
> > > > > ---
> > > > > .../devicetree/bindings/hwmon/microchip,emc2305.yaml | 8 ++++++++
> > > > > 1 file changed, 8 insertions(+)
> > > > >
> > > > > diff --git a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > > > > index d3f06ebc19fa..7bcadfab9fc4 100644
> > > > > --- a/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > > > > +++ b/Documentation/devicetree/bindings/hwmon/microchip,emc2305.yaml
> > > > > @@ -54,6 +54,12 @@ patternProperties:
> > > > > The fan number used to determine the associated PWM channel.
> > > > > maxItems: 1
> > > > > + fan-shutdown-percent:
> > > > > + description:
> > > > > + Fan RPM in percent set during shutdown.
> > > >
> > > > This sounds like something generic, that other devices might need and
> > > > should be in fan-common.yaml?
> > > >
> > > Thanks for the feedback.
> > >
> > > The property name was reused from pwm-fan.yaml where it already exists
> > > with the same meaning. I kept it local to minimize the scope of the change.
> > >
> > > However, if you prefer it to be modelled as a common property, I can adjust it in the next revision.
> >
> > I see. Makes me wonder why half the properties in pwm-fan aren't also in
> > fan-common.
> >
> > I suppose there's a reason for it, carry on I guess.. Can be lifted if
> > there are more users other than you and pwm-fan.
> >
> > > > > + minimum: 0
> > > > > + maximum: 100
> > > > > +
> > > > > required:
> > > > > - reg
> > > > > @@ -80,12 +86,14 @@ examples:
> > > > > fan@0 {
> > > > > reg = <0x0>;
> > > > > pwms = <&fan_controller 26000 PWM_POLARITY_INVERTED 1>;
> > > > > + fan-shutdown-percent = <100>;
> >
> > Also leads to the question of why these devices aren't pwm-fans. Too
> > late now to change anything, I just wanna understand why.
> >
>
> They are dedicated fan controllers, with an internal tach -> pwm feedback
> loop. I don't mind modeling them as pwm controllers if there is a use case
> (such as someone using a PWM output to control a LED), but I don't even know
> how modeling them as pwm fans using the pwm-fan compatible would even be
> possible since that would exclude the tach -> pwm feedback loop.
>
> Also, if that were to be done, we might end up with two hwmon drivers
> for one chip: one to report the fan speed, and one to report pwm values.
> On top of that, even if it is not currently supported by the driver,
> controlling the tach -> pwm feedback loop would become awkward.
>
> Yes, I understand, there is a strong push to model everything with
> a pwm output as pwm controller, but si far no one was able to describe
> to me how to model a fan controller, and especially its feedback loop,
> in such a scenario. That becomes even more complicated if temperatures
> are used to control the feedback loop.
FWIW, my wording choice was poor here. I said that it was too late to
change anything in an attempt to convey that I didn't want it to be
changed, but it came across as implying that it was wrong.
I just wanted to know why it was the way it was, not change it.
Thanks for the info you provided, that's useful.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-03-13 20:55 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-12 12:22 [RFC PATCH v2 0/2] hwmon: emc2305: Support configurable fan PWM at shutdown florin.leotescu
2026-03-12 12:22 ` [RFC PATCH v2 1/2] dt-bindings: hwmon: emc2305: Add fan-shutdown-percent property florin.leotescu
2026-03-12 17:37 ` Conor Dooley
2026-03-13 17:14 ` Florin Leotescu
2026-03-13 17:38 ` Conor Dooley
2026-03-13 18:12 ` Guenter Roeck
2026-03-13 20:55 ` Conor Dooley
2026-03-12 12:22 ` [RFC PATCH v2 2/2] hwmon: emc2305: Support configurable fan PWM at shutdown florin.leotescu
2026-03-12 14:34 ` Florin Leotescu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox