]> git.sur5r.net Git - groeck-it87/commitdiff
Add support for IT8613E
authorandreychernyshev <atchernyshev@hotmail.com>
Sat, 15 Apr 2017 12:07:44 +0000 (15:07 +0300)
committerGuenter Roeck <linux@roeck-us.net>
Wed, 19 Apr 2017 03:23:47 +0000 (20:23 -0700)
[groeck: Fix README]

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
README
TODO
it87.c

diff --git a/README b/README
index 055702c9fc73a44db332550893498d1aa4a5c290..00195801e2c3b5da52ddd316c02030a43db34156 100644 (file)
--- a/README
+++ b/README
@@ -6,6 +6,10 @@ Supported chips:
     Prefix: 'it8603'
     Addresses scanned: from Super I/O config space (8 I/O ports)
     Datasheet: Not publicly available
+  * IT8613E
+    Prefix: 'it8613'
+    Addresses scanned: from Super I/O config space (8 I/O ports)
+    Datasheet: Not publicly available
   * IT8620E
     Prefix: 'it8620'
     Addresses scanned: from Super I/O config space (8 I/O ports)
diff --git a/TODO b/TODO
index 0a2a0bea1c550bfc14e88dd063096310af8e1200..c08b8957efac0d077caf31526df8e43e247a7e75 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,3 +1,4 @@
 - AMD CPU temperature sensor type is shown as Intel temperature sensor.
 - Add support for IT8655E (Asus Prime B350m-A)
 - Fix temperature sensor type for IT8665E and IT8686E
+- Need to disable first fan for IT8613E 
diff --git a/it87.c b/it87.c
index 538f6b6d4fb0b2060673bb16d1316b247c980cca..4e01fd0e97c507832a77ff6c50d93b436e267cf0 100644 (file)
--- a/it87.c
+++ b/it87.c
@@ -12,6 +12,7 @@
  *
  *  Supports: IT8603E  Super I/O chip w/LPC interface
  *            IT8607E  Super I/O chip w/LPC interface
+ *            IT8613E  Super I/O chip w/LPC interface
  *            IT8620E  Super I/O chip w/LPC interface
  *            IT8622E  Super I/O chip w/LPC interface
  *            IT8623E  Super I/O chip w/LPC interface
@@ -80,7 +81,7 @@
 
 enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8732,
             it8771, it8772, it8781, it8782, it8783, it8786, it8790,
-            it8792, it8603, it8607, it8620, it8622, it8628, it8655, it8665,
+            it8792, it8603, it8607, it8613, it8620, it8622, it8628, it8655, it8665,
             it8686 };
 
 static unsigned short force_id;
@@ -210,6 +211,7 @@ static inline void superio_exit(int ioreg)
 #define IT8790E_DEVID 0x8790
 #define IT8603E_DEVID 0x8603
 #define IT8607E_DEVID 0x8607
+#define IT8613E_DEVID 0x8613
 #define IT8620E_DEVID 0x8620
 #define IT8622E_DEVID 0x8622
 #define IT8623E_DEVID 0x8623
@@ -557,6 +559,16 @@ static const struct it87_devices it87_devices[] = {
                .num_temp_limit = 3,
                .peci_mask = 0x07,
        },
+        [it8613] = {
+                .name = "it8613",
+                .suffix = "E",
+                .features = FEAT_NEWER_AUTOPWM | FEAT_11MV_ADC | FEAT_16BIT_FANS
+                  | FEAT_TEMP_OFFSET | FEAT_TEMP_PECI | FEAT_FIVE_FANS
+                  | FEAT_FIVE_PWM | FEAT_IN7_INTERNAL | FEAT_PWM_FREQ2
+                  | FEAT_AVCC3 | FEAT_VIN3_5V | FEAT_SCALING,
+                .num_temp_limit = 3,
+                .peci_mask = 0x07,
+        },
        [it8620] = {
                .name = "it8620",
                .suffix = "E",
@@ -2784,6 +2796,9 @@ static int __init it87_find(int sioaddr, unsigned short *address,
        case IT8607E_DEVID:
                sio_data->type = it8607;
                break;
+       case IT8613E_DEVID:
+                sio_data->type = it8613;
+                break;
        case IT8620E_DEVID:
                sio_data->type = it8620;
                break;
@@ -3007,7 +3022,7 @@ static int __init it87_find(int sioaddr, unsigned short *address,
 
                sio_data->beep_pin = superio_inb(sioaddr,
                                                 IT87_SIO_BEEP_PIN_REG) & 0x3f;
-       } else if (sio_data->type == it8622) {
+       } else if (sio_data->type == it8613 || sio_data->type == it8622) {
                int reg;
 
                superio_select(sioaddr, GPIO);
@@ -3288,6 +3303,16 @@ static void it87_init_device(struct platform_device *pdev)
                data->REG_TEMP_LOW = IT87_REG_TEMP_LOW;
                data->REG_TEMP_HIGH = IT87_REG_TEMP_HIGH;
                break;
+       case it8613:
+                data->REG_FAN = IT87_REG_FAN;
+                data->REG_FANX = IT87_REG_FANX;
+                data->REG_FAN_MIN = IT87_REG_FAN_MIN;
+                data->REG_FANX_MIN = IT87_REG_FANX_MIN;
+                data->REG_PWM = IT87_REG_PWM_8665;
+                data->REG_TEMP_OFFSET = IT87_REG_TEMP_OFFSET;
+                data->REG_TEMP_LOW = IT87_REG_TEMP_LOW;
+                data->REG_TEMP_HIGH = IT87_REG_TEMP_HIGH;
+                break;
        default:
                data->REG_FAN = IT87_REG_FAN;
                data->REG_FANX = IT87_REG_FANX;