[PATCH]: Asus E35M1-I deluxe sensor support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I've put a patch for linux 3.5.3 together to support the it8771f on the e35m1-i deluxe motherboard. It may not be perfect due to the fact that it is a custom Asus chip without technical doc available but it does seem to give proper results. This may also work on the e45m1-i deluxe as well, but i'm not sure.

I've attached the patch as well as inlined it.

--- ./drivers/hwmon/it87.c.orig    2012-08-25 20:32:13.000000000 -0600
+++ ./drivers/hwmon/it87.c    2012-08-29 02:32:16.613908298 -0600
@@ -61,7 +61,7 @@

 #define DRVNAME "it87"

-enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8782,
+enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8771, it8782,
          it8783 };

 static unsigned short force_id;
@@ -140,6 +140,7 @@ static inline void superio_exit(void)
 #define IT8721F_DEVID 0x8721
 #define IT8726F_DEVID 0x8726
 #define IT8728F_DEVID 0x8728
+#define IT8771F_DEVID 0x8771
 #define IT8782F_DEVID 0x8782
 #define IT8783E_DEVID 0x8783
 #define IT87_ACT_REG  0x30
@@ -303,7 +304,8 @@ static inline int has_12mv_adc(const str
      * on selected inputs.
      */
     return data->type == it8721
-        || data->type == it8728;
+        || data->type == it8728
+        || data->type == it8771;
 }

 static inline int has_newer_autopwm(const struct it87_data *data)
@@ -313,7 +315,8 @@ static inline int has_newer_autopwm(cons
      * mapping and the manual duty cycle.
      */
     return data->type == it8721
-        || data->type == it8728;
+        || data->type == it8728
+        || data->type == it8771;
 }

 static int adc_lsb(const struct it87_data *data, int nr)
@@ -412,6 +415,7 @@ static inline int has_16bit_fans(const s
         || data->type == it8720
         || data->type == it8721
         || data->type == it8728
+        || data->type == it8771
         || data->type == it8782
         || data->type == it8783;
 }
@@ -1701,6 +1705,9 @@ static int __init it87_find(unsigned sho
     case IT8728F_DEVID:
         sio_data->type = it8728;
         break;
+    case IT8771F_DEVID:
+        sio_data->type = it8771;
+        break;
     case IT8782F_DEVID:
         sio_data->type = it8782;
         break;
@@ -1818,7 +1825,7 @@ static int __init it87_find(unsigned sho

         reg = superio_inb(IT87_SIO_GPIO3_REG);
         if (sio_data->type == it8721 || sio_data->type == it8728 ||
-            sio_data->type == it8782) {
+            sio_data->type == it8771 || sio_data->type == it8782) {
             /*
              * IT8721F/IT8758E, and IT8782F don't have VID pins
              * at all, not sure about the IT8728F.
@@ -1875,7 +1882,8 @@ static int __init it87_find(unsigned sho
         if (reg & (1 << 0))
             sio_data->internal |= (1 << 0);
         if ((reg & (1 << 1)) || sio_data->type == it8721 ||
-            sio_data->type == it8728)
+            sio_data->type == it8728 ||
+            sio_data->type == it8771)
             sio_data->internal |= (1 << 1);

         /*
@@ -1984,6 +1992,7 @@ static int __devinit it87_probe(struct p
         "it8720",
         "it8721",
         "it8728",
+        "it8771",
         "it8782",
         "it8783",
     };


--- ./drivers/hwmon/it87.c.orig	2012-08-25 20:32:13.000000000 -0600
+++ ./drivers/hwmon/it87.c	2012-08-29 02:32:16.613908298 -0600
@@ -61,7 +61,7 @@
 
 #define DRVNAME "it87"
 
-enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8782,
+enum chips { it87, it8712, it8716, it8718, it8720, it8721, it8728, it8771, it8782,
 	     it8783 };
 
 static unsigned short force_id;
@@ -140,6 +140,7 @@ static inline void superio_exit(void)
 #define IT8721F_DEVID 0x8721
 #define IT8726F_DEVID 0x8726
 #define IT8728F_DEVID 0x8728
+#define IT8771F_DEVID 0x8771
 #define IT8782F_DEVID 0x8782
 #define IT8783E_DEVID 0x8783
 #define IT87_ACT_REG  0x30
@@ -303,7 +304,8 @@ static inline int has_12mv_adc(const str
 	 * on selected inputs.
 	 */
 	return data->type == it8721
-	    || data->type == it8728;
+	    || data->type == it8728
+	    || data->type == it8771;
 }
 
 static inline int has_newer_autopwm(const struct it87_data *data)
@@ -313,7 +315,8 @@ static inline int has_newer_autopwm(cons
 	 * mapping and the manual duty cycle.
 	 */
 	return data->type == it8721
-	    || data->type == it8728;
+	    || data->type == it8728
+	    || data->type == it8771;
 }
 
 static int adc_lsb(const struct it87_data *data, int nr)
@@ -412,6 +415,7 @@ static inline int has_16bit_fans(const s
 	    || data->type == it8720
 	    || data->type == it8721
 	    || data->type == it8728
+	    || data->type == it8771
 	    || data->type == it8782
 	    || data->type == it8783;
 }
@@ -1701,6 +1705,9 @@ static int __init it87_find(unsigned sho
 	case IT8728F_DEVID:
 		sio_data->type = it8728;
 		break;
+	case IT8771F_DEVID:
+		sio_data->type = it8771;
+		break;
 	case IT8782F_DEVID:
 		sio_data->type = it8782;
 		break;
@@ -1818,7 +1825,7 @@ static int __init it87_find(unsigned sho
 
 		reg = superio_inb(IT87_SIO_GPIO3_REG);
 		if (sio_data->type == it8721 || sio_data->type == it8728 ||
-		    sio_data->type == it8782) {
+		    sio_data->type == it8771 || sio_data->type == it8782) {
 			/*
 			 * IT8721F/IT8758E, and IT8782F don't have VID pins
 			 * at all, not sure about the IT8728F.
@@ -1875,7 +1882,8 @@ static int __init it87_find(unsigned sho
 		if (reg & (1 << 0))
 			sio_data->internal |= (1 << 0);
 		if ((reg & (1 << 1)) || sio_data->type == it8721 ||
-		    sio_data->type == it8728)
+		    sio_data->type == it8728 ||
+		    sio_data->type == it8771)
 			sio_data->internal |= (1 << 1);
 
 		/*
@@ -1984,6 +1992,7 @@ static int __devinit it87_probe(struct p
 		"it8720",
 		"it8721",
 		"it8728",
+		"it8771",
 		"it8782",
 		"it8783",
 	};
_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors

[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux