]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hwmon: (emc2305) Enable PWM polarity and output configuration
authorFlorin Leotescu <florin.leotescu@nxp.com>
Tue, 3 Jun 2025 11:31:24 +0000 (14:31 +0300)
committerGuenter Roeck <linux@roeck-us.net>
Sun, 20 Jul 2025 23:38:34 +0000 (16:38 -0700)
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>
drivers/hwmon/emc2305.c

index 0228511f47530fb5113d9a94ef10e00618e5ba5f..db65c3177f2920bf0258db570bc7d86cb5a62229 100644 (file)
 #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]);