diff options
Diffstat (limited to 'drivers/acpi/thermal.c')
| -rw-r--r-- | drivers/acpi/thermal.c | 57 | 
1 files changed, 20 insertions, 37 deletions
| diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index c855f4446b5f..503c0b99db12 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c @@ -162,7 +162,7 @@ struct acpi_thermal_flags {  };  struct acpi_thermal { -	acpi_handle handle; +	struct acpi_device * device;  	acpi_bus_id name;  	unsigned long temperature;  	unsigned long last_temperature; @@ -229,7 +229,7 @@ static int acpi_thermal_get_temperature(struct acpi_thermal *tz)  	tz->last_temperature = tz->temperature;  	status = -	    acpi_evaluate_integer(tz->handle, "_TMP", NULL, &tz->temperature); +	    acpi_evaluate_integer(tz->device->handle, "_TMP", NULL, &tz->temperature);  	if (ACPI_FAILURE(status))  		return -ENODEV; @@ -248,7 +248,7 @@ static int acpi_thermal_get_polling_frequency(struct acpi_thermal *tz)  		return -EINVAL;  	status = -	    acpi_evaluate_integer(tz->handle, "_TZP", NULL, +	    acpi_evaluate_integer(tz->device->handle, "_TZP", NULL,  				  &tz->polling_frequency);  	if (ACPI_FAILURE(status))  		return -ENODEV; @@ -285,7 +285,7 @@ static int acpi_thermal_set_cooling_mode(struct acpi_thermal *tz, int mode)  	if (!tz)  		return -EINVAL; -	status = acpi_get_handle(tz->handle, "_SCP", &handle); +	status = acpi_get_handle(tz->device->handle, "_SCP", &handle);  	if (ACPI_FAILURE(status)) {  		ACPI_DEBUG_PRINT((ACPI_DB_INFO, "_SCP not present\n"));  		return -ENODEV; @@ -316,7 +316,7 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz)  	/* Critical Shutdown (required) */ -	status = acpi_evaluate_integer(tz->handle, "_CRT", NULL, +	status = acpi_evaluate_integer(tz->device->handle, "_CRT", NULL,  				       &tz->trips.critical.temperature);  	if (ACPI_FAILURE(status)) {  		tz->trips.critical.flags.valid = 0; @@ -332,7 +332,7 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz)  	/* Critical Sleep (optional) */  	status = -	    acpi_evaluate_integer(tz->handle, "_HOT", NULL, +	    acpi_evaluate_integer(tz->device->handle, "_HOT", NULL,  				  &tz->trips.hot.temperature);  	if (ACPI_FAILURE(status)) {  		tz->trips.hot.flags.valid = 0; @@ -346,7 +346,7 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz)  	/* Passive: Processors (optional) */  	status = -	    acpi_evaluate_integer(tz->handle, "_PSV", NULL, +	    acpi_evaluate_integer(tz->device->handle, "_PSV", NULL,  				  &tz->trips.passive.temperature);  	if (ACPI_FAILURE(status)) {  		tz->trips.passive.flags.valid = 0; @@ -355,25 +355,25 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz)  		tz->trips.passive.flags.valid = 1;  		status = -		    acpi_evaluate_integer(tz->handle, "_TC1", NULL, +		    acpi_evaluate_integer(tz->device->handle, "_TC1", NULL,  					  &tz->trips.passive.tc1);  		if (ACPI_FAILURE(status))  			tz->trips.passive.flags.valid = 0;  		status = -		    acpi_evaluate_integer(tz->handle, "_TC2", NULL, +		    acpi_evaluate_integer(tz->device->handle, "_TC2", NULL,  					  &tz->trips.passive.tc2);  		if (ACPI_FAILURE(status))  			tz->trips.passive.flags.valid = 0;  		status = -		    acpi_evaluate_integer(tz->handle, "_TSP", NULL, +		    acpi_evaluate_integer(tz->device->handle, "_TSP", NULL,  					  &tz->trips.passive.tsp);  		if (ACPI_FAILURE(status))  			tz->trips.passive.flags.valid = 0;  		status = -		    acpi_evaluate_reference(tz->handle, "_PSL", NULL, +		    acpi_evaluate_reference(tz->device->handle, "_PSL", NULL,  					    &tz->trips.passive.devices);  		if (ACPI_FAILURE(status))  			tz->trips.passive.flags.valid = 0; @@ -393,14 +393,14 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz)  		char name[5] = { '_', 'A', 'C', ('0' + i), '\0' };  		status = -		    acpi_evaluate_integer(tz->handle, name, NULL, +		    acpi_evaluate_integer(tz->device->handle, name, NULL,  					  &tz->trips.active[i].temperature);  		if (ACPI_FAILURE(status))  			break;  		name[2] = 'L';  		status = -		    acpi_evaluate_reference(tz->handle, name, NULL, +		    acpi_evaluate_reference(tz->device->handle, name, NULL,  					    &tz->trips.active[i].devices);  		if (ACPI_SUCCESS(status)) {  			tz->trips.active[i].flags.valid = 1; @@ -424,7 +424,7 @@ static int acpi_thermal_get_devices(struct acpi_thermal *tz)  		return -EINVAL;  	status = -	    acpi_evaluate_reference(tz->handle, "_TZD", NULL, &tz->devices); +	    acpi_evaluate_reference(tz->device->handle, "_TZD", NULL, &tz->devices);  	if (ACPI_FAILURE(status))  		return -ENODEV; @@ -453,10 +453,6 @@ static int acpi_thermal_call_usermode(char *path)  static int acpi_thermal_critical(struct acpi_thermal *tz)  { -	int result = 0; -	struct acpi_device *device = NULL; - -  	if (!tz || !tz->trips.critical.flags.valid)  		return -EINVAL; @@ -466,14 +462,10 @@ static int acpi_thermal_critical(struct acpi_thermal *tz)  	} else if (tz->trips.critical.flags.enabled)  		tz->trips.critical.flags.enabled = 0; -	result = acpi_bus_get_device(tz->handle, &device); -	if (result) -		return result; -  	printk(KERN_EMERG  	       "Critical temperature reached (%ld C), shutting down.\n",  	       KELVIN_TO_CELSIUS(tz->temperature)); -	acpi_bus_generate_event(device, ACPI_THERMAL_NOTIFY_CRITICAL, +	acpi_bus_generate_event(tz->device, ACPI_THERMAL_NOTIFY_CRITICAL,  				tz->trips.critical.flags.enabled);  	acpi_thermal_call_usermode(ACPI_THERMAL_PATH_POWEROFF); @@ -483,10 +475,6 @@ static int acpi_thermal_critical(struct acpi_thermal *tz)  static int acpi_thermal_hot(struct acpi_thermal *tz)  { -	int result = 0; -	struct acpi_device *device = NULL; - -  	if (!tz || !tz->trips.hot.flags.valid)  		return -EINVAL; @@ -496,11 +484,7 @@ static int acpi_thermal_hot(struct acpi_thermal *tz)  	} else if (tz->trips.hot.flags.enabled)  		tz->trips.hot.flags.enabled = 0; -	result = acpi_bus_get_device(tz->handle, &device); -	if (result) -		return result; - -	acpi_bus_generate_event(device, ACPI_THERMAL_NOTIFY_HOT, +	acpi_bus_generate_event(tz->device, ACPI_THERMAL_NOTIFY_HOT,  				tz->trips.hot.flags.enabled);  	/* TBD: Call user-mode "sleep(S4)" function */ @@ -1193,8 +1177,7 @@ static void acpi_thermal_notify(acpi_handle handle, u32 event, void *data)  	if (!tz)  		return; -	if (acpi_bus_get_device(tz->handle, &device)) -		return; +	device = tz->device;  	switch (event) {  	case ACPI_THERMAL_NOTIFY_TEMPERATURE: @@ -1293,7 +1276,7 @@ static int acpi_thermal_add(struct acpi_device *device)  		return -ENOMEM;  	memset(tz, 0, sizeof(struct acpi_thermal)); -	tz->handle = device->handle; +	tz->device = device;  	strcpy(tz->name, device->pnp.bus_id);  	strcpy(acpi_device_name(device), ACPI_THERMAL_DEVICE_NAME);  	strcpy(acpi_device_class(device), ACPI_THERMAL_CLASS); @@ -1311,7 +1294,7 @@ static int acpi_thermal_add(struct acpi_device *device)  	acpi_thermal_check(tz); -	status = acpi_install_notify_handler(tz->handle, +	status = acpi_install_notify_handler(device->handle,  					     ACPI_DEVICE_NOTIFY,  					     acpi_thermal_notify, tz);  	if (ACPI_FAILURE(status)) { @@ -1352,7 +1335,7 @@ static int acpi_thermal_remove(struct acpi_device *device, int type)  	/* deferred task may reinsert timer */  	del_timer_sync(&(tz->timer)); -	status = acpi_remove_notify_handler(tz->handle, +	status = acpi_remove_notify_handler(device->handle,  					    ACPI_DEVICE_NOTIFY,  					    acpi_thermal_notify); | 
