mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
hwmon: (lm63) LM64 has a dedicated pin for tachometer
On the LM64, the tachometer function has a dedicated pin and fan speed monitoring is always enabled. Signed-off-by: Jean Delvare <khali@linux-fr.org> Acked-by: Guenter Roeck <guenter.roeck@ericsson.com>
This commit is contained in:
parent
f496b2d4f1
commit
409c0b5bdf
@ -54,7 +54,10 @@ value for measuring the speed of the fan. It can measure fan speeds down to
|
|||||||
Note that the pin used for fan monitoring is shared with an alert out
|
Note that the pin used for fan monitoring is shared with an alert out
|
||||||
function. Depending on how the board designer wanted to use the chip, fan
|
function. Depending on how the board designer wanted to use the chip, fan
|
||||||
speed monitoring will or will not be possible. The proper chip configuration
|
speed monitoring will or will not be possible. The proper chip configuration
|
||||||
is left to the BIOS, and the driver will blindly trust it.
|
is left to the BIOS, and the driver will blindly trust it. Only the original
|
||||||
|
LM63 suffers from this limitation, the LM64 and LM96163 have separate pins
|
||||||
|
for fan monitoring and alert out. On the LM64, monitoring is always enabled;
|
||||||
|
on the LM96163 it can be disabled.
|
||||||
|
|
||||||
A PWM output can be used to control the speed of the fan. The LM63 has two
|
A PWM output can be used to control the speed of the fan. The LM63 has two
|
||||||
PWM modes: manual and automatic. Automatic mode is not fully implemented yet
|
PWM modes: manual and automatic. Automatic mode is not fully implemented yet
|
||||||
|
@ -796,6 +796,9 @@ static void lm63_init_client(struct i2c_client *client)
|
|||||||
i2c_smbus_write_byte_data(client, LM63_REG_CONFIG1,
|
i2c_smbus_write_byte_data(client, LM63_REG_CONFIG1,
|
||||||
data->config);
|
data->config);
|
||||||
}
|
}
|
||||||
|
/* Tachometer is always enabled on LM64 */
|
||||||
|
if (data->kind == lm64)
|
||||||
|
data->config |= 0x04;
|
||||||
|
|
||||||
/* We may need pwm1_freq before ever updating the client data */
|
/* We may need pwm1_freq before ever updating the client data */
|
||||||
data->pwm1_freq = i2c_smbus_read_byte_data(client, LM63_REG_PWM_FREQ);
|
data->pwm1_freq = i2c_smbus_read_byte_data(client, LM63_REG_PWM_FREQ);
|
||||||
@ -836,9 +839,10 @@ static void lm63_init_client(struct i2c_client *client)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Show some debug info about the LM63 configuration */
|
/* Show some debug info about the LM63 configuration */
|
||||||
dev_dbg(&client->dev, "Alert/tach pin configured for %s\n",
|
if (data->kind == lm63)
|
||||||
(data->config & 0x04) ? "tachometer input" :
|
dev_dbg(&client->dev, "Alert/tach pin configured for %s\n",
|
||||||
"alert output");
|
(data->config & 0x04) ? "tachometer input" :
|
||||||
|
"alert output");
|
||||||
dev_dbg(&client->dev, "PWM clock %s kHz, output frequency %u Hz\n",
|
dev_dbg(&client->dev, "PWM clock %s kHz, output frequency %u Hz\n",
|
||||||
(data->config_fan & 0x08) ? "1.4" : "360",
|
(data->config_fan & 0x08) ? "1.4" : "360",
|
||||||
((data->config_fan & 0x08) ? 700 : 180000) / data->pwm1_freq);
|
((data->config_fan & 0x08) ? 700 : 180000) / data->pwm1_freq);
|
||||||
|
Loading…
Reference in New Issue
Block a user