|
@@ -14,6 +14,7 @@
|
|
|
IT8712F Super I/O chip w/LPC interface
|
|
|
IT8716F Super I/O chip w/LPC interface
|
|
|
IT8718F Super I/O chip w/LPC interface
|
|
|
+ IT8720F Super I/O chip w/LPC interface
|
|
|
IT8726F Super I/O chip w/LPC interface
|
|
|
Sis950 A clone of the IT8705F
|
|
|
|
|
@@ -52,7 +53,7 @@
|
|
|
|
|
|
#define DRVNAME "it87"
|
|
|
|
|
|
-enum chips { it87, it8712, it8716, it8718 };
|
|
|
+enum chips { it87, it8712, it8716, it8718, it8720 };
|
|
|
|
|
|
static unsigned short force_id;
|
|
|
module_param(force_id, ushort, 0);
|
|
@@ -64,7 +65,10 @@ static struct platform_device *pdev;
|
|
|
#define DEV 0x07 /* Register: Logical device select */
|
|
|
#define VAL 0x2f /* The value to read/write */
|
|
|
#define PME 0x04 /* The device with the fan registers in it */
|
|
|
-#define GPIO 0x07 /* The device with the IT8718F VID value in it */
|
|
|
+
|
|
|
+/* The device with the IT8718F/IT8720F VID value in it */
|
|
|
+#define GPIO 0x07
|
|
|
+
|
|
|
#define DEVID 0x20 /* Register: Device ID */
|
|
|
#define DEVREV 0x22 /* Register: Device Revision */
|
|
|
|
|
@@ -113,6 +117,7 @@ superio_exit(void)
|
|
|
#define IT8705F_DEVID 0x8705
|
|
|
#define IT8716F_DEVID 0x8716
|
|
|
#define IT8718F_DEVID 0x8718
|
|
|
+#define IT8720F_DEVID 0x8720
|
|
|
#define IT8726F_DEVID 0x8726
|
|
|
#define IT87_ACT_REG 0x30
|
|
|
#define IT87_BASE_REG 0x60
|
|
@@ -150,8 +155,8 @@ static int fix_pwm_polarity;
|
|
|
#define IT87_REG_ALARM2 0x02
|
|
|
#define IT87_REG_ALARM3 0x03
|
|
|
|
|
|
-/* The IT8718F has the VID value in a different register, in Super-I/O
|
|
|
- configuration space. */
|
|
|
+/* The IT8718F and IT8720F have the VID value in a different register, in
|
|
|
+ Super-I/O configuration space. */
|
|
|
#define IT87_REG_VID 0x0a
|
|
|
/* The IT8705F and IT8712F earlier than revision 0x08 use register 0x0b
|
|
|
for fan divisors. Later IT8712F revisions must use 16-bit tachometer
|
|
@@ -282,7 +287,8 @@ static inline int has_16bit_fans(const struct it87_data *data)
|
|
|
return (data->type == it87 && data->revision >= 0x03)
|
|
|
|| (data->type == it8712 && data->revision >= 0x08)
|
|
|
|| data->type == it8716
|
|
|
- || data->type == it8718;
|
|
|
+ || data->type == it8718
|
|
|
+ || data->type == it8720;
|
|
|
}
|
|
|
|
|
|
static int it87_probe(struct platform_device *pdev);
|
|
@@ -992,6 +998,9 @@ static int __init it87_find(unsigned short *address,
|
|
|
case IT8718F_DEVID:
|
|
|
sio_data->type = it8718;
|
|
|
break;
|
|
|
+ case IT8720F_DEVID:
|
|
|
+ sio_data->type = it8720;
|
|
|
+ break;
|
|
|
case 0xffff: /* No device at all */
|
|
|
goto exit;
|
|
|
default:
|
|
@@ -1022,7 +1031,8 @@ static int __init it87_find(unsigned short *address,
|
|
|
int reg;
|
|
|
|
|
|
superio_select(GPIO);
|
|
|
- if (chip_type == it8718)
|
|
|
+ if ((chip_type == it8718) ||
|
|
|
+ (chip_type == it8720))
|
|
|
sio_data->vid_value = superio_inb(IT87_SIO_VID_REG);
|
|
|
|
|
|
reg = superio_inb(IT87_SIO_PINX2_REG);
|
|
@@ -1068,6 +1078,7 @@ static int __devinit it87_probe(struct platform_device *pdev)
|
|
|
"it8712",
|
|
|
"it8716",
|
|
|
"it8718",
|
|
|
+ "it8720",
|
|
|
};
|
|
|
|
|
|
res = platform_get_resource(pdev, IORESOURCE_IO, 0);
|
|
@@ -1226,7 +1237,7 @@ static int __devinit it87_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
|
|
|
if (data->type == it8712 || data->type == it8716
|
|
|
- || data->type == it8718) {
|
|
|
+ || data->type == it8718 || data->type == it8720) {
|
|
|
data->vrm = vid_which_vrm();
|
|
|
/* VID reading from Super-I/O config space if available */
|
|
|
data->vid = sio_data->vid_value;
|
|
@@ -1513,7 +1524,8 @@ static struct it87_data *it87_update_device(struct device *dev)
|
|
|
|
|
|
data->sensor = it87_read_value(data, IT87_REG_TEMP_ENABLE);
|
|
|
/* The 8705 does not have VID capability.
|
|
|
- The 8718 does not use IT87_REG_VID for the same purpose. */
|
|
|
+ The 8718 and the 8720 don't use IT87_REG_VID for the
|
|
|
+ same purpose. */
|
|
|
if (data->type == it8712 || data->type == it8716) {
|
|
|
data->vid = it87_read_value(data, IT87_REG_VID);
|
|
|
/* The older IT8712F revisions had only 5 VID pins,
|
|
@@ -1608,7 +1620,7 @@ static void __exit sm_it87_exit(void)
|
|
|
|
|
|
MODULE_AUTHOR("Chris Gauthron, "
|
|
|
"Jean Delvare <khali@linux-fr.org>");
|
|
|
-MODULE_DESCRIPTION("IT8705F/8712F/8716F/8718F/8726F, SiS950 driver");
|
|
|
+MODULE_DESCRIPTION("IT8705F/8712F/8716F/8718F/8720F/8726F, SiS950 driver");
|
|
|
module_param(update_vbat, bool, 0);
|
|
|
MODULE_PARM_DESC(update_vbat, "Update vbat if set else return powerup value");
|
|
|
module_param(fix_pwm_polarity, bool, 0);
|