Re: [PATCH v5 5/5] hwmon: (adt7475) Add support for inverting pwm output

From: Guenter Roeck
Date: Tue Mar 03 2020 - 16:08:30 EST


On Thu, Feb 27, 2020 at 09:46:42PM +1300, Chris Packham wrote:
> Add a "adi,pwm-active-state" device-tree property to allow hardware
> designs to use inverted logic on the PWM output.
>
> Signed-off-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>

Applied, with change described below. Please let me know if ignoring
the error is not what you wanted.

Thanks,
Guenter

> ---
>
> Notes:
> Changes in v5:
> - change to adi,pwm-active-state
> - uint32 array
>
> Changes in v4:
> - use vendor prefix for new property
>
> Changes in v3:
> - New
>
> drivers/hwmon/adt7475.c | 34 ++++++++++++++++++++++++++++++++++
> 1 file changed, 34 insertions(+)
>
> diff --git a/drivers/hwmon/adt7475.c b/drivers/hwmon/adt7475.c
> index 3649b18359dc..142a4fec688b 100644
> --- a/drivers/hwmon/adt7475.c
> +++ b/drivers/hwmon/adt7475.c
> @@ -1509,6 +1509,36 @@ static int load_attenuators(const struct i2c_client *client, int chip,
> return 0;
> }
>
> +static int adt7475_set_pwm_polarity(struct i2c_client *client)
> +{
> + u32 states[ADT7475_PWM_COUNT];
> + int ret, i;
> + u8 val;
> +
> + ret = of_property_read_u32_array(client->dev.of_node,
> + "adi,pwm-active-state", states,
> + ARRAY_SIZE(states));
> + if (ret)
> + return ret;
> +
> + for (i = 0; i < ADT7475_PWM_COUNT; i++) {
> + ret = adt7475_read(PWM_CONFIG_REG(i));
> + if (ret < 0)
> + return ret;
> + val = ret;
> + if (states[i])
> + val &= ~BIT(4);
> + else
> + val |= BIT(4);
> +
> + ret = i2c_smbus_write_byte_data(client, PWM_CONFIG_REG(i), val);
> + if (ret)
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> static int adt7475_probe(struct i2c_client *client,
> const struct i2c_device_id *id)
> {
> @@ -1617,6 +1647,10 @@ static int adt7475_probe(struct i2c_client *client,
> for (i = 0; i < ADT7475_PWM_COUNT; i++)
> adt7475_read_pwm(client, i);
>
> + ret = adt7475_set_pwm_polarity(client);
> + if (ret && ret != -EINVAL)
> + dev_err(&client->dev, "Error configuring pwm polarity\n");

dev_err -> dev_warn

> +
> /* Start monitoring */
> switch (chip) {
> case adt7475: