Commit ef8b1b4e authored by Florin Leotescu's avatar Florin Leotescu Committed by Guenter Roeck
Browse files

hwmon: (emc2305) Enable PWM polarity and output configuration



Enable configuration of PWM polarity and PWM output config
based Device Tree properties.

Signed-off-by: default avatarFlorin Leotescu <florin.leotescu@nxp.com>
Link: https://lore.kernel.org/r/20250603113125.3175103-4-florin.leotescu@oss.nxp.com


Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 2ed4db7a
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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]);