| From d213534ee28a9699896fe9aabafe99c43f43ede0 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 14 May 2021 21:08:51 +0200 |
| Subject: ACPI: PM / fan: Put fan device IDs into separate header file |
| |
| From: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| |
| [ Upstream commit b9370dceabb7841c5e65ce4ee4405b9db5231fc4 ] |
| |
| The ACPI fan device IDs are shared between the fan driver and the |
| device power management code. The former is modular, so it needs |
| to include the table of device IDs for module autoloading and the |
| latter needs that list to avoid attaching the generic ACPI PM domain |
| to fan devices (which doesn't make sense) possibly before the fan |
| driver module is loaded. |
| |
| Unfortunately, that requires the list of fan device IDs to be |
| updated in two places which is prone to mistakes, so put it into |
| a symbol definition in a separate header file so there is only one |
| copy of it in case it needs to be updated again in the future. |
| |
| Fixes: b9ea0bae260f ("ACPI: PM: Avoid attaching ACPI PM domain to certain devices") |
| Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/acpi/device_pm.c | 6 ++---- |
| drivers/acpi/fan.c | 7 +++---- |
| drivers/acpi/fan.h | 13 +++++++++++++ |
| 3 files changed, 18 insertions(+), 8 deletions(-) |
| create mode 100644 drivers/acpi/fan.h |
| |
| diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c |
| index 48ff6821a83d..ecd2ddc2215f 100644 |
| --- a/drivers/acpi/device_pm.c |
| +++ b/drivers/acpi/device_pm.c |
| @@ -18,6 +18,7 @@ |
| #include <linux/pm_runtime.h> |
| #include <linux/suspend.h> |
| |
| +#include "fan.h" |
| #include "internal.h" |
| |
| #define _COMPONENT ACPI_POWER_COMPONENT |
| @@ -1298,10 +1299,7 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on) |
| * with the generic ACPI PM domain. |
| */ |
| static const struct acpi_device_id special_pm_ids[] = { |
| - {"PNP0C0B", }, /* Generic ACPI fan */ |
| - {"INT3404", }, /* Fan */ |
| - {"INTC1044", }, /* Fan for Tiger Lake generation */ |
| - {"INTC1048", }, /* Fan for Alder Lake generation */ |
| + ACPI_FAN_DEVICE_IDS, |
| {} |
| }; |
| struct acpi_device *adev = ACPI_COMPANION(dev); |
| diff --git a/drivers/acpi/fan.c b/drivers/acpi/fan.c |
| index 66c3983f0ccc..5cd0ceb50bc8 100644 |
| --- a/drivers/acpi/fan.c |
| +++ b/drivers/acpi/fan.c |
| @@ -16,6 +16,8 @@ |
| #include <linux/platform_device.h> |
| #include <linux/sort.h> |
| |
| +#include "fan.h" |
| + |
| MODULE_AUTHOR("Paul Diefenbaugh"); |
| MODULE_DESCRIPTION("ACPI Fan Driver"); |
| MODULE_LICENSE("GPL"); |
| @@ -24,10 +26,7 @@ static int acpi_fan_probe(struct platform_device *pdev); |
| static int acpi_fan_remove(struct platform_device *pdev); |
| |
| static const struct acpi_device_id fan_device_ids[] = { |
| - {"PNP0C0B", 0}, |
| - {"INT3404", 0}, |
| - {"INTC1044", 0}, |
| - {"INTC1048", 0}, |
| + ACPI_FAN_DEVICE_IDS, |
| {"", 0}, |
| }; |
| MODULE_DEVICE_TABLE(acpi, fan_device_ids); |
| diff --git a/drivers/acpi/fan.h b/drivers/acpi/fan.h |
| new file mode 100644 |
| index 000000000000..dc9a6efa514b |
| --- /dev/null |
| +++ b/drivers/acpi/fan.h |
| @@ -0,0 +1,13 @@ |
| +/* SPDX-License-Identifier: GPL-2.0-only */ |
| + |
| +/* |
| + * ACPI fan device IDs are shared between the fan driver and the device power |
| + * management code. |
| + * |
| + * Add new device IDs before the generic ACPI fan one. |
| + */ |
| +#define ACPI_FAN_DEVICE_IDS \ |
| + {"INT3404", }, /* Fan */ \ |
| + {"INTC1044", }, /* Fan for Tiger Lake generation */ \ |
| + {"INTC1048", }, /* Fan for Alder Lake generation */ \ |
| + {"PNP0C0B", } /* Generic ACPI fan */ |
| -- |
| 2.30.2 |
| |