Hi Quentin, On Wed, Feb 19, 2025 at 12:12:24PM +0100, Quentin Schulz wrote: > On 2/19/25 11:33 AM, Francesco Dolcini wrote: > > On Wed, Feb 19, 2025 at 11:08:43AM +0100, Quentin Schulz wrote: > > > On 2/18/25 5:56 PM, Francesco Dolcini wrote: > > > > From: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx> > > > > > > > > Add support to configure the PWM-Out pin polarity based on a device > > > > tree property. > > > > > > > > Signed-off-by: Francesco Dolcini <francesco.dolcini@xxxxxxxxxxx> > > > > --- > > > > drivers/hwmon/amc6821.c | 7 +++++-- > > > > 1 file changed, 5 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/drivers/hwmon/amc6821.c b/drivers/hwmon/amc6821.c > > > > index 1e3c6acd8974..1ea2d97eebca 100644 > > > > --- a/drivers/hwmon/amc6821.c > > > > +++ b/drivers/hwmon/amc6821.c > > > > @@ -845,7 +845,7 @@ 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 int amc6821_init_client(struct i2c_client *client, struct amc6821_data *data) > > > > { > > > > struct regmap *regmap = data->regmap; > > > > int err; > > > > @@ -864,6 +864,9 @@ static int amc6821_init_client(struct amc6821_data *data) > > > > if (err) > > > > return err; > > > > + if (of_property_read_bool(client->dev.of_node, "ti,pwm-inverted")) > > > > > > I know that the AMC6821 is doing a lot of smart things, but this really > > > tickled me. PWM controllers actually do support that already via > > > PWM_POLARITY_INVERTED flag for example. See > > > Documentation/devicetree/bindings/hwmon/adt7475.yaml which seems to be > > > another HWMON driver which acts as a PWM controller. I'm not sure this is > > > relevant, applicable or desired but I wanted to highlight this. > > > > From the DT binding point of view, it seems to implement the same I am > > proposing here with adi,pwm-active-state property. > > > > Ah! It seems like I read only the part that agreed with the idea I had in > mind :) > > > Do you have anything more specific in mind? > > > > Yes, #pwm-cells just below in the binding. You can then see that the third > cell in a PWM specifier is for the polarity. If I didn't misread once more, > I believe that what's in adi,pwm-active-state is ignored based on the > content of the PWM flags in a PWM cell specifier, c.f. > adt7475_set_pwm_polarity followed by adt7475_fan_pwm_config in > adt7475_probe. I would have assumed that having the polarity inverted in > adi,pwm-active-state would mean that the meaning of the flag in the PWM cell > specifier would be inverted as well, meaning 0 -> inverted, > PWM_POLARITY_INVERTED -> doubly inverted so "normal" polarity. > > adt7475_fan_pwm_config was added a few years after adt7475_set_pwm_polarity. I think this is out of scope for this patch. The amc6821 can control the fan PWM stand-alone, this change has nothing to do with the generic pwm framework, this is required to have the PWM out pin correctly driven by the fan controller chip. > Module params over DT is fine with me, I just want consistency here, so if > it's always the case, fine :) Ok, I'll implement it this way. Francesco