|     |  | 
| 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",
 |  |