* [PATCH v4 0/2] hwmon: (amc6821) Add PWM polarity configuration with OF @ 2025-04-02 10:21 Francesco Dolcini 2025-04-02 10:21 ` [PATCH v4 1/2] dt-bindings: hwmon: amc6821: add fan and PWM output Francesco Dolcini 2025-04-02 10:21 ` [PATCH v4 2/2] hwmon: (amc6821) Add PWM polarity configuration with OF Francesco Dolcini 0 siblings, 2 replies; 7+ messages in thread From: Francesco Dolcini @ 2025-04-02 10:21 UTC (permalink / raw) To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Farouk Bouabid, Quentin Schulz Cc: Francesco Dolcini, linux-hwmon, devicetree, linux-kernel From: Francesco Dolcini <francesco.dolcini@toradex.com> Add support for configuring the PWM polarity of the amc6821 fan controller. Francesco Dolcini (2): dt-bindings: hwmon: amc6821: add fan and PWM output hwmon: (amc6821) Add PWM polarity configuration with OF .../devicetree/bindings/hwmon/ti,amc6821.yaml | 18 ++++++- drivers/hwmon/amc6821.c | 50 +++++++++++++++++-- 2 files changed, 62 insertions(+), 6 deletions(-) -- 2.39.5 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 1/2] dt-bindings: hwmon: amc6821: add fan and PWM output 2025-04-02 10:21 [PATCH v4 0/2] hwmon: (amc6821) Add PWM polarity configuration with OF Francesco Dolcini @ 2025-04-02 10:21 ` Francesco Dolcini 2025-04-02 14:31 ` Rob Herring (Arm) 2025-04-02 16:15 ` Guenter Roeck 2025-04-02 10:21 ` [PATCH v4 2/2] hwmon: (amc6821) Add PWM polarity configuration with OF Francesco Dolcini 1 sibling, 2 replies; 7+ messages in thread From: Francesco Dolcini @ 2025-04-02 10:21 UTC (permalink / raw) To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Farouk Bouabid, Quentin Schulz Cc: Francesco Dolcini, linux-hwmon, devicetree, linux-kernel From: Francesco Dolcini <francesco.dolcini@toradex.com> Add properties to describe the fan and the PWM controller output. Link: https://www.ti.com/lit/gpn/amc6821 Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> --- v4: - add #pwm-cells description - remove useless first #pwm-cells, that was supposed to be the instance number v3: https://lore.kernel.org/all/20250331155229.147879-2-francesco@dolcini.it/ - explicitly describe the fan, use standard PWM and FAN bindings - pwm.yaml cannot be referenced, because of the $nodename pattern that is enforced there v2: https://lore.kernel.org/all/20250224180801.128685-2-francesco@dolcini.it/ - no changes v1: https://lore.kernel.org/all/20250218165633.106867-2-francesco@dolcini.it/ --- .../devicetree/bindings/hwmon/ti,amc6821.yaml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/hwmon/ti,amc6821.yaml b/Documentation/devicetree/bindings/hwmon/ti,amc6821.yaml index 5d33f1a23d03..9ca7356760a7 100644 --- a/Documentation/devicetree/bindings/hwmon/ti,amc6821.yaml +++ b/Documentation/devicetree/bindings/hwmon/ti,amc6821.yaml @@ -28,6 +28,17 @@ properties: i2c-mux: type: object + fan: + $ref: fan-common.yaml# + unevaluatedProperties: false + + "#pwm-cells": + const: 2 + description: | + Number of cells in a PWM specifier. + - cell 0: PWM period in nanoseconds + - cell 1: PWM polarity: 0 or PWM_POLARITY_INVERTED + required: - compatible - reg @@ -50,9 +61,14 @@ examples: #address-cells = <1>; #size-cells = <0>; - fan@18 { + fan_controller: fan@18 { compatible = "ti,amc6821"; reg = <0x18>; + #pwm-cells = <2>; + + fan { + pwms = <&fan_controller 40000 0>; + }; }; }; -- 2.39.5 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] dt-bindings: hwmon: amc6821: add fan and PWM output 2025-04-02 10:21 ` [PATCH v4 1/2] dt-bindings: hwmon: amc6821: add fan and PWM output Francesco Dolcini @ 2025-04-02 14:31 ` Rob Herring (Arm) 2025-04-02 16:15 ` Guenter Roeck 1 sibling, 0 replies; 7+ messages in thread From: Rob Herring (Arm) @ 2025-04-02 14:31 UTC (permalink / raw) To: Francesco Dolcini Cc: Farouk Bouabid, Francesco Dolcini, devicetree, linux-kernel, Jean Delvare, Krzysztof Kozlowski, Guenter Roeck, linux-hwmon, Conor Dooley, Quentin Schulz On Wed, 02 Apr 2025 12:21:45 +0200, Francesco Dolcini wrote: > From: Francesco Dolcini <francesco.dolcini@toradex.com> > > Add properties to describe the fan and the PWM controller output. > > Link: https://www.ti.com/lit/gpn/amc6821 > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> > --- > v4: > - add #pwm-cells description > - remove useless first #pwm-cells, that was supposed to be the instance > number > v3: https://lore.kernel.org/all/20250331155229.147879-2-francesco@dolcini.it/ > - explicitly describe the fan, use standard PWM and FAN bindings > - pwm.yaml cannot be referenced, because of the $nodename pattern that is > enforced there > v2: https://lore.kernel.org/all/20250224180801.128685-2-francesco@dolcini.it/ > - no changes > v1: https://lore.kernel.org/all/20250218165633.106867-2-francesco@dolcini.it/ > --- > .../devicetree/bindings/hwmon/ti,amc6821.yaml | 18 +++++++++++++++++- > 1 file changed, 17 insertions(+), 1 deletion(-) > Reviewed-by: Rob Herring (Arm) <robh@kernel.org> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 1/2] dt-bindings: hwmon: amc6821: add fan and PWM output 2025-04-02 10:21 ` [PATCH v4 1/2] dt-bindings: hwmon: amc6821: add fan and PWM output Francesco Dolcini 2025-04-02 14:31 ` Rob Herring (Arm) @ 2025-04-02 16:15 ` Guenter Roeck 1 sibling, 0 replies; 7+ messages in thread From: Guenter Roeck @ 2025-04-02 16:15 UTC (permalink / raw) To: Francesco Dolcini Cc: Jean Delvare, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Farouk Bouabid, Quentin Schulz, Francesco Dolcini, linux-hwmon, devicetree, linux-kernel On Wed, Apr 02, 2025 at 12:21:45PM +0200, Francesco Dolcini wrote: > From: Francesco Dolcini <francesco.dolcini@toradex.com> > > Add properties to describe the fan and the PWM controller output. > > Link: https://www.ti.com/lit/gpn/amc6821 > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> > Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Applied to hwmon-next. Thanks, Guenter ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v4 2/2] hwmon: (amc6821) Add PWM polarity configuration with OF 2025-04-02 10:21 [PATCH v4 0/2] hwmon: (amc6821) Add PWM polarity configuration with OF Francesco Dolcini 2025-04-02 10:21 ` [PATCH v4 1/2] dt-bindings: hwmon: amc6821: add fan and PWM output Francesco Dolcini @ 2025-04-02 10:21 ` Francesco Dolcini 2025-04-02 13:21 ` Guenter Roeck 2025-04-02 16:16 ` Guenter Roeck 1 sibling, 2 replies; 7+ messages in thread From: Francesco Dolcini @ 2025-04-02 10:21 UTC (permalink / raw) To: Jean Delvare, Guenter Roeck, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Farouk Bouabid, Quentin Schulz Cc: Francesco Dolcini, linux-hwmon, devicetree, linux-kernel From: Francesco Dolcini <francesco.dolcini@toradex.com> Add support to configure the PWM-Out pin polarity based on the device tree. The binding would allow also to configure the PWM period, this is currently not implemented by the driver. The driver has a module option to set the PWM polarity (normal=0, inverted=1), when specified it always takes the precedence over the DT. Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> --- v4: - remove first #pwm-cells v3: https://lore.kernel.org/all/20250331155229.147879-3-francesco@dolcini.it/ - configure PWM polarity using standard PWM DT properties v2: https://lore.kernel.org/lkml/20250224180801.128685-3-francesco@dolcini.it/ - pwminv module parameter takes always the precedence over the DT property v1: https://lore.kernel.org/all/20250218165633.106867-3-francesco@dolcini.it/ --- drivers/hwmon/amc6821.c | 50 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c index 1e3c6acd8974..13a789cc85d2 100644 --- a/drivers/hwmon/amc6821.c +++ b/drivers/hwmon/amc6821.c @@ -23,9 +23,12 @@ #include <linux/module.h> #include <linux/mutex.h> #include <linux/of_platform.h> +#include <linux/pwm.h> #include <linux/regmap.h> #include <linux/slab.h> +#include <dt-bindings/pwm/pwm.h> + /* * Addresses to scan. */ @@ -37,7 +40,7 @@ static const unsigned short normal_i2c[] = {0x18, 0x19, 0x1a, 0x2c, 0x2d, 0x2e, * Insmod parameters */ -static int pwminv; /*Inverted PWM output. */ +static int pwminv = -1; /*Inverted PWM output. */ module_param(pwminv, int, 0444); static int init = 1; /*Power-on initialization.*/ @@ -845,9 +848,43 @@ static int amc6821_detect(struct i2c_client *client, struct i2c_board_info *info return 0; } -static int amc6821_init_client(struct amc6821_data *data) +static enum pwm_polarity amc6821_pwm_polarity(struct i2c_client *client) +{ + 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 + * always the precedence over any other device description + */ + if (pwminv == 0) + return PWM_POLARITY_NORMAL; + 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); + + if (args.args_count != 2) + goto out; + + if (args.args[1] & PWM_POLARITY_INVERTED) + polarity = PWM_POLARITY_INVERSED; +out: + of_node_put(fan_np); + return polarity; +} + +static int amc6821_init_client(struct i2c_client *client, struct amc6821_data *data) { struct regmap *regmap = data->regmap; + u32 regval; int err; if (init) { @@ -864,11 +901,14 @@ static int amc6821_init_client(struct amc6821_data *data) if (err) return err; + regval = AMC6821_CONF1_START; + if (amc6821_pwm_polarity(client) == PWM_POLARITY_INVERSED) + regval |= AMC6821_CONF1_PWMINV; + err = regmap_update_bits(regmap, AMC6821_REG_CONF1, AMC6821_CONF1_THERMOVIE | AMC6821_CONF1_FANIE | AMC6821_CONF1_START | AMC6821_CONF1_PWMINV, - AMC6821_CONF1_START | - (pwminv ? AMC6821_CONF1_PWMINV : 0)); + regval); if (err) return err; } @@ -916,7 +956,7 @@ static int amc6821_probe(struct i2c_client *client) "Failed to initialize regmap\n"); data->regmap = regmap; - err = amc6821_init_client(data); + err = amc6821_init_client(client, data); if (err) return err; -- 2.39.5 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 2/2] hwmon: (amc6821) Add PWM polarity configuration with OF 2025-04-02 10:21 ` [PATCH v4 2/2] hwmon: (amc6821) Add PWM polarity configuration with OF Francesco Dolcini @ 2025-04-02 13:21 ` Guenter Roeck 2025-04-02 16:16 ` Guenter Roeck 1 sibling, 0 replies; 7+ messages in thread From: Guenter Roeck @ 2025-04-02 13:21 UTC (permalink / raw) To: Francesco Dolcini, Jean Delvare, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Farouk Bouabid, Quentin Schulz Cc: Francesco Dolcini, linux-hwmon, devicetree, linux-kernel On 4/2/25 03:21, Francesco Dolcini wrote: > From: Francesco Dolcini <francesco.dolcini@toradex.com> > > Add support to configure the PWM-Out pin polarity based on the device > tree. The binding would allow also to configure the PWM period, this is > currently not implemented by the driver. > > The driver has a module option to set the PWM polarity (normal=0, > inverted=1), when specified it always takes the precedence over the DT. > > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> For my reference: Reviewed-by: Guenter Roeck <linux@roeck-us.net> ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v4 2/2] hwmon: (amc6821) Add PWM polarity configuration with OF 2025-04-02 10:21 ` [PATCH v4 2/2] hwmon: (amc6821) Add PWM polarity configuration with OF Francesco Dolcini 2025-04-02 13:21 ` Guenter Roeck @ 2025-04-02 16:16 ` Guenter Roeck 1 sibling, 0 replies; 7+ messages in thread From: Guenter Roeck @ 2025-04-02 16:16 UTC (permalink / raw) To: Francesco Dolcini Cc: Jean Delvare, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Farouk Bouabid, Quentin Schulz, Francesco Dolcini, linux-hwmon, devicetree, linux-kernel On Wed, Apr 02, 2025 at 12:21:46PM +0200, Francesco Dolcini wrote: > From: Francesco Dolcini <francesco.dolcini@toradex.com> > > Add support to configure the PWM-Out pin polarity based on the device > tree. The binding would allow also to configure the PWM period, this is > currently not implemented by the driver. > > The driver has a module option to set the PWM polarity (normal=0, > inverted=1), when specified it always takes the precedence over the DT. > > Signed-off-by: Francesco Dolcini <francesco.dolcini@toradex.com> Applied to hwmon-next. Thanks, Guenter ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-04-02 16:16 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-04-02 10:21 [PATCH v4 0/2] hwmon: (amc6821) Add PWM polarity configuration with OF Francesco Dolcini 2025-04-02 10:21 ` [PATCH v4 1/2] dt-bindings: hwmon: amc6821: add fan and PWM output Francesco Dolcini 2025-04-02 14:31 ` Rob Herring (Arm) 2025-04-02 16:15 ` Guenter Roeck 2025-04-02 10:21 ` [PATCH v4 2/2] hwmon: (amc6821) Add PWM polarity configuration with OF Francesco Dolcini 2025-04-02 13:21 ` Guenter Roeck 2025-04-02 16:16 ` Guenter Roeck
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®