Commit e551b152 authored by Guenter Roeck's avatar Guenter Roeck Committed by Greg Kroah-Hartman

i8k: Stop reading SMM BIOS version during driver probe

This doesn't work on Studio, XPS, Vostro, and Precision laptops,
and it doesn't provide any value except to cause confusion when
it does not work. Drop it and always use DMI BIOS version instead.
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
Acked-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 26d09382
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
#define I8K_SMM_GET_TEMP 0x10a3 #define I8K_SMM_GET_TEMP 0x10a3
#define I8K_SMM_GET_DELL_SIG1 0xfea3 #define I8K_SMM_GET_DELL_SIG1 0xfea3
#define I8K_SMM_GET_DELL_SIG2 0xffa3 #define I8K_SMM_GET_DELL_SIG2 0xffa3
#define I8K_SMM_BIOS_VERSION 0x00a6
#define I8K_FAN_MULT 30 #define I8K_FAN_MULT 30
#define I8K_MAX_TEMP 127 #define I8K_MAX_TEMP 127
...@@ -207,17 +206,6 @@ static int i8k_smm(struct smm_regs *regs) ...@@ -207,17 +206,6 @@ static int i8k_smm(struct smm_regs *regs)
return rc; return rc;
} }
/*
* Read the bios version. Return the version as an integer corresponding
* to the ascii value, for example "A17" is returned as 0x00413137.
*/
static int i8k_get_bios_version(void)
{
struct smm_regs regs = { .eax = I8K_SMM_BIOS_VERSION, };
return i8k_smm(&regs) ? : regs.eax;
}
/* /*
* Read the Fn key status. * Read the Fn key status.
*/ */
...@@ -355,7 +343,8 @@ i8k_ioctl_unlocked(struct file *fp, unsigned int cmd, unsigned long arg) ...@@ -355,7 +343,8 @@ i8k_ioctl_unlocked(struct file *fp, unsigned int cmd, unsigned long arg)
switch (cmd) { switch (cmd) {
case I8K_BIOS_VERSION: case I8K_BIOS_VERSION:
val = i8k_get_bios_version(); val = (bios_version[0] << 16) |
(bios_version[1] << 8) | bios_version[2];
break; break;
case I8K_MACHINE_ID: case I8K_MACHINE_ID:
...@@ -717,8 +706,6 @@ static struct dmi_system_id i8k_dmi_table[] __initdata = { ...@@ -717,8 +706,6 @@ static struct dmi_system_id i8k_dmi_table[] __initdata = {
*/ */
static int __init i8k_probe(void) static int __init i8k_probe(void)
{ {
char buff[4];
int version;
const struct dmi_system_id *id; const struct dmi_system_id *id;
/* /*
...@@ -748,31 +735,6 @@ static int __init i8k_probe(void) ...@@ -748,31 +735,6 @@ static int __init i8k_probe(void)
return -ENODEV; return -ENODEV;
} }
/*
* Get SMM BIOS version.
*/
version = i8k_get_bios_version();
if (version <= 0) {
pr_warn("unable to get SMM BIOS version\n");
} else {
buff[0] = (version >> 16) & 0xff;
buff[1] = (version >> 8) & 0xff;
buff[2] = (version) & 0xff;
buff[3] = '\0';
/*
* If DMI BIOS version is unknown use SMM BIOS version.
*/
if (!dmi_get_system_info(DMI_BIOS_VERSION))
strlcpy(bios_version, buff, sizeof(bios_version));
/*
* Check if the two versions match.
*/
if (strncmp(buff, bios_version, sizeof(bios_version)) != 0)
pr_warn("BIOS version mismatch: %s != %s\n",
buff, bios_version);
}
i8k_fan_mult = fan_mult; i8k_fan_mult = fan_mult;
id = dmi_first_match(i8k_dmi_table); id = dmi_first_match(i8k_dmi_table);
if (id && fan_mult == I8K_FAN_MULT && id->driver_data) if (id && fan_mult == I8K_FAN_MULT && id->driver_data)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment