mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 13:14:07 +08:00
hwmon: (adt7475) Add support for inverting pwm output
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@alliedtelesis.co.nz> [groeck: dev_err -> dev_warn] Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
parent
2ecff39791
commit
86da28eed4
@ -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_warn(&client->dev, "Error configuring pwm polarity\n");
|
||||
|
||||
/* Start monitoring */
|
||||
switch (chip) {
|
||||
case adt7475:
|
||||
|
Loading…
Reference in New Issue
Block a user