ACPI: attach thermal zone info
Intel menlow driver needs to get the pointer of themal_zone_device structure of an ACPI thermal zone. Attach this to each ACPI thermal zone device object. Signed-off-by: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Thomas Sujith <sujith.thomas@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
Родитель
702ed512de
Коммит
207339398e
|
@ -122,6 +122,31 @@ int acpi_bus_get_status(struct acpi_device *device)
|
|||
|
||||
EXPORT_SYMBOL(acpi_bus_get_status);
|
||||
|
||||
void acpi_bus_private_data_handler(acpi_handle handle,
|
||||
u32 function, void *context)
|
||||
{
|
||||
return;
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_bus_private_data_handler);
|
||||
|
||||
int acpi_bus_get_private_data(acpi_handle handle, void **data)
|
||||
{
|
||||
acpi_status status = AE_OK;
|
||||
|
||||
if (!*data)
|
||||
return -EINVAL;
|
||||
|
||||
status = acpi_get_data(handle, acpi_bus_private_data_handler, data);
|
||||
if (ACPI_FAILURE(status) || !*data) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No context for object [%p]\n",
|
||||
handle));
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_bus_get_private_data);
|
||||
|
||||
/* --------------------------------------------------------------------------
|
||||
Power Management
|
||||
-------------------------------------------------------------------------- */
|
||||
|
|
|
@ -1101,6 +1101,7 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz)
|
|||
{
|
||||
int trips = 0;
|
||||
int result;
|
||||
acpi_status status;
|
||||
int i;
|
||||
|
||||
if (tz->trips.critical.flags.valid)
|
||||
|
@ -1129,6 +1130,15 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz)
|
|||
if (result)
|
||||
return result;
|
||||
|
||||
status = acpi_attach_data(tz->device->handle,
|
||||
acpi_bus_private_data_handler,
|
||||
tz->thermal_zone);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_ERROR,
|
||||
"Error attaching device data\n"));
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
tz->tz_enabled = 1;
|
||||
|
||||
printk(KERN_INFO PREFIX "%s is registered as thermal_zone%d\n",
|
||||
|
@ -1142,6 +1152,7 @@ static void acpi_thermal_unregister_thermal_zone(struct acpi_thermal *tz)
|
|||
sysfs_remove_link(&tz->thermal_zone->device.kobj, "device");
|
||||
thermal_zone_device_unregister(tz->thermal_zone);
|
||||
tz->thermal_zone = NULL;
|
||||
acpi_detach_data(tz->device->handle, acpi_bus_private_data_handler);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -321,6 +321,8 @@ struct acpi_bus_event {
|
|||
|
||||
extern struct kobject *acpi_kobj;
|
||||
extern int acpi_bus_generate_netlink_event(const char*, const char*, u8, int);
|
||||
void acpi_bus_private_data_handler(acpi_handle, u32, void *);
|
||||
int acpi_bus_get_private_data(acpi_handle, void **);
|
||||
/*
|
||||
* External Functions
|
||||
*/
|
||||
|
|
Загрузка…
Ссылка в новой задаче