-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ACPI: introduce ACPI int340x thermal scan handler
Newer laptops and tablets that use ACPI may have thermal sensors and other devices with thermal control capabilities outside the core CPU/SOC, for thermal safety reasons. They are exposed for the OS to use via 1) INT3400 ACPI device object as the master. 2) INT3401 ~ INT340B ACPI device objects as the slaves. This patch introduces a scan handler to enumerate the INT3400 ACPI device object to platform bus, and prevent its slaves from being enumerated before the controller driver being probed. Signed-off-by: Zhang Rui <rui.zhang@intel.com>
- Loading branch information
Zhang Rui
committed
Sep 11, 2014
1 parent
52addcf
commit 3230bbf
Showing
5 changed files
with
71 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
/* | ||
* ACPI support for int340x thermal drivers | ||
* | ||
* Copyright (C) 2014, Intel Corporation | ||
* Authors: Zhang Rui <rui.zhang@intel.com> | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
|
||
#include <linux/acpi.h> | ||
#include <linux/module.h> | ||
|
||
#include "internal.h" | ||
|
||
#define DO_ENUMERATION 0x01 | ||
static const struct acpi_device_id int340x_thermal_device_ids[] = { | ||
{"INT3400", DO_ENUMERATION }, | ||
{"INT3401"}, | ||
{"INT3402"}, | ||
{"INT3403"}, | ||
{"INT3404"}, | ||
{"INT3406"}, | ||
{"INT3407"}, | ||
{"INT3408"}, | ||
{"INT3409"}, | ||
{"INT340A"}, | ||
{"INT340B"}, | ||
{""}, | ||
}; | ||
|
||
static int int340x_thermal_handler_attach(struct acpi_device *adev, | ||
const struct acpi_device_id *id) | ||
{ | ||
#ifdef CONFIG_INT340X_THERMAL | ||
if (id->driver_data == DO_ENUMERATION) | ||
acpi_create_platform_device(adev); | ||
#endif | ||
return 1; | ||
} | ||
|
||
static struct acpi_scan_handler int340x_thermal_handler = { | ||
.ids = int340x_thermal_device_ids, | ||
.attach = int340x_thermal_handler_attach, | ||
}; | ||
|
||
void __init acpi_int340x_thermal_init(void) | ||
{ | ||
acpi_scan_add_handler(&int340x_thermal_handler); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters