Difference between revisions of "Code/ibm-acpi-0.11-2.6.13-fan.patch"

From ThinkWiki
Jump to: navigation, search
m
(Everything in a pre block so it's readable.)
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
--- ibm-acpi-0.11-orig/ibm_acpi.c 2005-03-17 12:06:16.000000000 0200
+
<pre>
    ibm-acpi-0.11/ibm_acpi.c 2005-10-26 06:21:57.000000000 0200
+
--- ibm-acpi-0.11-orig/ibm_acpi.c 2005-03-17 12:06:16.000000000 +0200
@@ -1488,11 1488,18 @@ static int fan_read(char *p)
+
+++ ibm-acpi-0.11/ibm_acpi.c 2005-10-26 06:21:57.000000000 +0200
 +
@@ -1488,11 +1488,18 @@ static int fan_read(char *p)
 
  } else {
 
  } else {
 
  /* all except 570, 600e/x, 770e, 770x */
 
  /* all except 570, 600e/x, 770e, 770x */
  if (!acpi_ec_read(fan_status_offset,
+
  if (!acpi_ec_read(fan_status_offset, &status))
 +
len += sprintf(p + len, "status:\t\tunreadable\n");
 +
- else
 +
+ else {
 +
len += sprintf(p + len, "status:\t\t%s\n",
 +
-       enabled(status, 7));
 +
+               status ? "enabled" : "disabled");
 +
+ if (status & 0x40)
 +
+ len += sprintf(p + len, "level:\t\tdisengaged\n");
 +
+ else if (status & 0x80)
 +
+ len += sprintf(p + len, "level:\t\tauto\n");
 +
+ else
 +
+ len += sprintf(p + len, "level:\t\t%d\n", status);
 +
+ }
 +
 +
if (!acpi_ec_read(fan_rpm_offset,    &lo) ||
 +
    !acpi_ec_read(fan_rpm_offset + 1, &hi))
 +
len += sprintf(p + len, "speed:\t\tunreadable\n");
 +
@@ -1506,9 +1513,12 @@ static int fan_read(char *p)
 +
len += sprintf(p + len, "commands:\tlevel <level>"
 +
      " (<level> is 0-7)\n");
 +
if (!gfan_handle)
 +
/* all except 570, 600e/x, 770e, 770x */
 +
- len += sprintf(p + len, "commands:\tenable, disable\n");
 +
+ len += sprintf(p + len,
 +
+               "commands:\tenable, disable, level <level>\n"
 +
+               "        \t(<level> is 0-7, auto"
 +
+               "or disengaged)\n");
 +
if (fans_handle)
 +
/* X31, X40 */
 +
len += sprintf(p + len, "commands:\tspeed <speed>"
 +
      " (<speed> is 0-65535)\n");
 +
@@ -1528,17 +1538,29 @@ static int fan_write(char *buf)
 +
/* 570, 770x-JL */
 +
if (!acpi_evalf(sfan_handle, NULL, NULL, "vd", level))
 +
return -EIO;
 +
} else if (!gfan_handle &&
 +
-   strlencmp(cmd, "enable") == 0) {
 +
+   ( (strlencmp(cmd, "enable") == 0) ||
 +
+     (strlencmp(cmd, "level auto") == 0) ) ) {
 +
/* all except 570, 600e/x, 770e, 770x */
 +
if (!acpi_ec_write(fan_status_offset, 0x80))
 +
return -EIO;
 +
} else if (!gfan_handle &&
 +
  strlencmp(cmd, "disable") == 0) {
 +
/* all except 570, 600e/x, 770e, 770x */
 +
if (!acpi_ec_write(fan_status_offset, 0x00))
 +
return -EIO;
 +
+ } else if (!gfan_handle &&
 +
+   strlencmp(cmd, "level disengaged") == 0) {
 +
+ /* all except 570, 600e/x, 770e, 770x */
 +
+ if (!acpi_ec_write(fan_status_offset, 0x40))
 +
+ return -EIO;
 +
+ } else if (!gfan_handle &&
 +
+     sscanf(cmd, "level %d", &level) == 1 &&
 +
+     level >=0 && level <= 7) {
 +
+ /* all except 570, 600e/x, 770e, 770x */
 +
+ if (!acpi_ec_write(fan_status_offset, level))
 +
+ return -EIO;
 +
} else if (fans_handle &&
 +
    sscanf(cmd, "speed %d", &speed) == 1 &&
 +
    speed >= 0 && speed <= 65535) {
 +
/* X31, X40 */
 +
@@ -1751,9 +1773,9 @@ static int __init setup_notify(struct ib
 +
 +
return 0;
 +
}
 +
 +
-static int device_add(struct acpi_device *device)
 +
+static int ibmacpi_device_add(struct acpi_device *device)
 +
{
 +
return 0;
 +
}
 +
 +
@@ -1769,9 +1791,9 @@ static int __init register_driver(struct
 +
 +
memset(ibm->driver, 0, sizeof(struct acpi_driver));
 +
sprintf(ibm->driver->name, "%s/%s", IBM_NAME, ibm->name);
 +
ibm->driver->ids = ibm->hid;
 +
- ibm->driver->ops.add = &device_add;
 +
+ ibm->driver->ops.add = &ibmacpi_device_add;
 +
 +
ret = acpi_bus_register_driver(ibm->driver);
 +
if (ret < 0) {
 +
printk(IBM_ERR "acpi_bus_register_driver(%s) failed: %d\n",
 +
</pre>

Latest revision as of 09:20, 11 April 2025

--- ibm-acpi-0.11-orig/ibm_acpi.c	2005-03-17 12:06:16.000000000 +0200
+++ ibm-acpi-0.11/ibm_acpi.c	2005-10-26 06:21:57.000000000 +0200
@@ -1488,11 +1488,18 @@ static int fan_read(char *p)
 	} else {
 		/* all except 570, 600e/x, 770e, 770x */
 		if (!acpi_ec_read(fan_status_offset, &status))
 			len += sprintf(p + len, "status:\t\tunreadable\n");
-		else
+		else {
 			len += sprintf(p + len, "status:\t\t%s\n",
-				       enabled(status, 7));
+			              status ? "enabled" : "disabled");
+			if (status & 0x40)
+				len += sprintf(p + len, "level:\t\tdisengaged\n");
+			else if (status & 0x80)
+				len += sprintf(p + len, "level:\t\tauto\n");
+			else
+				len += sprintf(p + len, "level:\t\t%d\n", status);
+		}
 
 		if (!acpi_ec_read(fan_rpm_offset,     &lo) ||
 		    !acpi_ec_read(fan_rpm_offset + 1, &hi))
 			len += sprintf(p + len, "speed:\t\tunreadable\n");
@@ -1506,9 +1513,12 @@ static int fan_read(char *p)
 		len += sprintf(p + len, "commands:\tlevel <level>"
 			       " (<level> is 0-7)\n");
 	if (!gfan_handle)
 		/* all except 570, 600e/x, 770e, 770x */
-		len += sprintf(p + len, "commands:\tenable, disable\n");
+		len += sprintf(p + len, 
+		              "commands:\tenable, disable, level <level>\n"
+		              "         \t(<level> is 0-7, auto"
+		              "or disengaged)\n");
 	if (fans_handle)
 		/* X31, X40 */
 		len += sprintf(p + len, "commands:\tspeed <speed>"
 			       " (<speed> is 0-65535)\n");
@@ -1528,17 +1538,29 @@ static int fan_write(char *buf)
 			/* 570, 770x-JL */
 			if (!acpi_evalf(sfan_handle, NULL, NULL, "vd", level))
 				return -EIO;
 		} else if (!gfan_handle &&
-			   strlencmp(cmd, "enable") == 0) {
+			   ( (strlencmp(cmd, "enable") == 0) ||
+			     (strlencmp(cmd, "level auto") == 0) ) ) {
 			/* all except 570, 600e/x, 770e, 770x */
 			if (!acpi_ec_write(fan_status_offset, 0x80))
 				return -EIO;
 		} else if (!gfan_handle &&
 			   strlencmp(cmd, "disable") == 0) {
 			/* all except 570, 600e/x, 770e, 770x */
 			if (!acpi_ec_write(fan_status_offset, 0x00))
 				return -EIO;
+		} else if (!gfan_handle &&
+			   strlencmp(cmd, "level disengaged") == 0) {
+			/* all except 570, 600e/x, 770e, 770x */
+			if (!acpi_ec_write(fan_status_offset, 0x40))
+				return -EIO;
+		} else if (!gfan_handle &&
+		    sscanf(cmd, "level %d", &level) == 1 &&
+		    level >=0 && level <= 7) {
+			/* all except 570, 600e/x, 770e, 770x */
+			if (!acpi_ec_write(fan_status_offset, level))
+				return -EIO;
 		} else if (fans_handle &&
 		    sscanf(cmd, "speed %d", &speed) == 1 &&
 		    speed >= 0 && speed <= 65535) {
 			/* X31, X40 */
@@ -1751,9 +1773,9 @@ static int __init setup_notify(struct ib
 
 	return 0;
 }
 
-static int device_add(struct acpi_device *device)
+static int ibmacpi_device_add(struct acpi_device *device)
 {
 	return 0;
 }
 
@@ -1769,9 +1791,9 @@ static int __init register_driver(struct
 
 	memset(ibm->driver, 0, sizeof(struct acpi_driver));
 	sprintf(ibm->driver->name, "%s/%s", IBM_NAME, ibm->name);
 	ibm->driver->ids = ibm->hid;
-	ibm->driver->ops.add = &device_add;
+	ibm->driver->ops.add = &ibmacpi_device_add;
 
 	ret = acpi_bus_register_driver(ibm->driver);
 	if (ret < 0) {
 		printk(IBM_ERR "acpi_bus_register_driver(%s) failed: %d\n",