ACPI/int340x_thermal: enumerate INT3401 for Intel SoC DTS thermal driver
authorZhang Rui <rui.zhang@intel.com>
Sun, 4 Jan 2015 06:24:24 +0000 (14:24 +0800)
committerZhang Rui <rui.zhang@intel.com>
Tue, 6 Jan 2015 00:17:14 +0000 (08:17 +0800)
Intel SoC DTS thermal driver on Baytrail platform uses IRQ 86 for
critical overheating notification.
But this IRQ 86 is described in the _CRS control method of INT3401 device,
thus we should enumerate INT3401 to set the IRQ descriptor when
Intel SoC DTS thermal driver is built.

Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Tested-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
drivers/acpi/int340x_thermal.c

index dc3553dd59de5e04a9716a99db3a5165030f82ae..9dcf83682e367e889db67cd5ae44670878893459 100644 (file)
 
 #include "internal.h"
 
+#define INT3401_DEVICE 0X01
 static const struct acpi_device_id int340x_thermal_device_ids[] = {
        {"INT3400"},
-       {"INT3401"},
+       {"INT3401", INT3401_DEVICE},
        {"INT3402"},
        {"INT3403"},
        {"INT3404"},
@@ -34,6 +35,10 @@ static int int340x_thermal_handler_attach(struct acpi_device *adev,
 {
 #if defined(CONFIG_INT340X_THERMAL) || defined(CONFIG_INT340X_THERMAL_MODULE)
        acpi_create_platform_device(adev);
+#elif defined(INTEL_SOC_DTS_THERMAL) || defined(INTEL_SOC_DTS_THERMAL_MODULE)
+       /* Intel SoC DTS thermal driver needs INT3401 to set IRQ descriptor */
+       if (id->driver_data == INT3401_DEVICE)
+               acpi_create_platform_device(adev);
 #endif
        return 1;
 }