File tree 5 files changed +71
-0
lines changed
5 files changed +71
-0
lines changed Original file line number Diff line number Diff line change @@ -43,6 +43,7 @@ acpi-y += pci_root.o pci_link.o pci_irq.o
43
43
acpi-y += acpi_lpss.o
44
44
acpi-y += acpi_platform.o
45
45
acpi-y += acpi_pnp.o
46
+ acpi-y += int340x_thermal.o
46
47
acpi-y += power.o
47
48
acpi-y += event.o
48
49
acpi-y += sysfs.o
Original file line number Diff line number Diff line change
1
+ /*
2
+ * ACPI support for int340x thermal drivers
3
+ *
4
+ * Copyright (C) 2014, Intel Corporation
5
+ * Authors: Zhang Rui <[email protected] >
6
+ *
7
+ * This program is free software; you can redistribute it and/or modify
8
+ * it under the terms of the GNU General Public License version 2 as
9
+ * published by the Free Software Foundation.
10
+ */
11
+
12
+ #include <linux/acpi.h>
13
+ #include <linux/module.h>
14
+
15
+ #include "internal.h"
16
+
17
+ #define DO_ENUMERATION 0x01
18
+ static const struct acpi_device_id int340x_thermal_device_ids [] = {
19
+ {"INT3400" , DO_ENUMERATION },
20
+ {"INT3401" },
21
+ {"INT3402" },
22
+ {"INT3403" },
23
+ {"INT3404" },
24
+ {"INT3406" },
25
+ {"INT3407" },
26
+ {"INT3408" },
27
+ {"INT3409" },
28
+ {"INT340A" },
29
+ {"INT340B" },
30
+ {"" },
31
+ };
32
+
33
+ static int int340x_thermal_handler_attach (struct acpi_device * adev ,
34
+ const struct acpi_device_id * id )
35
+ {
36
+ #ifdef CONFIG_INT340X_THERMAL
37
+ if (id -> driver_data == DO_ENUMERATION )
38
+ acpi_create_platform_device (adev );
39
+ #endif
40
+ return 1 ;
41
+ }
42
+
43
+ static struct acpi_scan_handler int340x_thermal_handler = {
44
+ .ids = int340x_thermal_device_ids ,
45
+ .attach = int340x_thermal_handler_attach ,
46
+ };
47
+
48
+ void __init acpi_int340x_thermal_init (void )
49
+ {
50
+ acpi_scan_add_handler (& int340x_thermal_handler );
51
+ }
Original file line number Diff line number Diff line change @@ -31,6 +31,7 @@ void acpi_pci_link_init(void);
31
31
void acpi_processor_init (void );
32
32
void acpi_platform_init (void );
33
33
void acpi_pnp_init (void );
34
+ void acpi_int340x_thermal_init (void );
34
35
int acpi_sysfs_init (void );
35
36
void acpi_container_init (void );
36
37
void acpi_memory_hotplug_init (void );
Original file line number Diff line number Diff line change @@ -2306,6 +2306,7 @@ int __init acpi_scan_init(void)
2306
2306
acpi_container_init ();
2307
2307
acpi_memory_hotplug_init ();
2308
2308
acpi_pnp_init ();
2309
+ acpi_int340x_thermal_init ();
2309
2310
2310
2311
mutex_lock (& acpi_scan_lock );
2311
2312
/*
Original file line number Diff line number Diff line change @@ -234,6 +234,23 @@ config INTEL_SOC_DTS_THERMAL
234
234
notification methods.The other trip is a critical trip point, which
235
235
was set by the driver based on the TJ MAX temperature.
236
236
237
+ config INT340X_THERMAL
238
+ bool
239
+ depends on X86 && ACPI
240
+ help
241
+ Newer laptops and tablets that use ACPI may have thermal sensors and
242
+ other devices with thermal control capabilities outside the core
243
+ CPU/SOC, for thermal safety reasons.
244
+ They are exposed for the OS to use via the INT3400 ACPI device object
245
+ as the master, and INT3401~INT340B ACPI device objects as the slaves.
246
+ Enable this to expose the temperature information and cooling ability
247
+ from these objects to userspace via the normal thermal framework.
248
+ This means that a wide range of applications and GUI widgets can show
249
+ the information to the user or use this information for making
250
+ decisions. For example, the Intel Thermal Daemon can use this
251
+ information to allow the user to select his laptop to run without
252
+ turning on the fans.
253
+
237
254
menu "Texas Instruments thermal drivers"
238
255
source "drivers/thermal/ti-soc-thermal/Kconfig"
239
256
endmenu
You can’t perform that action at this time.
0 commit comments