diff options
| author | Florin Leotescu <florin.leotescu@nxp.com> | 2025-06-03 14:31:24 +0300 |
|---|---|---|
| committer | Guenter Roeck <linux@roeck-us.net> | 2025-07-20 16:38:34 -0700 |
| commit | ef8b1b4eb702cdd56807c0430b511f94b2af8e66 (patch) | |
| tree | 6e0dda33f720880963c9fdea335ac961d63f1dda | |
| parent | hwmon: (emc2305) Configure PWM channels based on DT properties (diff) | |
| download | linux-ef8b1b4eb702cdd56807c0430b511f94b2af8e66.tar.gz linux-ef8b1b4eb702cdd56807c0430b511f94b2af8e66.zip | |
hwmon: (emc2305) Enable PWM polarity and output configuration
Enable configuration of PWM polarity and PWM output config
based Device Tree properties.
Signed-off-by: Florin Leotescu <florin.leotescu@nxp.com>
Link: https://lore.kernel.org/r/20250603113125.3175103-4-florin.leotescu@oss.nxp.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
| -rw-r--r-- | drivers/hwmon/emc2305.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/hwmon/emc2305.c b/drivers/hwmon/emc2305.c index 0228511f4753..db65c3177f29 100644 --- a/drivers/hwmon/emc2305.c +++ b/drivers/hwmon/emc2305.c @@ -28,6 +28,10 @@ #define EMC2305_TACH_RANGE_MIN 480 #define EMC2305_DEFAULT_OUTPUT 0x0 #define EMC2305_DEFAULT_POLARITY 0x0 +#define EMC2305_REG_POLARITY 0x2a +#define EMC2305_REG_DRIVE_PWM_OUT 0x2b +#define EMC2305_OPEN_DRAIN 0x0 +#define EMC2305_PUSH_PULL 0x1 #define EMC2305_PWM_DUTY2STATE(duty, max_state, pwm_max) \ DIV_ROUND_CLOSEST((duty) * (max_state), (pwm_max)) @@ -686,6 +690,16 @@ static int emc2305_probe(struct i2c_client *client) } } + ret = i2c_smbus_write_byte_data(client, EMC2305_REG_DRIVE_PWM_OUT, + data->pwm_output_mask); + if (ret < 0) + dev_err(dev, "Failed to configure pwm output, using default\n"); + + ret = i2c_smbus_write_byte_data(client, EMC2305_REG_POLARITY, + data->pwm_polarity_mask); + if (ret < 0) + dev_err(dev, "Failed to configure pwm polarity, using default\n"); + for (i = 0; i < data->pwm_num; i++) { ret = i2c_smbus_write_byte_data(client, EMC2305_REG_FAN_MIN_DRIVE(i), data->pwm_min[i]); |
