|
|
Line 1: |
Line 1: |
− | --- ibm-acpi-0.11-orig/ibm_acpi.c 2005-03-17 12:06:16.000000000 +0200 | + | --- 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
| + | 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) | + | @@ -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, &status)) | + | if (!acpi_ec_read(fan_status_offset, |
− | 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",
| |