aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/thermal.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/acpi/thermal.c')
-rw-r--r--drivers/acpi/thermal.c25
1 files changed, 5 insertions, 20 deletions
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index c855f4446b5f..1d8c250c3c73 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -163,6 +163,7 @@ struct acpi_thermal_flags {
163 163
164struct acpi_thermal { 164struct acpi_thermal {
165 acpi_handle handle; 165 acpi_handle handle;
166 struct acpi_device * device;
166 acpi_bus_id name; 167 acpi_bus_id name;
167 unsigned long temperature; 168 unsigned long temperature;
168 unsigned long last_temperature; 169 unsigned long last_temperature;
@@ -453,10 +454,6 @@ static int acpi_thermal_call_usermode(char *path)
453 454
454static int acpi_thermal_critical(struct acpi_thermal *tz) 455static int acpi_thermal_critical(struct acpi_thermal *tz)
455{ 456{
456 int result = 0;
457 struct acpi_device *device = NULL;
458
459
460 if (!tz || !tz->trips.critical.flags.valid) 457 if (!tz || !tz->trips.critical.flags.valid)
461 return -EINVAL; 458 return -EINVAL;
462 459
@@ -466,14 +463,10 @@ static int acpi_thermal_critical(struct acpi_thermal *tz)
466 } else if (tz->trips.critical.flags.enabled) 463 } else if (tz->trips.critical.flags.enabled)
467 tz->trips.critical.flags.enabled = 0; 464 tz->trips.critical.flags.enabled = 0;
468 465
469 result = acpi_bus_get_device(tz->handle, &device);
470 if (result)
471 return result;
472
473 printk(KERN_EMERG 466 printk(KERN_EMERG
474 "Critical temperature reached (%ld C), shutting down.\n", 467 "Critical temperature reached (%ld C), shutting down.\n",
475 KELVIN_TO_CELSIUS(tz->temperature)); 468 KELVIN_TO_CELSIUS(tz->temperature));
476 acpi_bus_generate_event(device, ACPI_THERMAL_NOTIFY_CRITICAL, 469 acpi_bus_generate_event(tz->device, ACPI_THERMAL_NOTIFY_CRITICAL,
477 tz->trips.critical.flags.enabled); 470 tz->trips.critical.flags.enabled);
478 471
479 acpi_thermal_call_usermode(ACPI_THERMAL_PATH_POWEROFF); 472 acpi_thermal_call_usermode(ACPI_THERMAL_PATH_POWEROFF);
@@ -483,10 +476,6 @@ static int acpi_thermal_critical(struct acpi_thermal *tz)
483 476
484static int acpi_thermal_hot(struct acpi_thermal *tz) 477static int acpi_thermal_hot(struct acpi_thermal *tz)
485{ 478{
486 int result = 0;
487 struct acpi_device *device = NULL;
488
489
490 if (!tz || !tz->trips.hot.flags.valid) 479 if (!tz || !tz->trips.hot.flags.valid)
491 return -EINVAL; 480 return -EINVAL;
492 481
@@ -496,11 +485,7 @@ static int acpi_thermal_hot(struct acpi_thermal *tz)
496 } else if (tz->trips.hot.flags.enabled) 485 } else if (tz->trips.hot.flags.enabled)
497 tz->trips.hot.flags.enabled = 0; 486 tz->trips.hot.flags.enabled = 0;
498 487
499 result = acpi_bus_get_device(tz->handle, &device); 488 acpi_bus_generate_event(tz->device, ACPI_THERMAL_NOTIFY_HOT,
500 if (result)
501 return result;
502
503 acpi_bus_generate_event(device, ACPI_THERMAL_NOTIFY_HOT,
504 tz->trips.hot.flags.enabled); 489 tz->trips.hot.flags.enabled);
505 490
506 /* TBD: Call user-mode "sleep(S4)" function */ 491 /* TBD: Call user-mode "sleep(S4)" function */
@@ -1193,8 +1178,7 @@ static void acpi_thermal_notify(acpi_handle handle, u32 event, void *data)
1193 if (!tz) 1178 if (!tz)
1194 return; 1179 return;
1195 1180
1196 if (acpi_bus_get_device(tz->handle, &device)) 1181 device = tz->device;
1197 return;
1198 1182
1199 switch (event) { 1183 switch (event) {
1200 case ACPI_THERMAL_NOTIFY_TEMPERATURE: 1184 case ACPI_THERMAL_NOTIFY_TEMPERATURE:
@@ -1294,6 +1278,7 @@ static int acpi_thermal_add(struct acpi_device *device)
1294 memset(tz, 0, sizeof(struct acpi_thermal)); 1278 memset(tz, 0, sizeof(struct acpi_thermal));
1295 1279
1296 tz->handle = device->handle; 1280 tz->handle = device->handle;
1281 tz->device = device;
1297 strcpy(tz->name, device->pnp.bus_id); 1282 strcpy(tz->name, device->pnp.bus_id);
1298 strcpy(acpi_device_name(device), ACPI_THERMAL_DEVICE_NAME); 1283 strcpy(acpi_device_name(device), ACPI_THERMAL_DEVICE_NAME);
1299 strcpy(acpi_device_class(device), ACPI_THERMAL_CLASS); 1284 strcpy(acpi_device_class(device), ACPI_THERMAL_CLASS);