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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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:



[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux