Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b1b561a2 authored by Guenter Roeck's avatar Guenter Roeck
Browse files

hwmon: (f75375s) Initialize pwmX_mode and pwmX_enable if there is no platform data



pwmX_mode and pwmX_enable are not initialized if no platform data is provided to
the driver. Read chip configuration at driver initialization time and initialize
attributes to reflect chip configuration.

Cc: Riku Voipio <riku.voipio@iki.fi>
Reviewed-by: default avatarBjoern Gerhart <oss@extracloud.de>
Signed-off-by: default avatarGuenter Roeck <guenter.roeck@ericsson.com>
parent 3310600a
Loading
Loading
Loading
Loading
+26 −2
Original line number Diff line number Diff line
@@ -652,6 +652,31 @@ static void f75375_init(struct i2c_client *client, struct f75375_data *data,
		struct f75375s_platform_data *f75375s_pdata)
{
	int nr;

	if (!f75375s_pdata) {
		u8 conf, mode;
		int nr;

		conf = f75375_read8(client, F75375_REG_CONFIG1);
		mode = f75375_read8(client, F75375_REG_FAN_TIMER);
		for (nr = 0; nr < 2; nr++) {
			if (!(conf & (1 << FAN_CTRL_LINEAR(nr))))
				data->pwm_mode[nr] = 1;
			switch ((mode >> FAN_CTRL_MODE(nr)) & 3) {
			case 0:		/* speed */
				data->pwm_enable[nr] = 3;
				break;
			case 1:		/* automatic */
				data->pwm_enable[nr] = 2;
				break;
			default:	/* manual */
				data->pwm_enable[nr] = 1;
				break;
			}
		}
		return;
	}

	set_pwm_enable_direct(client, 0, f75375s_pdata->pwm_enable[0]);
	set_pwm_enable_direct(client, 1, f75375s_pdata->pwm_enable[1]);
	for (nr = 0; nr < 2; nr++) {
@@ -703,7 +728,6 @@ static int f75375_probe(struct i2c_client *client,
		goto exit_remove;
	}

	if (f75375s_pdata != NULL)
	f75375_init(client, data, f75375s_pdata);

	return 0;