Hi Nicolas,

thanks for the Mac Mini addition. Attached is an again quick and dirty patch adding support for the SMC temperature sensor. Maybe it's helpful.

Regards,

- Jan.
--- applesmc.c.orig	2006-10-17 15:58:42.000000000 +0200
+++ applesmc.c	2006-10-17 17:35:42.000000000 +0200
@@ -33,7 +33,7 @@
 #include <linux/timer.h>
 #include <linux/dmi.h>
 #include <asm/io.h>
-#include <linux/leds.h>
+// #include <linux/leds.h>
 
 /* data port used by apple SMC */
 #define APPLESMC_DATA_PORT	0x300
@@ -65,6 +65,8 @@
 #define FAN_SAFE_SPEED          "F0Sf" //r-o length 2
 #define FAN_TARGET_SPEED        "F0Tg" //r-w length 2
 
+#define FAN_TEMP                "TC0D"
+
 #define INIT_TIMEOUT_MSECS	5000	/* wait up to 5s for device init ... */
 #define INIT_WAIT_MSECS		50	/* ... in 50ms increments */
 
@@ -76,7 +78,7 @@
 #define SENSOR_Y 1
 #define SENSOR_Z 2
 
-static int debug = 0;
+static int debug = 1;
 static struct platform_device *pdev;
 static s16 rest_x;
 static s16 rest_y;
@@ -390,6 +392,32 @@
 		return sprintf(buf, "(%d,%d)\n", left, right);
 }
 
+static ssize_t applesmc_show_fan_temp(struct device *dev, char *buf, char *key, int offset)
+{
+    int ret;
+    char newkey[5];
+    u8 buffer[2];
+    u8 temp;
+    
+    newkey[0] = key[0];
+    newkey[1] = key[1];
+    newkey[2] = '0' + offset;
+    newkey[3] = key[3];
+    newkey[4] = 0;
+
+    down(&applesmc_sem);
+
+    ret = applesmc_read_key(newkey, buffer, 2);
+    temp = (buffer[0] * 256 + buffer[1]) >> 8;
+
+    up(&applesmc_sem);
+
+    if (ret)
+	return ret;
+    else
+	return sprintf(buf, "%d\n", (int) temp);
+}
+
 static ssize_t applesmc_show_fan_speed(struct device *dev, char *buf,
 							char* key, int offset)
 {
@@ -519,6 +547,7 @@
 	return count;
 }
 
+/*
 static void applesmc_backlight_set(struct led_classdev *led_cdev,
 				enum led_brightness value)
 {
@@ -536,13 +565,18 @@
 	.default_trigger	= "nand-disk",
 	.brightness_set		= applesmc_backlight_set,
 };
-
+*/
 static DEVICE_ATTR(position, 0444, applesmc_position_show, NULL);
 static DEVICE_ATTR(calibrate, 0644, applesmc_calibrate_show,applesmc_calibrate_store);
 
 static DEVICE_ATTR(light, 0444, applesmc_light_show, NULL);
 
 #define sysfs_fan_speeds_offset(offset) \
+static ssize_t show_fan_temp_##offset (struct device *dev, \
+				struct device_attribute *attr, char *buf) \
+{ \
+	return applesmc_show_fan_temp(dev, buf, FAN_TEMP, offset); \
+} \
 static ssize_t show_fan_actual_speed_##offset (struct device *dev, \
 				struct device_attribute *attr, char *buf) \
 { \
@@ -551,6 +585,9 @@
 static DEVICE_ATTR(fan##offset##_actual_speed, S_IRUGO, \
 					show_fan_actual_speed_##offset, NULL); \
 \
+static DEVICE_ATTR(fan##offset##_temp, S_IRUGO, \
+					show_fan_temp_##offset, NULL); \
+\
 static ssize_t show_fan_minimum_speed_##offset (struct device *dev, \
 				struct device_attribute *attr, char *buf) \
 { \
@@ -610,6 +647,7 @@
 
 #define device_create_file_fan(client, offset) \
 do { \
+sysfs_create_file(client, &dev_attr_fan##offset##_temp.attr); \
 sysfs_create_file(client, &dev_attr_fan##offset##_actual_speed.attr); \
 sysfs_create_file(client, &dev_attr_fan##offset##_minimum_speed.attr); \
 sysfs_create_file(client, &dev_attr_fan##offset##_maximum_speed.attr); \
@@ -801,7 +839,7 @@
 			goto out_accelerometer;
 
 		/* register as a led device */
-		ret = led_classdev_register(&pdev->dev, &applesmc_backlight);
+//		ret = led_classdev_register(&pdev->dev, &applesmc_backlight);
 		if (ret < 0)
 			goto out_accelerometer;
 	}
@@ -825,8 +863,8 @@
 
 static void __exit applesmc_exit(void)
 {
-	if (applesmc_light)
-		led_classdev_unregister(&applesmc_backlight);
+//	if (applesmc_light)
+//		led_classdev_unregister(&applesmc_backlight);
 	if (applesmc_accelerometer)
 		applesmc_release_accelerometer();
 	platform_device_unregister(pdev);
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Mactel-linux-devel mailing list
Mactel-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mactel-linux-devel

Reply via email to