mirror of
https://github.com/adulau/aha.git
synced 2024-12-30 20:56:23 +00:00
[PATCH] hwmon: Fix for first generation Abit uGuru chips
Now that the abituguru driver is seeing some more widespread testing it has turned out that one the first generation of Abit uGuru motherboards, with uGuru revision 1, the autodetect bank1 sensor type code doesn't (always) work. This patch adds a module param to override the autodetect, and it adds validity checks for the value of the 2 other autodetection override module params. An example of howto use the new param can be found here: http://lm-sensors.org/wiki/Configurations/Abit/AN7 Signed-off-by: Hans de Goede <j.w.r.degoede@hhs.nl> Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
1392707977
commit
9b2ad12982
1 changed files with 19 additions and 2 deletions
|
@ -142,6 +142,14 @@ static const u8 abituguru_pwm_max[5] = { 0, 255, 255, 75, 75 };
|
||||||
static int force;
|
static int force;
|
||||||
module_param(force, bool, 0);
|
module_param(force, bool, 0);
|
||||||
MODULE_PARM_DESC(force, "Set to one to force detection.");
|
MODULE_PARM_DESC(force, "Set to one to force detection.");
|
||||||
|
static int bank1_types[ABIT_UGURU_MAX_BANK1_SENSORS] = { -1, -1, -1, -1, -1,
|
||||||
|
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
|
||||||
|
module_param_array(bank1_types, int, NULL, 0);
|
||||||
|
MODULE_PARM_DESC(bank1_types, "Bank1 sensortype autodetection override:\n"
|
||||||
|
" -1 autodetect\n"
|
||||||
|
" 0 volt sensor\n"
|
||||||
|
" 1 temp sensor\n"
|
||||||
|
" 2 not connected");
|
||||||
static int fan_sensors;
|
static int fan_sensors;
|
||||||
module_param(fan_sensors, int, 0);
|
module_param(fan_sensors, int, 0);
|
||||||
MODULE_PARM_DESC(fan_sensors, "Number of fan sensors on the uGuru "
|
MODULE_PARM_DESC(fan_sensors, "Number of fan sensors on the uGuru "
|
||||||
|
@ -397,6 +405,15 @@ abituguru_detect_bank1_sensor_type(struct abituguru_data *data,
|
||||||
u8 val, buf[3];
|
u8 val, buf[3];
|
||||||
int ret = ABIT_UGURU_NC;
|
int ret = ABIT_UGURU_NC;
|
||||||
|
|
||||||
|
/* If overriden by the user return the user selected type */
|
||||||
|
if (bank1_types[sensor_addr] >= ABIT_UGURU_IN_SENSOR &&
|
||||||
|
bank1_types[sensor_addr] <= ABIT_UGURU_NC) {
|
||||||
|
ABIT_UGURU_DEBUG(2, "assuming sensor type %d for bank1 sensor "
|
||||||
|
"%d because of \"bank1_types\" module param\n",
|
||||||
|
bank1_types[sensor_addr], (int)sensor_addr);
|
||||||
|
return bank1_types[sensor_addr];
|
||||||
|
}
|
||||||
|
|
||||||
/* First read the sensor and the current settings */
|
/* First read the sensor and the current settings */
|
||||||
if (abituguru_read(data, ABIT_UGURU_SENSOR_BANK1, sensor_addr, &val,
|
if (abituguru_read(data, ABIT_UGURU_SENSOR_BANK1, sensor_addr, &val,
|
||||||
1, ABIT_UGURU_MAX_RETRIES) != 1)
|
1, ABIT_UGURU_MAX_RETRIES) != 1)
|
||||||
|
@ -514,7 +531,7 @@ abituguru_detect_no_bank2_sensors(struct abituguru_data *data)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (fan_sensors) {
|
if (fan_sensors > 0 && fan_sensors <= ABIT_UGURU_MAX_BANK2_SENSORS) {
|
||||||
data->bank2_sensors = fan_sensors;
|
data->bank2_sensors = fan_sensors;
|
||||||
ABIT_UGURU_DEBUG(2, "assuming %d fan sensors because of "
|
ABIT_UGURU_DEBUG(2, "assuming %d fan sensors because of "
|
||||||
"\"fan_sensors\" module param\n",
|
"\"fan_sensors\" module param\n",
|
||||||
|
@ -568,7 +585,7 @@ abituguru_detect_no_pwms(struct abituguru_data *data)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
if (pwms) {
|
if (pwms > 0 && pwms <= ABIT_UGURU_MAX_PWMS) {
|
||||||
data->pwms = pwms;
|
data->pwms = pwms;
|
||||||
ABIT_UGURU_DEBUG(2, "assuming %d PWM outputs because of "
|
ABIT_UGURU_DEBUG(2, "assuming %d PWM outputs because of "
|
||||||
"\"pwms\" module param\n", (int)data->pwms);
|
"\"pwms\" module param\n", (int)data->pwms);
|
||||||
|
|
Loading…
Reference in a new issue