* [PATCH v2 1/3] dt-bindings: vendor-prefixes: Document Argon40 @ 2025-06-17 0:28 Marek Vasut 2025-06-17 0:28 ` [PATCH v2 2/3] dt-bindings: pwm: argon40,fan-hat: Document Argon40 Fan HAT Marek Vasut 2025-06-17 0:28 ` [PATCH v2 3/3] pwm: argon-fan-hat: Add Argon40 Fan HAT support Marek Vasut 0 siblings, 2 replies; 7+ messages in thread From: Marek Vasut @ 2025-06-17 0:28 UTC (permalink / raw) To: linux-pwm Cc: Marek Vasut, Conor Dooley, Uwe Kleine-König, Conor Dooley, Krzysztof Kozlowski, Rob Herring, devicetree, linux-renesas-soc Argon 40 Technologies Limited is a SBC expansion board vendor. Document the prefix. For details see https://argon40.com . Acked-by: Conor Dooley <conor.dooley@microchip.com> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> --- Cc: "Uwe Kleine-König" <ukleinek@kernel.org> Cc: Conor Dooley <conor+dt@kernel.org> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org> Cc: Rob Herring <robh@kernel.org> Cc: devicetree@vger.kernel.org Cc: linux-pwm@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org --- V2: Add AB from Conor --- Documentation/devicetree/bindings/vendor-prefixes.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml index 3f23f6f93b62..27e2ad136931 100644 --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml @@ -149,6 +149,8 @@ patternProperties: description: Arctic Sand "^arcx,.*": description: arcx Inc. / Archronix Inc. + "^argon40,.*": + description: Argon 40 Technologies Limited "^ariaboard,.*": description: Shanghai Novotech Co., Ltd. (Ariaboard) "^aries,.*": -- 2.47.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] dt-bindings: pwm: argon40,fan-hat: Document Argon40 Fan HAT 2025-06-17 0:28 [PATCH v2 1/3] dt-bindings: vendor-prefixes: Document Argon40 Marek Vasut @ 2025-06-17 0:28 ` Marek Vasut 2025-06-17 7:49 ` Uwe Kleine-König 2025-06-17 0:28 ` [PATCH v2 3/3] pwm: argon-fan-hat: Add Argon40 Fan HAT support Marek Vasut 1 sibling, 1 reply; 7+ messages in thread From: Marek Vasut @ 2025-06-17 0:28 UTC (permalink / raw) To: linux-pwm Cc: Marek Vasut, Uwe Kleine-König, Conor Dooley, Krzysztof Kozlowski, Rob Herring, devicetree, linux-renesas-soc Document trivial PWM on Argon40 Fan HAT, which is a RaspberryPi blower fan hat which can be controlled over I2C. Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> --- Cc: "Uwe Kleine-König" <ukleinek@kernel.org> Cc: Conor Dooley <conor+dt@kernel.org> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org> Cc: Rob Herring <robh@kernel.org> Cc: devicetree@vger.kernel.org Cc: linux-pwm@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org --- V2: Implement dedicated binding document --- .../bindings/pwm/argon40,fan-hat.yaml | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml diff --git a/Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml b/Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml new file mode 100644 index 000000000000..2725eee5328c --- /dev/null +++ b/Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml @@ -0,0 +1,47 @@ +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/pwm/argon40,fan-hat.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Argon40 Fan HAT PWM controller + +maintainers: + - Marek Vasut <marek.vasut+renesas@mailbox.org> + +description: | + The trivial PWM on Argon40 Fan HAT, which is a RaspberryPi blower fan + hat which can be controlled over I2C, generates a fixed duty cycle PWM + signal with configurable period to control the fan speed. + +allOf: + - $ref: pwm.yaml# + +properties: + compatible: + const: argon40,fan-hat + + reg: + maxItems: 1 + + "#pwm-cells": + const: 2 + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + i2c { + #address-cells = <1>; + #size-cells = <0>; + + pwm@1a { + compatible = "argon40,fan-hat"; + reg = <0x1a>; + #pwm-cells = <2>; + }; + }; -- 2.47.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] dt-bindings: pwm: argon40,fan-hat: Document Argon40 Fan HAT 2025-06-17 0:28 ` [PATCH v2 2/3] dt-bindings: pwm: argon40,fan-hat: Document Argon40 Fan HAT Marek Vasut @ 2025-06-17 7:49 ` Uwe Kleine-König 2025-06-17 9:08 ` Marek Vasut 0 siblings, 1 reply; 7+ messages in thread From: Uwe Kleine-König @ 2025-06-17 7:49 UTC (permalink / raw) To: Marek Vasut Cc: linux-pwm, Conor Dooley, Krzysztof Kozlowski, Rob Herring, devicetree, linux-renesas-soc [-- Attachment #1: Type: text/plain, Size: 2006 bytes --] Hello Marek, On Tue, Jun 17, 2025 at 02:28:01AM +0200, Marek Vasut wrote: > Document trivial PWM on Argon40 Fan HAT, which is a RaspberryPi > blower fan hat which can be controlled over I2C. > > Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> > --- > Cc: "Uwe Kleine-König" <ukleinek@kernel.org> > Cc: Conor Dooley <conor+dt@kernel.org> > Cc: Krzysztof Kozlowski <krzk+dt@kernel.org> > Cc: Rob Herring <robh@kernel.org> > Cc: devicetree@vger.kernel.org > Cc: linux-pwm@vger.kernel.org > Cc: linux-renesas-soc@vger.kernel.org > --- > V2: Implement dedicated binding document > --- > .../bindings/pwm/argon40,fan-hat.yaml | 47 +++++++++++++++++++ > 1 file changed, 47 insertions(+) > create mode 100644 Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml > > diff --git a/Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml b/Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml > new file mode 100644 > index 000000000000..2725eee5328c > --- /dev/null > +++ b/Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml > @@ -0,0 +1,47 @@ > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/pwm/argon40,fan-hat.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Argon40 Fan HAT PWM controller > + > +maintainers: > + - Marek Vasut <marek.vasut+renesas@mailbox.org> > + > +description: | > + The trivial PWM on Argon40 Fan HAT, which is a RaspberryPi blower fan > + hat which can be controlled over I2C, generates a fixed duty cycle PWM > + signal with configurable period to control the fan speed. Did you get that right? I would have expected a fixed period and the parameter modifying the duty cycle? > +allOf: > + - $ref: pwm.yaml# > + > +properties: > + compatible: > + const: argon40,fan-hat > + > + reg: > + maxItems: 1 > + > + "#pwm-cells": > + const: 2 const: 3 Best regards Uwe [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] dt-bindings: pwm: argon40,fan-hat: Document Argon40 Fan HAT 2025-06-17 7:49 ` Uwe Kleine-König @ 2025-06-17 9:08 ` Marek Vasut 0 siblings, 0 replies; 7+ messages in thread From: Marek Vasut @ 2025-06-17 9:08 UTC (permalink / raw) To: Uwe Kleine-König, Marek Vasut Cc: linux-pwm, Conor Dooley, Krzysztof Kozlowski, Rob Herring, devicetree, linux-renesas-soc On 6/17/25 9:49 AM, Uwe Kleine-König wrote: > Hello Marek, Hi, > On Tue, Jun 17, 2025 at 02:28:01AM +0200, Marek Vasut wrote: >> Document trivial PWM on Argon40 Fan HAT, which is a RaspberryPi >> blower fan hat which can be controlled over I2C. >> >> Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> >> --- >> Cc: "Uwe Kleine-König" <ukleinek@kernel.org> >> Cc: Conor Dooley <conor+dt@kernel.org> >> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org> >> Cc: Rob Herring <robh@kernel.org> >> Cc: devicetree@vger.kernel.org >> Cc: linux-pwm@vger.kernel.org >> Cc: linux-renesas-soc@vger.kernel.org >> --- >> V2: Implement dedicated binding document >> --- >> .../bindings/pwm/argon40,fan-hat.yaml | 47 +++++++++++++++++++ >> 1 file changed, 47 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml >> >> diff --git a/Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml b/Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml >> new file mode 100644 >> index 000000000000..2725eee5328c >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/pwm/argon40,fan-hat.yaml >> @@ -0,0 +1,47 @@ >> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) >> +%YAML 1.2 >> +--- >> +$id: http://devicetree.org/schemas/pwm/argon40,fan-hat.yaml# >> +$schema: http://devicetree.org/meta-schemas/core.yaml# >> + >> +title: Argon40 Fan HAT PWM controller >> + >> +maintainers: >> + - Marek Vasut <marek.vasut+renesas@mailbox.org> >> + >> +description: | >> + The trivial PWM on Argon40 Fan HAT, which is a RaspberryPi blower fan >> + hat which can be controlled over I2C, generates a fixed duty cycle PWM >> + signal with configurable period to control the fan speed. > > Did you get that right? I would have expected a fixed period and the > parameter modifying the duty cycle? I actually found a fixed 30 kHz period PWM at the underside of the device, it wasn't easy to reach. Expect a V3. ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] pwm: argon-fan-hat: Add Argon40 Fan HAT support 2025-06-17 0:28 [PATCH v2 1/3] dt-bindings: vendor-prefixes: Document Argon40 Marek Vasut 2025-06-17 0:28 ` [PATCH v2 2/3] dt-bindings: pwm: argon40,fan-hat: Document Argon40 Fan HAT Marek Vasut @ 2025-06-17 0:28 ` Marek Vasut 2025-06-17 7:59 ` Uwe Kleine-König 1 sibling, 1 reply; 7+ messages in thread From: Marek Vasut @ 2025-06-17 0:28 UTC (permalink / raw) To: linux-pwm Cc: Marek Vasut, Uwe Kleine-König, Conor Dooley, Krzysztof Kozlowski, Rob Herring, devicetree, linux-renesas-soc Add trivial PWM driver for Argon40 Fan HAT, which is a RaspberryPi blower fan hat which can be controlled over I2C. Model this device as a PWM, so the pwm-fan can be attached to it and handle thermal zones and RPM management in a generic manner. Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> --- Cc: "Uwe Kleine-König" <ukleinek@kernel.org> Cc: Conor Dooley <conor+dt@kernel.org> Cc: Krzysztof Kozlowski <krzk+dt@kernel.org> Cc: Rob Herring <robh@kernel.org> Cc: devicetree@vger.kernel.org Cc: linux-pwm@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org --- V2: - Switch to waveform ops - Add shutdown hook to force the fan to maximum RPM on shutdown instead of stopping it, to be on the safe side --- drivers/pwm/Kconfig | 9 +++ drivers/pwm/Makefile | 1 + drivers/pwm/pwm-argon-fan-hat.c | 115 ++++++++++++++++++++++++++++++++ 3 files changed, 125 insertions(+) create mode 100644 drivers/pwm/pwm-argon-fan-hat.c diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig index 6e113f8b4baf..3ef1757502eb 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig @@ -66,6 +66,15 @@ config PWM_APPLE To compile this driver as a module, choose M here: the module will be called pwm-apple. +config PWM_ARGON_FAN_HAT + tristate "Argon40 Fan HAT support" + depends on I2C && OF + help + Generic PWM framework driver for Argon40 Fan HAT. + + To compile this driver as a module, choose M here: the module + will be called pwm-argon-fan-hat. + config PWM_ATMEL tristate "Atmel PWM support" depends on ARCH_AT91 || COMPILE_TEST diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile index 96160f4257fc..ff4f47e5fb7a 100644 --- a/drivers/pwm/Makefile +++ b/drivers/pwm/Makefile @@ -3,6 +3,7 @@ obj-$(CONFIG_PWM) += core.o obj-$(CONFIG_PWM_AB8500) += pwm-ab8500.o obj-$(CONFIG_PWM_ADP5585) += pwm-adp5585.o obj-$(CONFIG_PWM_APPLE) += pwm-apple.o +obj-$(CONFIG_PWM_ARGON_FAN_HAT) += pwm-argon-fan-hat.o obj-$(CONFIG_PWM_ATMEL) += pwm-atmel.o obj-$(CONFIG_PWM_ATMEL_HLCDC_PWM) += pwm-atmel-hlcdc.o obj-$(CONFIG_PWM_ATMEL_TCB) += pwm-atmel-tcb.o diff --git a/drivers/pwm/pwm-argon-fan-hat.c b/drivers/pwm/pwm-argon-fan-hat.c new file mode 100644 index 000000000000..a26b58ee7f29 --- /dev/null +++ b/drivers/pwm/pwm-argon-fan-hat.c @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2025 Marek Vasut + * + * Limitations: + * - no support for offset/polarity + * - fixed duty cycle, period changes from 0Hz..120kHz + */ + +#include <linux/err.h> +#include <linux/i2c.h> +#include <linux/module.h> +#include <linux/pwm.h> + +static int argon_fan_hat_round_waveform_tohw(struct pwm_chip *chip, + struct pwm_device *pwm, + const struct pwm_waveform *wf, + void *_wfhw) +{ + u8 *wfhw = _wfhw; + + *wfhw = DIV_ROUND_CLOSEST_ULL(wf->duty_length_ns * 100, wf->period_length_ns); + + return 0; +} + +static int argon_fan_hat_round_waveform_fromhw(struct pwm_chip *chip, + struct pwm_device *pwm, + const void *_wfhw, + struct pwm_waveform *wf) +{ + const u8 *wfhw = _wfhw; + + /* 1 step of this hardware is cca. 1200 Hz increase in frequency */ + wf->period_length_ns = DIV64_U64_ROUND_UP(NSEC_PER_SEC, *wfhw * 1200); + wf->duty_length_ns = wf->period_length_ns / 10; + wf->duty_offset_ns = 0; + + return 0; +} + +static int argon_fan_hat_write_waveform(struct pwm_chip *chip, + struct pwm_device *pwm, + const void *_wfhw) +{ + struct i2c_client *i2c = pwmchip_get_drvdata(chip); + const u8 *wfhw = _wfhw; + u8 tx[2] = { 0x80, *wfhw }; + struct i2c_msg msg = { + .addr = i2c->addr, + .len = 2, + .buf = tx, + }; + + return (i2c_transfer(i2c->adapter, &msg, 1) == 1) ? 0 : -EINVAL; +} + +static const struct pwm_ops argon_fan_hat_pwm_ops = { + .sizeof_wfhw = sizeof(u8), + .round_waveform_fromhw = argon_fan_hat_round_waveform_fromhw, + .round_waveform_tohw = argon_fan_hat_round_waveform_tohw, + .write_waveform = argon_fan_hat_write_waveform, +}; + +static int argon_fan_hat_i2c_probe(struct i2c_client *i2c) +{ + struct pwm_chip *pc = devm_pwmchip_alloc(&i2c->dev, 1, 0); + int ret; + + if (IS_ERR(pc)) + return PTR_ERR(pc); + + pc->ops = &argon_fan_hat_pwm_ops; + pwmchip_set_drvdata(pc, i2c); + + ret = devm_pwmchip_add(&i2c->dev, pc); + if (ret) + return dev_err_probe(&i2c->dev, ret, "Could not add PWM chip\n"); + + return 0; +} + +static void argon_fan_hat_i2c_shutdown(struct i2c_client *i2c) +{ + u8 tx[2] = { 0x80, 0x64 }; + struct i2c_msg msg = { + .addr = i2c->addr, + .len = 2, + .buf = tx, + }; + + i2c_transfer(i2c->adapter, &msg, 1); +} + +static const struct of_device_id argon_fan_hat_dt_ids[] = { + { .compatible = "argon40,fan-hat" }, + { }, +}; +MODULE_DEVICE_TABLE(of, argon_fan_hat_dt_ids); + +static struct i2c_driver argon_fan_hat_driver = { + .driver = { + .name = "argon-fan-hat", + .probe_type = PROBE_PREFER_ASYNCHRONOUS, + .of_match_table = argon_fan_hat_dt_ids, + }, + .probe = argon_fan_hat_i2c_probe, + .shutdown = argon_fan_hat_i2c_shutdown, +}; + +module_i2c_driver(argon_fan_hat_driver); + +MODULE_AUTHOR("Marek Vasut <marek.vasut+renesas@mailbox.org>"); +MODULE_DESCRIPTION("Argon40 Fan HAT"); +MODULE_LICENSE("GPL"); -- 2.47.2 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 3/3] pwm: argon-fan-hat: Add Argon40 Fan HAT support 2025-06-17 0:28 ` [PATCH v2 3/3] pwm: argon-fan-hat: Add Argon40 Fan HAT support Marek Vasut @ 2025-06-17 7:59 ` Uwe Kleine-König 2025-06-17 9:18 ` Marek Vasut 0 siblings, 1 reply; 7+ messages in thread From: Uwe Kleine-König @ 2025-06-17 7:59 UTC (permalink / raw) To: Marek Vasut Cc: linux-pwm, Conor Dooley, Krzysztof Kozlowski, Rob Herring, devicetree, linux-renesas-soc [-- Attachment #1: Type: text/plain, Size: 3800 bytes --] Hello Marek, On Tue, Jun 17, 2025 at 02:28:02AM +0200, Marek Vasut wrote: > diff --git a/drivers/pwm/pwm-argon-fan-hat.c b/drivers/pwm/pwm-argon-fan-hat.c > new file mode 100644 > index 000000000000..a26b58ee7f29 > --- /dev/null > +++ b/drivers/pwm/pwm-argon-fan-hat.c > @@ -0,0 +1,115 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Copyright (C) 2025 Marek Vasut > + * > + * Limitations: > + * - no support for offset/polarity > + * - fixed duty cycle, period changes from 0Hz..120kHz A link to the product page would be great. > + */ > + > +#include <linux/err.h> > +#include <linux/i2c.h> > +#include <linux/module.h> > +#include <linux/pwm.h> > + > +static int argon_fan_hat_round_waveform_tohw(struct pwm_chip *chip, > + struct pwm_device *pwm, > + const struct pwm_waveform *wf, > + void *_wfhw) > +{ > + u8 *wfhw = _wfhw; > + > + *wfhw = DIV_ROUND_CLOSEST_ULL(wf->duty_length_ns * 100, wf->period_length_ns); > + > + return 0; > +} > + > +static int argon_fan_hat_round_waveform_fromhw(struct pwm_chip *chip, > + struct pwm_device *pwm, > + const void *_wfhw, > + struct pwm_waveform *wf) > +{ > + const u8 *wfhw = _wfhw; > + > + /* 1 step of this hardware is cca. 1200 Hz increase in frequency */ > + wf->period_length_ns = DIV64_U64_ROUND_UP(NSEC_PER_SEC, *wfhw * 1200); > + wf->duty_length_ns = wf->period_length_ns / 10; > + wf->duty_offset_ns = 0; How extraordinary, so the relative duty cycle is always 10%? In the binding patch you claimed duty cycle was constant? Please enable PWM_DEBUG while testing. > + return 0; > +} > + > +static int argon_fan_hat_write_waveform(struct pwm_chip *chip, > + struct pwm_device *pwm, > + const void *_wfhw) > +{ > + struct i2c_client *i2c = pwmchip_get_drvdata(chip); > + const u8 *wfhw = _wfhw; > + u8 tx[2] = { 0x80, *wfhw }; > + struct i2c_msg msg = { > + .addr = i2c->addr, > + .len = 2, > + .buf = tx, > + }; > + > + return (i2c_transfer(i2c->adapter, &msg, 1) == 1) ? 0 : -EINVAL; > +} > + > +static const struct pwm_ops argon_fan_hat_pwm_ops = { > + .sizeof_wfhw = sizeof(u8), > + .round_waveform_fromhw = argon_fan_hat_round_waveform_fromhw, > + .round_waveform_tohw = argon_fan_hat_round_waveform_tohw, > + .write_waveform = argon_fan_hat_write_waveform, Please add a comment about why there is no .read_waveform(). > +}; > + > +static int argon_fan_hat_i2c_probe(struct i2c_client *i2c) > +{ > + struct pwm_chip *pc = devm_pwmchip_alloc(&i2c->dev, 1, 0); > + int ret; > + > + if (IS_ERR(pc)) > + return PTR_ERR(pc); > + > + pc->ops = &argon_fan_hat_pwm_ops; > + pwmchip_set_drvdata(pc, i2c); > + > + ret = devm_pwmchip_add(&i2c->dev, pc); > + if (ret) > + return dev_err_probe(&i2c->dev, ret, "Could not add PWM chip\n"); > + > + return 0; > +} > + > +static void argon_fan_hat_i2c_shutdown(struct i2c_client *i2c) > +{ > + u8 tx[2] = { 0x80, 0x64 }; > + struct i2c_msg msg = { > + .addr = i2c->addr, > + .len = 2, > + .buf = tx, > + }; > + > + i2c_transfer(i2c->adapter, &msg, 1); > +} This is argon_fan_hat_write_waveform(..., _wfhw=100). Looks like an opportunity to consolidate these functions. > +static const struct of_device_id argon_fan_hat_dt_ids[] = { > + { .compatible = "argon40,fan-hat" }, > + { }, > +}; > +MODULE_DEVICE_TABLE(of, argon_fan_hat_dt_ids); > + > +static struct i2c_driver argon_fan_hat_driver = { > + .driver = { > + .name = "argon-fan-hat", > + .probe_type = PROBE_PREFER_ASYNCHRONOUS, > + .of_match_table = argon_fan_hat_dt_ids, > + }, > + .probe = argon_fan_hat_i2c_probe, > + .shutdown = argon_fan_hat_i2c_shutdown, > +}; > + > +module_i2c_driver(argon_fan_hat_driver); > + > +MODULE_AUTHOR("Marek Vasut <marek.vasut+renesas@mailbox.org>"); > +MODULE_DESCRIPTION("Argon40 Fan HAT"); > +MODULE_LICENSE("GPL"); [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 3/3] pwm: argon-fan-hat: Add Argon40 Fan HAT support 2025-06-17 7:59 ` Uwe Kleine-König @ 2025-06-17 9:18 ` Marek Vasut 0 siblings, 0 replies; 7+ messages in thread From: Marek Vasut @ 2025-06-17 9:18 UTC (permalink / raw) To: Uwe Kleine-König, Marek Vasut Cc: linux-pwm, Conor Dooley, Krzysztof Kozlowski, Rob Herring, devicetree, linux-renesas-soc On 6/17/25 9:59 AM, Uwe Kleine-König wrote: > Hello Marek, Hi, [...] >> +static int argon_fan_hat_round_waveform_fromhw(struct pwm_chip *chip, >> + struct pwm_device *pwm, >> + const void *_wfhw, >> + struct pwm_waveform *wf) >> +{ >> + const u8 *wfhw = _wfhw; >> + >> + /* 1 step of this hardware is cca. 1200 Hz increase in frequency */ >> + wf->period_length_ns = DIV64_U64_ROUND_UP(NSEC_PER_SEC, *wfhw * 1200); >> + wf->duty_length_ns = wf->period_length_ns / 10; >> + wf->duty_offset_ns = 0; > > How extraordinary, so the relative duty cycle is always 10%? In the > binding patch you claimed duty cycle was constant? I actually found a fixed 30 kHz period PWM at the underside of the device, with configurable duty cycle, so this will be fixed in V3. The rest should be fixed in V3, thanks. ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-06-17 9:19 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2025-06-17 0:28 [PATCH v2 1/3] dt-bindings: vendor-prefixes: Document Argon40 Marek Vasut 2025-06-17 0:28 ` [PATCH v2 2/3] dt-bindings: pwm: argon40,fan-hat: Document Argon40 Fan HAT Marek Vasut 2025-06-17 7:49 ` Uwe Kleine-König 2025-06-17 9:08 ` Marek Vasut 2025-06-17 0:28 ` [PATCH v2 3/3] pwm: argon-fan-hat: Add Argon40 Fan HAT support Marek Vasut 2025-06-17 7:59 ` Uwe Kleine-König 2025-06-17 9:18 ` Marek Vasut
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).