linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers
@ 2025-08-30  5:33 Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 01/12] ACPI: DPTF: Ignore SoC DTS thermal while scanning Slawomir Rosek
                   ` (12 more replies)
  0 siblings, 13 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:33 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The Intel Dynamic Platform and Thermal Framework (DPTF) relies on
the INT340X ACPI device objects. The temperature information and
cooling ability are exposed to the userspace via those objects.

Since kernel v3.17 the ACPI bus scan handler is introduced to prevent
enumeration of INT340X ACPI device objects on the platform bus unless
related thermal drivers are enabled. However, using the IS_ENABLED()
macro in the ACPI scan handler forces the kernel to be recompiled
when thermal drivers are enabled or disabled, which is a significant
limitation of its modularity. The IS_ENABLED() macro is particularly
problematic for the Android Generic Kernel Image (GKI) project which
uses unified core kernel while SoC/board support is moved to loadable
vendor modules.

This patch set moves enumeration of INT340X ACPI device objects on
the platform bus from DPTF core to thermal drivers. It starts with
some code cleanup and reorganization to eventually remove IS_ENABLED()
macro from the ACPI bus scan handler. Brief list of changes is listed
below:

1) Remove SOC DTS thermal driver case from the ACPI scan handler
   since its dependency on INT340X driver is unrelated to DPTF
2) Move all INT340X ACPI device ids to the common header and update
   the DPTF core and thermal drivers accordingly
3) Move dynamic enumeration of ACPI device objects on the platform bus
   from the intel-hid and intel-vbtn drivers to the ACPI platform core
4) Move enumeration of INT340X ACPI device objects on the platform bus
   from DPTF core to thermal drivers using ACPI platform core methods


Slawomir Rosek (12):
  ACPI: DPTF: Ignore SoC DTS thermal while scanning
  ACPI: DPTF: Move INT3400 device IDs to header
  ACPI: DPTF: Move INT3401 device IDs to header
  ACPI: DPTF: Move INT3402 device IDs to header
  ACPI: DPTF: Move INT3403 device IDs to header
  ACPI: DPTF: Move INT3404 device IDs to header
  ACPI: DPTF: Move INT3406 device IDs to header
  ACPI: DPTF: Move INT3407 device IDs to header
  ACPI: DPTF: Move PCH FIVR device IDs to header
  ACPI: DPTF: Remove not supported INT340X IDs
  ACPI: platform: Add macro for acpi platform driver
  ACPI: DPTF: Move INT340X enumeration to modules

 drivers/acpi/acpi_platform.c                  | 27 +++++++
 drivers/acpi/dptf/dptf_pch_fivr.c             | 10 +--
 drivers/acpi/dptf/dptf_power.c                | 20 +----
 drivers/acpi/dptf/int340x_thermal.c           | 76 ++++---------------
 drivers/acpi/fan.h                            | 10 +--
 drivers/acpi/fan_core.c                       |  2 +-
 drivers/acpi/int340x_thermal.h                | 76 +++++++++++++++++++
 drivers/platform/x86/intel/hid.c              | 41 +---------
 drivers/platform/x86/intel/vbtn.c             | 30 +-------
 drivers/thermal/intel/Kconfig                 |  1 +
 .../intel/int340x_thermal/int3400_thermal.c   | 12 +--
 .../intel/int340x_thermal/int3401_thermal.c   |  5 +-
 .../intel/int340x_thermal/int3402_thermal.c   |  5 +-
 .../intel/int340x_thermal/int3403_thermal.c   | 12 +--
 .../intel/int340x_thermal/int3406_thermal.c   |  5 +-
 include/linux/platform_device.h               | 17 +++++
 16 files changed, 161 insertions(+), 188 deletions(-)
 create mode 100644 drivers/acpi/int340x_thermal.h

-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply	[flat|nested] 15+ messages in thread

* [PATCH v1 01/12] ACPI: DPTF: Ignore SoC DTS thermal while scanning
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
@ 2025-08-30  5:33 ` Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 02/12] ACPI: DPTF: Move INT3400 device IDs to header Slawomir Rosek
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:33 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The Intel SoC DTS thermal driver on Baytrail platform uses IRQ 86 for
critical overheating notification. The IRQ 86 is described in the _CRS
control method of INT3401 device, thus Intel SoC DTS thermal driver
requires INT3401 device to be enumerated.

Since dependency on INT3401 device is unrelated to DPTF the IS_ENABLE()
macro is removed from ACPI DPTF INT340X scan handler, instead Kconfig
is updated to ensure proper enumeration of INT3401 device.

Fixes: 014d9d5d0cc1 ("ACPI/int340x_thermal: enumerate INT3401 for Intel SoC DTS thermal driver")
Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/int340x_thermal.c | 7 +------
 drivers/thermal/intel/Kconfig       | 1 +
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index a222df059a16..947fe50c2ef6 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -11,10 +11,9 @@
 
 #include "../internal.h"
 
-#define INT3401_DEVICE 0X01
 static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	{"INT3400"},
-	{"INT3401", INT3401_DEVICE},
+	{"INT3401"},
 	{"INT3402"},
 	{"INT3403"},
 	{"INT3404"},
@@ -76,10 +75,6 @@ static int int340x_thermal_handler_attach(struct acpi_device *adev,
 {
 	if (IS_ENABLED(CONFIG_INT340X_THERMAL))
 		acpi_create_platform_device(adev, NULL);
-	/* Intel SoC DTS thermal driver needs INT3401 to set IRQ descriptor */
-	else if (IS_ENABLED(CONFIG_INTEL_SOC_DTS_THERMAL) &&
-		 id->driver_data == INT3401_DEVICE)
-		acpi_create_platform_device(adev, NULL);
 	return 1;
 }
 
diff --git a/drivers/thermal/intel/Kconfig b/drivers/thermal/intel/Kconfig
index e0268fac7093..47950859b790 100644
--- a/drivers/thermal/intel/Kconfig
+++ b/drivers/thermal/intel/Kconfig
@@ -45,6 +45,7 @@ config INTEL_SOC_DTS_IOSF_CORE
 config INTEL_SOC_DTS_THERMAL
 	tristate "Intel SoCs DTS thermal driver"
 	depends on X86 && PCI && ACPI
+	select INT340X_THERMAL
 	select INTEL_SOC_DTS_IOSF_CORE
 	help
 	  Enable this to register Intel SoCs (e.g. Bay Trail) platform digital
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 02/12] ACPI: DPTF: Move INT3400 device IDs to header
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 01/12] ACPI: DPTF: Ignore SoC DTS thermal while scanning Slawomir Rosek
@ 2025-08-30  5:33 ` Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 03/12] ACPI: DPTF: Move INT3401 " Slawomir Rosek
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:33 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The ACPI INT3400 device IDs are shared between the DPTF core
and thermal drivers, thus they are moved to the common header.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/int340x_thermal.c           | 10 ++-------
 drivers/acpi/int340x_thermal.h                | 21 +++++++++++++++++++
 .../intel/int340x_thermal/int3400_thermal.c   | 10 ++-------
 3 files changed, 25 insertions(+), 16 deletions(-)
 create mode 100644 drivers/acpi/int340x_thermal.h

diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index 947fe50c2ef6..04df20ef1a2e 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -9,10 +9,11 @@
 #include <linux/acpi.h>
 #include <linux/module.h>
 
+#include "../int340x_thermal.h"
 #include "../internal.h"
 
 static const struct acpi_device_id int340x_thermal_device_ids[] = {
-	{"INT3400"},
+	ACPI_INT3400_DEVICE_IDS,
 	{"INT3401"},
 	{"INT3402"},
 	{"INT3403"},
@@ -24,9 +25,6 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	{"INT340A"},
 	{"INT340B"},
 	{"INT3532"},
-	{"INTC1040"},
-	{"INTC1041"},
-	{"INTC1042"},
 	{"INTC1043"},
 	{"INTC1044"},
 	{"INTC1045"},
@@ -42,25 +40,21 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	{"INTC1064"},
 	{"INTC1065"},
 	{"INTC1066"},
-	{"INTC1068"},
 	{"INTC1069"},
 	{"INTC106A"},
 	{"INTC106B"},
 	{"INTC106C"},
 	{"INTC106D"},
-	{"INTC10A0"},
 	{"INTC10A1"},
 	{"INTC10A2"},
 	{"INTC10A3"},
 	{"INTC10A4"},
 	{"INTC10A5"},
-	{"INTC10D4"},
 	{"INTC10D5"},
 	{"INTC10D6"},
 	{"INTC10D7"},
 	{"INTC10D8"},
 	{"INTC10D9"},
-	{"INTC10FC"},
 	{"INTC10FD"},
 	{"INTC10FE"},
 	{"INTC10FF"},
diff --git a/drivers/acpi/int340x_thermal.h b/drivers/acpi/int340x_thermal.h
new file mode 100644
index 000000000000..a0d379492a79
--- /dev/null
+++ b/drivers/acpi/int340x_thermal.h
@@ -0,0 +1,21 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+/*
+ * The ACPI INT3400 device IDs are shared between the DPTF core
+ * and thermal drivers.
+ */
+
+#ifndef _ACPI_INT340X_H_
+#define _ACPI_INT340X_H_
+
+#define ACPI_INT3400_DEVICE_IDS	\
+	{"INT3400"},	\
+	{"INTC1040"},	\
+	{"INTC1041"},	\
+	{"INTC1042"},	\
+	{"INTC1068"},	\
+	{"INTC10A0"},	\
+	{"INTC10D4"},	\
+	{"INTC10FC"}
+
+#endif
diff --git a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c b/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
index 908cc1bf57f1..6311125c3ebd 100644
--- a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
@@ -11,6 +11,7 @@
 #include <linux/acpi.h>
 #include <linux/thermal.h>
 #include "acpi_thermal_rel.h"
+#include "../../../../drivers/acpi/int340x_thermal.h"
 
 #define INT3400_THERMAL_TABLE_CHANGED 0x83
 #define INT3400_ODVP_CHANGED 0x88
@@ -683,14 +684,7 @@ static void int3400_thermal_remove(struct platform_device *pdev)
 }
 
 static const struct acpi_device_id int3400_thermal_match[] = {
-	{"INT3400", 0},
-	{"INTC1040", 0},
-	{"INTC1041", 0},
-	{"INTC1042", 0},
-	{"INTC1068", 0},
-	{"INTC10A0", 0},
-	{"INTC10D4", 0},
-	{"INTC10FC", 0},
+	ACPI_INT3400_DEVICE_IDS,
 	{}
 };
 
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 03/12] ACPI: DPTF: Move INT3401 device IDs to header
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 01/12] ACPI: DPTF: Ignore SoC DTS thermal while scanning Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 02/12] ACPI: DPTF: Move INT3400 device IDs to header Slawomir Rosek
@ 2025-08-30  5:33 ` Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 04/12] ACPI: DPTF: Move INT3402 " Slawomir Rosek
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:33 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The ACPI INT3401 device IDs are shared between the DPTF core
and thermal drivers, thus they are moved to the common header.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/int340x_thermal.c                     | 2 +-
 drivers/acpi/int340x_thermal.h                          | 3 +++
 drivers/thermal/intel/int340x_thermal/int3401_thermal.c | 3 ++-
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index 04df20ef1a2e..8fa85c866675 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -14,7 +14,7 @@
 
 static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	ACPI_INT3400_DEVICE_IDS,
-	{"INT3401"},
+	ACPI_INT3401_DEVICE_IDS,
 	{"INT3402"},
 	{"INT3403"},
 	{"INT3404"},
diff --git a/drivers/acpi/int340x_thermal.h b/drivers/acpi/int340x_thermal.h
index a0d379492a79..3ecd6c4bf2ca 100644
--- a/drivers/acpi/int340x_thermal.h
+++ b/drivers/acpi/int340x_thermal.h
@@ -18,4 +18,7 @@
 	{"INTC10D4"},	\
 	{"INTC10FC"}
 
+#define ACPI_INT3401_DEVICE_IDS	\
+	{"INT3401"}
+
 #endif
diff --git a/drivers/thermal/intel/int340x_thermal/int3401_thermal.c b/drivers/thermal/intel/int340x_thermal/int3401_thermal.c
index 96d6277a5a8c..e0603f218d2e 100644
--- a/drivers/thermal/intel/int340x_thermal/int3401_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3401_thermal.c
@@ -11,9 +11,10 @@
 
 #include "int340x_thermal_zone.h"
 #include "processor_thermal_device.h"
+#include "../../../../drivers/acpi/int340x_thermal.h"
 
 static const struct acpi_device_id int3401_device_ids[] = {
-	{"INT3401", 0},
+	ACPI_INT3401_DEVICE_IDS,
 	{"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, int3401_device_ids);
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 04/12] ACPI: DPTF: Move INT3402 device IDs to header
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (2 preceding siblings ...)
  2025-08-30  5:33 ` [PATCH v1 03/12] ACPI: DPTF: Move INT3401 " Slawomir Rosek
@ 2025-08-30  5:33 ` Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 05/12] ACPI: DPTF: Move INT3403 " Slawomir Rosek
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:33 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The ACPI INT3402 device IDs are shared between the DPTF core
and thermal drivers, thus they are moved to the common header.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/int340x_thermal.c                     | 2 +-
 drivers/acpi/int340x_thermal.h                          | 3 +++
 drivers/thermal/intel/int340x_thermal/int3402_thermal.c | 3 ++-
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index 8fa85c866675..cf2e95a4f65a 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -15,7 +15,7 @@
 static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	ACPI_INT3400_DEVICE_IDS,
 	ACPI_INT3401_DEVICE_IDS,
-	{"INT3402"},
+	ACPI_INT3402_DEVICE_IDS,
 	{"INT3403"},
 	{"INT3404"},
 	{"INT3406"},
diff --git a/drivers/acpi/int340x_thermal.h b/drivers/acpi/int340x_thermal.h
index 3ecd6c4bf2ca..cc1dfa56fc09 100644
--- a/drivers/acpi/int340x_thermal.h
+++ b/drivers/acpi/int340x_thermal.h
@@ -21,4 +21,7 @@
 #define ACPI_INT3401_DEVICE_IDS	\
 	{"INT3401"}
 
+#define ACPI_INT3402_DEVICE_IDS	\
+	{"INT3402"}
+
 #endif
diff --git a/drivers/thermal/intel/int340x_thermal/int3402_thermal.c b/drivers/thermal/intel/int340x_thermal/int3402_thermal.c
index 57b90005888a..213d4535f2c1 100644
--- a/drivers/thermal/intel/int340x_thermal/int3402_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3402_thermal.c
@@ -11,6 +11,7 @@
 #include <linux/acpi.h>
 #include <linux/thermal.h>
 #include "int340x_thermal_zone.h"
+#include "../../../../drivers/acpi/int340x_thermal.h"
 
 #define INT3402_PERF_CHANGED_EVENT	0x80
 #define INT3402_THERMAL_EVENT		0x90
@@ -84,7 +85,7 @@ static void int3402_thermal_remove(struct platform_device *pdev)
 }
 
 static const struct acpi_device_id int3402_thermal_match[] = {
-	{"INT3402", 0},
+	ACPI_INT3402_DEVICE_IDS,
 	{}
 };
 
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 05/12] ACPI: DPTF: Move INT3403 device IDs to header
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (3 preceding siblings ...)
  2025-08-30  5:33 ` [PATCH v1 04/12] ACPI: DPTF: Move INT3402 " Slawomir Rosek
@ 2025-08-30  5:33 ` Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 06/12] ACPI: DPTF: Move INT3404 " Slawomir Rosek
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:33 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The ACPI INT3403 device IDs are shared between the DPTF core
and thermal drivers, thus they are moved to the common header.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/int340x_thermal.c                    |  9 +--------
 drivers/acpi/int340x_thermal.h                         | 10 ++++++++++
 .../thermal/intel/int340x_thermal/int3403_thermal.c    | 10 ++--------
 3 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index cf2e95a4f65a..f042bf22b664 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -16,7 +16,7 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	ACPI_INT3400_DEVICE_IDS,
 	ACPI_INT3401_DEVICE_IDS,
 	ACPI_INT3402_DEVICE_IDS,
-	{"INT3403"},
+	ACPI_INT3403_DEVICE_IDS,
 	{"INT3404"},
 	{"INT3406"},
 	{"INT3407"},
@@ -25,37 +25,30 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	{"INT340A"},
 	{"INT340B"},
 	{"INT3532"},
-	{"INTC1043"},
 	{"INTC1044"},
 	{"INTC1045"},
-	{"INTC1046"},
 	{"INTC1047"},
 	{"INTC1048"},
 	{"INTC1049"},
 	{"INTC1050"},
 	{"INTC1060"},
 	{"INTC1061"},
-	{"INTC1062"},
 	{"INTC1063"},
 	{"INTC1064"},
 	{"INTC1065"},
 	{"INTC1066"},
-	{"INTC1069"},
 	{"INTC106A"},
 	{"INTC106B"},
 	{"INTC106C"},
 	{"INTC106D"},
-	{"INTC10A1"},
 	{"INTC10A2"},
 	{"INTC10A3"},
 	{"INTC10A4"},
 	{"INTC10A5"},
-	{"INTC10D5"},
 	{"INTC10D6"},
 	{"INTC10D7"},
 	{"INTC10D8"},
 	{"INTC10D9"},
-	{"INTC10FD"},
 	{"INTC10FE"},
 	{"INTC10FF"},
 	{"INTC1100"},
diff --git a/drivers/acpi/int340x_thermal.h b/drivers/acpi/int340x_thermal.h
index cc1dfa56fc09..3b34b5338618 100644
--- a/drivers/acpi/int340x_thermal.h
+++ b/drivers/acpi/int340x_thermal.h
@@ -24,4 +24,14 @@
 #define ACPI_INT3402_DEVICE_IDS	\
 	{"INT3402"}
 
+#define ACPI_INT3403_DEVICE_IDS	\
+	{"INT3403"},	\
+	{"INTC1043"},	\
+	{"INTC1046"},	\
+	{"INTC1062"},	\
+	{"INTC1069"},	\
+	{"INTC10A1"},	\
+	{"INTC10D5"},	\
+	{"INTC10FD"}
+
 #endif
diff --git a/drivers/thermal/intel/int340x_thermal/int3403_thermal.c b/drivers/thermal/intel/int340x_thermal/int3403_thermal.c
index ba63796761eb..d246c69d4872 100644
--- a/drivers/thermal/intel/int340x_thermal/int3403_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3403_thermal.c
@@ -12,6 +12,7 @@
 #include <linux/thermal.h>
 #include <linux/platform_device.h>
 #include "int340x_thermal_zone.h"
+#include "../../../../drivers/acpi/int340x_thermal.h"
 
 #define INT3403_TYPE_SENSOR		0x03
 #define INT3403_TYPE_CHARGER		0x0B
@@ -269,14 +270,7 @@ static void int3403_remove(struct platform_device *pdev)
 }
 
 static const struct acpi_device_id int3403_device_ids[] = {
-	{"INT3403", 0},
-	{"INTC1043", 0},
-	{"INTC1046", 0},
-	{"INTC1062", 0},
-	{"INTC1069", 0},
-	{"INTC10A1", 0},
-	{"INTC10D5", 0},
-	{"INTC10FD", 0},
+	ACPI_INT3403_DEVICE_IDS,
 	{"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, int3403_device_ids);
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 06/12] ACPI: DPTF: Move INT3404 device IDs to header
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (4 preceding siblings ...)
  2025-08-30  5:33 ` [PATCH v1 05/12] ACPI: DPTF: Move INT3403 " Slawomir Rosek
@ 2025-08-30  5:33 ` Slawomir Rosek
  2025-08-30  5:33 ` [PATCH v1 07/12] ACPI: DPTF: Move INT3406 " Slawomir Rosek
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:33 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The ACPI INT3404 device IDs are shared between the DPTF core
and thermal drivers, thus they are moved to the common header.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/int340x_thermal.c |  9 +--------
 drivers/acpi/fan.h                  | 10 ++--------
 drivers/acpi/int340x_thermal.h      | 10 ++++++++++
 3 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index f042bf22b664..be2299aadcff 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -17,7 +17,7 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	ACPI_INT3401_DEVICE_IDS,
 	ACPI_INT3402_DEVICE_IDS,
 	ACPI_INT3403_DEVICE_IDS,
-	{"INT3404"},
+	ACPI_INT3404_DEVICE_IDS,
 	{"INT3406"},
 	{"INT3407"},
 	{"INT3408"},
@@ -25,31 +25,24 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	{"INT340A"},
 	{"INT340B"},
 	{"INT3532"},
-	{"INTC1044"},
 	{"INTC1045"},
 	{"INTC1047"},
-	{"INTC1048"},
 	{"INTC1049"},
 	{"INTC1050"},
 	{"INTC1060"},
 	{"INTC1061"},
-	{"INTC1063"},
 	{"INTC1064"},
 	{"INTC1065"},
 	{"INTC1066"},
-	{"INTC106A"},
 	{"INTC106B"},
 	{"INTC106C"},
 	{"INTC106D"},
-	{"INTC10A2"},
 	{"INTC10A3"},
 	{"INTC10A4"},
 	{"INTC10A5"},
-	{"INTC10D6"},
 	{"INTC10D7"},
 	{"INTC10D8"},
 	{"INTC10D9"},
-	{"INTC10FE"},
 	{"INTC10FF"},
 	{"INTC1100"},
 	{"INTC1101"},
diff --git a/drivers/acpi/fan.h b/drivers/acpi/fan.h
index 8a28a72a7c6a..4015ac56c009 100644
--- a/drivers/acpi/fan.h
+++ b/drivers/acpi/fan.h
@@ -11,16 +11,10 @@
 #define _ACPI_FAN_H_
 
 #include <linux/kconfig.h>
+#include "int340x_thermal.h"
 
 #define ACPI_FAN_DEVICE_IDS	\
-	{"INT3404", }, /* Fan */ \
-	{"INTC1044", }, /* Fan for Tiger Lake generation */ \
-	{"INTC1048", }, /* Fan for Alder Lake generation */ \
-	{"INTC1063", }, /* Fan for Meteor Lake generation */ \
-	{"INTC106A", }, /* Fan for Lunar Lake generation */ \
-	{"INTC10A2", }, /* Fan for Raptor Lake generation */ \
-	{"INTC10D6", }, /* Fan for Panther Lake generation */ \
-	{"INTC10FE", }, /* Fan for Wildcat Lake generation */ \
+	ACPI_INT3404_DEVICE_IDS, \
 	{"PNP0C0B", } /* Generic ACPI fan */
 
 #define ACPI_FPS_NAME_LEN	20
diff --git a/drivers/acpi/int340x_thermal.h b/drivers/acpi/int340x_thermal.h
index 3b34b5338618..d1ffa9c3cfb7 100644
--- a/drivers/acpi/int340x_thermal.h
+++ b/drivers/acpi/int340x_thermal.h
@@ -34,4 +34,14 @@
 	{"INTC10D5"},	\
 	{"INTC10FD"}
 
+#define ACPI_INT3404_DEVICE_IDS	\
+	{"INT3404", }, /* Fan */ \
+	{"INTC1044", }, /* Fan for Tiger Lake generation */ \
+	{"INTC1048", }, /* Fan for Alder Lake generation */ \
+	{"INTC1063", }, /* Fan for Meteor Lake generation */ \
+	{"INTC106A", }, /* Fan for Lunar Lake generation */ \
+	{"INTC10A2", }, /* Fan for Raptor Lake generation */ \
+	{"INTC10D6", }, /* Fan for Panther Lake generation */ \
+	{"INTC10FE", } /* Fan for Wildcat Lake generation */
+
 #endif
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 07/12] ACPI: DPTF: Move INT3406 device IDs to header
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (5 preceding siblings ...)
  2025-08-30  5:33 ` [PATCH v1 06/12] ACPI: DPTF: Move INT3404 " Slawomir Rosek
@ 2025-08-30  5:33 ` Slawomir Rosek
  2025-08-30  5:34 ` [PATCH v1 08/12] ACPI: DPTF: Move INT3407 " Slawomir Rosek
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:33 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The ACPI INT3406 device IDs are shared between the DPTF core
and thermal drivers, thus they are moved to the common header.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/int340x_thermal.c                     | 2 +-
 drivers/acpi/int340x_thermal.h                          | 3 +++
 drivers/thermal/intel/int340x_thermal/int3406_thermal.c | 3 ++-
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index be2299aadcff..131648ddec87 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -18,7 +18,7 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	ACPI_INT3402_DEVICE_IDS,
 	ACPI_INT3403_DEVICE_IDS,
 	ACPI_INT3404_DEVICE_IDS,
-	{"INT3406"},
+	ACPI_INT3406_DEVICE_IDS,
 	{"INT3407"},
 	{"INT3408"},
 	{"INT3409"},
diff --git a/drivers/acpi/int340x_thermal.h b/drivers/acpi/int340x_thermal.h
index d1ffa9c3cfb7..946f5bb23b44 100644
--- a/drivers/acpi/int340x_thermal.h
+++ b/drivers/acpi/int340x_thermal.h
@@ -44,4 +44,7 @@
 	{"INTC10D6", }, /* Fan for Panther Lake generation */ \
 	{"INTC10FE", } /* Fan for Wildcat Lake generation */
 
+#define ACPI_INT3406_DEVICE_IDS	\
+	{"INT3406"}
+
 #endif
diff --git a/drivers/thermal/intel/int340x_thermal/int3406_thermal.c b/drivers/thermal/intel/int340x_thermal/int3406_thermal.c
index e21fcbccf4ba..d05ca8bc4061 100644
--- a/drivers/thermal/intel/int340x_thermal/int3406_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3406_thermal.c
@@ -12,6 +12,7 @@
 #include <linux/backlight.h>
 #include <linux/thermal.h>
 #include <acpi/video.h>
+#include "../../../../drivers/acpi/int340x_thermal.h"
 
 #define INT3406_BRIGHTNESS_LIMITS_CHANGED	0x80
 
@@ -187,7 +188,7 @@ static void int3406_thermal_remove(struct platform_device *pdev)
 }
 
 static const struct acpi_device_id int3406_thermal_match[] = {
-	{"INT3406", 0},
+	ACPI_INT3406_DEVICE_IDS,
 	{}
 };
 
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 08/12] ACPI: DPTF: Move INT3407 device IDs to header
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (6 preceding siblings ...)
  2025-08-30  5:33 ` [PATCH v1 07/12] ACPI: DPTF: Move INT3406 " Slawomir Rosek
@ 2025-08-30  5:34 ` Slawomir Rosek
  2025-08-30  5:34 ` [PATCH v1 09/12] ACPI: DPTF: Move PCH FIVR " Slawomir Rosek
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:34 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The ACPI INT3407 device IDs are shared between the DPTF core
and thermal drivers, thus they are moved to the common header.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/dptf_power.c      | 18 ++----------------
 drivers/acpi/dptf/int340x_thermal.c | 17 +----------------
 drivers/acpi/int340x_thermal.h      | 18 ++++++++++++++++++
 3 files changed, 21 insertions(+), 32 deletions(-)

diff --git a/drivers/acpi/dptf/dptf_power.c b/drivers/acpi/dptf/dptf_power.c
index 776914f31b9e..d7c59f016083 100644
--- a/drivers/acpi/dptf/dptf_power.c
+++ b/drivers/acpi/dptf/dptf_power.c
@@ -8,6 +8,7 @@
 #include <linux/module.h>
 #include <linux/acpi.h>
 #include <linux/platform_device.h>
+#include "../int340x_thermal.h"
 
 /*
  * Presentation of attributes which are defined for INT3407 and INT3532.
@@ -224,22 +225,7 @@ static void dptf_power_remove(struct platform_device *pdev)
 }
 
 static const struct acpi_device_id int3407_device_ids[] = {
-	{"INT3407", 0},
-	{"INT3532", 0},
-	{"INTC1047", 0},
-	{"INTC1050", 0},
-	{"INTC1060", 0},
-	{"INTC1061", 0},
-	{"INTC1065", 0},
-	{"INTC1066", 0},
-	{"INTC106C", 0},
-	{"INTC106D", 0},
-	{"INTC10A4", 0},
-	{"INTC10A5", 0},
-	{"INTC10D8", 0},
-	{"INTC10D9", 0},
-	{"INTC1100", 0},
-	{"INTC1101", 0},
+	ACPI_INT3407_DEVICE_IDS,
 	{"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, int3407_device_ids);
diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index 131648ddec87..43afb6141b98 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -19,33 +19,18 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	ACPI_INT3403_DEVICE_IDS,
 	ACPI_INT3404_DEVICE_IDS,
 	ACPI_INT3406_DEVICE_IDS,
-	{"INT3407"},
+	ACPI_INT3407_DEVICE_IDS,
 	{"INT3408"},
 	{"INT3409"},
 	{"INT340A"},
 	{"INT340B"},
-	{"INT3532"},
 	{"INTC1045"},
-	{"INTC1047"},
 	{"INTC1049"},
-	{"INTC1050"},
-	{"INTC1060"},
-	{"INTC1061"},
 	{"INTC1064"},
-	{"INTC1065"},
-	{"INTC1066"},
 	{"INTC106B"},
-	{"INTC106C"},
-	{"INTC106D"},
 	{"INTC10A3"},
-	{"INTC10A4"},
-	{"INTC10A5"},
 	{"INTC10D7"},
-	{"INTC10D8"},
-	{"INTC10D9"},
 	{"INTC10FF"},
-	{"INTC1100"},
-	{"INTC1101"},
 	{"INTC1102"},
 	{""},
 };
diff --git a/drivers/acpi/int340x_thermal.h b/drivers/acpi/int340x_thermal.h
index 946f5bb23b44..8a3d2a9b218a 100644
--- a/drivers/acpi/int340x_thermal.h
+++ b/drivers/acpi/int340x_thermal.h
@@ -47,4 +47,22 @@
 #define ACPI_INT3406_DEVICE_IDS	\
 	{"INT3406"}
 
+#define ACPI_INT3407_DEVICE_IDS	\
+	{"INT3407"},	\
+	{"INT3532"},	\
+	{"INTC1047"},	\
+	{"INTC1050"},	\
+	{"INTC1060"},	\
+	{"INTC1061"},	\
+	{"INTC1065"},	\
+	{"INTC1066"},	\
+	{"INTC106C"},	\
+	{"INTC106D"},	\
+	{"INTC10A4"},	\
+	{"INTC10A5"},	\
+	{"INTC10D8"},	\
+	{"INTC10D9"},	\
+	{"INTC1100"},	\
+	{"INTC1101"}
+
 #endif
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 09/12] ACPI: DPTF: Move PCH FIVR device IDs to header
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (7 preceding siblings ...)
  2025-08-30  5:34 ` [PATCH v1 08/12] ACPI: DPTF: Move INT3407 " Slawomir Rosek
@ 2025-08-30  5:34 ` Slawomir Rosek
  2025-08-30  5:34 ` [PATCH v1 10/12] ACPI: DPTF: Remove not supported INT340X IDs Slawomir Rosek
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:34 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

The ACPI PCH FIVR device IDs are shared between the DPTF core
and PCH FIVR driver, thus they are moved to the common header.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/dptf_pch_fivr.c   | 8 ++------
 drivers/acpi/dptf/int340x_thermal.c | 7 +------
 drivers/acpi/int340x_thermal.h      | 8 ++++++++
 3 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/drivers/acpi/dptf/dptf_pch_fivr.c b/drivers/acpi/dptf/dptf_pch_fivr.c
index 952216c67d58..cb81636a5d63 100644
--- a/drivers/acpi/dptf/dptf_pch_fivr.c
+++ b/drivers/acpi/dptf/dptf_pch_fivr.c
@@ -8,6 +8,7 @@
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/platform_device.h>
+#include "../int340x_thermal.h"
 
 struct pch_fivr_resp {
 	u64 status;
@@ -147,12 +148,7 @@ static void pch_fivr_remove(struct platform_device *pdev)
 }
 
 static const struct acpi_device_id pch_fivr_device_ids[] = {
-	{"INTC1045", 0},
-	{"INTC1049", 0},
-	{"INTC1064", 0},
-	{"INTC106B", 0},
-	{"INTC10A3", 0},
-	{"INTC10D7", 0},
+	ACPI_PCH_FIVR_DEVICE_IDS,
 	{"", 0},
 };
 MODULE_DEVICE_TABLE(acpi, pch_fivr_device_ids);
diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index 43afb6141b98..26522ddfcbaa 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -20,16 +20,11 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	ACPI_INT3404_DEVICE_IDS,
 	ACPI_INT3406_DEVICE_IDS,
 	ACPI_INT3407_DEVICE_IDS,
+	ACPI_PCH_FIVR_DEVICE_IDS,
 	{"INT3408"},
 	{"INT3409"},
 	{"INT340A"},
 	{"INT340B"},
-	{"INTC1045"},
-	{"INTC1049"},
-	{"INTC1064"},
-	{"INTC106B"},
-	{"INTC10A3"},
-	{"INTC10D7"},
 	{"INTC10FF"},
 	{"INTC1102"},
 	{""},
diff --git a/drivers/acpi/int340x_thermal.h b/drivers/acpi/int340x_thermal.h
index 8a3d2a9b218a..41e4ca2bc6e2 100644
--- a/drivers/acpi/int340x_thermal.h
+++ b/drivers/acpi/int340x_thermal.h
@@ -65,4 +65,12 @@
 	{"INTC1100"},	\
 	{"INTC1101"}
 
+#define ACPI_PCH_FIVR_DEVICE_IDS	\
+	{"INTC1045"},	\
+	{"INTC1049"},	\
+	{"INTC1064"},	\
+	{"INTC106B"},	\
+	{"INTC10A3"},	\
+	{"INTC10D7"}
+
 #endif
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 10/12] ACPI: DPTF: Remove not supported INT340X IDs
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (8 preceding siblings ...)
  2025-08-30  5:34 ` [PATCH v1 09/12] ACPI: DPTF: Move PCH FIVR " Slawomir Rosek
@ 2025-08-30  5:34 ` Slawomir Rosek
  2025-08-30  5:34 ` [PATCH v1 11/12] ACPI: platform: Add macro for acpi platform driver Slawomir Rosek
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:34 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

Remove not supported ACPI INT340X device IDs from scan handler.

Fixes: 3230bbfce8a9 ("ACPI: introduce ACPI int340x thermal scan handler")
Fixes: 9cf45756a4b9 ("ACPI: DPTF: Support for Wildcat Lake")
Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/int340x_thermal.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index 26522ddfcbaa..7d1308b1f513 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -21,12 +21,6 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 	ACPI_INT3406_DEVICE_IDS,
 	ACPI_INT3407_DEVICE_IDS,
 	ACPI_PCH_FIVR_DEVICE_IDS,
-	{"INT3408"},
-	{"INT3409"},
-	{"INT340A"},
-	{"INT340B"},
-	{"INTC10FF"},
-	{"INTC1102"},
 	{""},
 };
 
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 11/12] ACPI: platform: Add macro for acpi platform driver
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (9 preceding siblings ...)
  2025-08-30  5:34 ` [PATCH v1 10/12] ACPI: DPTF: Remove not supported INT340X IDs Slawomir Rosek
@ 2025-08-30  5:34 ` Slawomir Rosek
  2025-08-30 15:13   ` Hans de Goede
  2025-08-30  5:34 ` [PATCH v1 12/12] ACPI: DPTF: Move INT340X enumeration to modules Slawomir Rosek
  2025-09-01  8:49 ` [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Rafael J. Wysocki
  12 siblings, 1 reply; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:34 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

Introduce module_acpi_platform_driver() macro to simplify dynamic
enumeration of ACPI device objects on the platform bus by loadable
modules. Move common code from the intel-hid and intel-vbtn drivers
to the ACPI platform core.

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/acpi_platform.c      | 27 ++++++++++++++++++++
 drivers/platform/x86/intel/hid.c  | 41 +------------------------------
 drivers/platform/x86/intel/vbtn.c | 30 +---------------------
 include/linux/platform_device.h   | 17 +++++++++++++
 4 files changed, 46 insertions(+), 69 deletions(-)

diff --git a/drivers/acpi/acpi_platform.c b/drivers/acpi/acpi_platform.c
index 48d15dd785f6..adf32ffa6be6 100644
--- a/drivers/acpi/acpi_platform.c
+++ b/drivers/acpi/acpi_platform.c
@@ -190,6 +190,33 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
 }
 EXPORT_SYMBOL_GPL(acpi_create_platform_device);
 
+static acpi_status
+__acpi_platform_driver_register_cb(acpi_handle handle, u32 lvl,
+				void *context, void **rv)
+{
+	const struct acpi_device_id *ids = context;
+	struct acpi_device *dev = acpi_fetch_acpi_dev(handle);
+
+	if (dev && acpi_match_device_ids(dev, ids) == 0)
+		if (!IS_ERR_OR_NULL(acpi_create_platform_device(dev, NULL))) {
+			dev_info(&dev->dev,
+				 "created platform device\n");
+		}
+
+	return AE_OK;
+}
+
+int __acpi_platform_driver_register(struct platform_driver *drv,
+				struct module *owner)
+{
+	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX,
+			    __acpi_platform_driver_register_cb, NULL,
+			    (void *)drv->driver.acpi_match_table, NULL);
+
+	return __platform_driver_register(drv, owner);
+}
+EXPORT_SYMBOL_GPL(__acpi_platform_driver_register);
+
 void __init acpi_platform_init(void)
 {
 	acpi_reconfig_notifier_register(&acpi_platform_notifier);
diff --git a/drivers/platform/x86/intel/hid.c b/drivers/platform/x86/intel/hid.c
index f25a427cccda..e2e0fc95e177 100644
--- a/drivers/platform/x86/intel/hid.c
+++ b/drivers/platform/x86/intel/hid.c
@@ -766,43 +766,4 @@ static struct platform_driver intel_hid_pl_driver = {
 	.remove = intel_hid_remove,
 };
 
-/*
- * Unfortunately, some laptops provide a _HID="INT33D5" device with
- * _CID="PNP0C02".  This causes the pnpacpi scan driver to claim the
- * ACPI node, so no platform device will be created.  The pnpacpi
- * driver rejects this device in subsequent processing, so no physical
- * node is created at all.
- *
- * As a workaround until the ACPI core figures out how to handle
- * this corner case, manually ask the ACPI platform device code to
- * claim the ACPI node.
- */
-static acpi_status __init
-check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)
-{
-	const struct acpi_device_id *ids = context;
-	struct acpi_device *dev = acpi_fetch_acpi_dev(handle);
-
-	if (dev && acpi_match_device_ids(dev, ids) == 0)
-		if (!IS_ERR_OR_NULL(acpi_create_platform_device(dev, NULL)))
-			dev_info(&dev->dev,
-				 "intel-hid: created platform device\n");
-
-	return AE_OK;
-}
-
-static int __init intel_hid_init(void)
-{
-	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
-			    ACPI_UINT32_MAX, check_acpi_dev, NULL,
-			    (void *)intel_hid_ids, NULL);
-
-	return platform_driver_register(&intel_hid_pl_driver);
-}
-module_init(intel_hid_init);
-
-static void __exit intel_hid_exit(void)
-{
-	platform_driver_unregister(&intel_hid_pl_driver);
-}
-module_exit(intel_hid_exit);
+module_acpi_platform_driver(intel_hid_pl_driver);
diff --git a/drivers/platform/x86/intel/vbtn.c b/drivers/platform/x86/intel/vbtn.c
index 232cd12e3c9f..42932479de35 100644
--- a/drivers/platform/x86/intel/vbtn.c
+++ b/drivers/platform/x86/intel/vbtn.c
@@ -390,32 +390,4 @@ static struct platform_driver intel_vbtn_pl_driver = {
 	.remove = intel_vbtn_remove,
 };
 
-static acpi_status __init
-check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)
-{
-	const struct acpi_device_id *ids = context;
-	struct acpi_device *dev = acpi_fetch_acpi_dev(handle);
-
-	if (dev && acpi_match_device_ids(dev, ids) == 0)
-		if (!IS_ERR_OR_NULL(acpi_create_platform_device(dev, NULL)))
-			dev_info(&dev->dev,
-				 "intel-vbtn: created platform device\n");
-
-	return AE_OK;
-}
-
-static int __init intel_vbtn_init(void)
-{
-	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
-			    ACPI_UINT32_MAX, check_acpi_dev, NULL,
-			    (void *)intel_vbtn_ids, NULL);
-
-	return platform_driver_register(&intel_vbtn_pl_driver);
-}
-module_init(intel_vbtn_init);
-
-static void __exit intel_vbtn_exit(void)
-{
-	platform_driver_unregister(&intel_vbtn_pl_driver);
-}
-module_exit(intel_vbtn_exit);
+module_acpi_platform_driver(intel_vbtn_pl_driver);
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h
index 074754c23d33..3b70b054d8a5 100644
--- a/include/linux/platform_device.h
+++ b/include/linux/platform_device.h
@@ -264,6 +264,14 @@ extern int __platform_driver_register(struct platform_driver *,
 					struct module *);
 extern void platform_driver_unregister(struct platform_driver *);
 
+/*
+ * use a macro to avoid include chaining to get THIS_MODULE
+ */
+#define acpi_platform_driver_register(drv) \
+	__acpi_platform_driver_register(drv, THIS_MODULE)
+extern int __acpi_platform_driver_register(struct platform_driver *,
+					struct module *);
+
 /* non-hotpluggable platform devices may use this so that probe() and
  * its support may live in __init sections, conserving runtime memory.
  */
@@ -292,6 +300,15 @@ static inline void platform_set_drvdata(struct platform_device *pdev,
 	module_driver(__platform_driver, platform_driver_register, \
 			platform_driver_unregister)
 
+/* module_acpi_platform_driver() - Helper macro for drivers that don't do
+ * anything special in module init/exit.  This eliminates a lot of
+ * boilerplate.  Each module may only use this macro once, and
+ * calling it replaces module_init() and module_exit()
+ */
+#define module_acpi_platform_driver(__platform_driver) \
+	module_driver(__platform_driver, acpi_platform_driver_register, \
+			platform_driver_unregister)
+
 /* builtin_platform_driver() - Helper macro for builtin drivers that
  * don't do anything special in driver init.  This eliminates some
  * boilerplate.  Each driver may only use this macro once, and
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH v1 12/12] ACPI: DPTF: Move INT340X enumeration to modules
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (10 preceding siblings ...)
  2025-08-30  5:34 ` [PATCH v1 11/12] ACPI: platform: Add macro for acpi platform driver Slawomir Rosek
@ 2025-08-30  5:34 ` Slawomir Rosek
  2025-09-01  8:49 ` [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Rafael J. Wysocki
  12 siblings, 0 replies; 15+ messages in thread
From: Slawomir Rosek @ 2025-08-30  5:34 UTC (permalink / raw)
  To: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm, Slawomir Rosek

Move enumeration of INT340X ACPI device objects on the platform bus
from DPTF core to thermal drivers using ACPI platform core methods

Signed-off-by: Slawomir Rosek <srosek@google.com>
---
 drivers/acpi/dptf/dptf_pch_fivr.c                       | 2 +-
 drivers/acpi/dptf/dptf_power.c                          | 2 +-
 drivers/acpi/dptf/int340x_thermal.c                     | 7 +++++--
 drivers/acpi/fan_core.c                                 | 2 +-
 drivers/thermal/intel/int340x_thermal/int3400_thermal.c | 2 +-
 drivers/thermal/intel/int340x_thermal/int3401_thermal.c | 2 +-
 drivers/thermal/intel/int340x_thermal/int3402_thermal.c | 2 +-
 drivers/thermal/intel/int340x_thermal/int3403_thermal.c | 2 +-
 drivers/thermal/intel/int340x_thermal/int3406_thermal.c | 2 +-
 9 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/drivers/acpi/dptf/dptf_pch_fivr.c b/drivers/acpi/dptf/dptf_pch_fivr.c
index cb81636a5d63..f3cd52c89e8d 100644
--- a/drivers/acpi/dptf/dptf_pch_fivr.c
+++ b/drivers/acpi/dptf/dptf_pch_fivr.c
@@ -162,7 +162,7 @@ static struct platform_driver pch_fivr_driver = {
 	},
 };
 
-module_platform_driver(pch_fivr_driver);
+module_acpi_platform_driver(pch_fivr_driver);
 
 MODULE_AUTHOR("Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/acpi/dptf/dptf_power.c b/drivers/acpi/dptf/dptf_power.c
index d7c59f016083..b85e876b2e85 100644
--- a/drivers/acpi/dptf/dptf_power.c
+++ b/drivers/acpi/dptf/dptf_power.c
@@ -239,7 +239,7 @@ static struct platform_driver dptf_power_driver = {
 	},
 };
 
-module_platform_driver(dptf_power_driver);
+module_acpi_platform_driver(dptf_power_driver);
 
 MODULE_AUTHOR("Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/acpi/dptf/int340x_thermal.c b/drivers/acpi/dptf/int340x_thermal.c
index 7d1308b1f513..b2be3a8df9ac 100644
--- a/drivers/acpi/dptf/int340x_thermal.c
+++ b/drivers/acpi/dptf/int340x_thermal.c
@@ -27,8 +27,11 @@ static const struct acpi_device_id int340x_thermal_device_ids[] = {
 static int int340x_thermal_handler_attach(struct acpi_device *adev,
 					const struct acpi_device_id *id)
 {
-	if (IS_ENABLED(CONFIG_INT340X_THERMAL))
-		acpi_create_platform_device(adev, NULL);
+	/*
+	 * Do not attach INT340X devices until platform drivers are loaded.
+	 * Enumeration of INT340X ACPI device objects on the platform bus
+	 * should be done by thermal drivers.
+	 */
 	return 1;
 }
 
diff --git a/drivers/acpi/fan_core.c b/drivers/acpi/fan_core.c
index 095502086b41..7df3caa59b73 100644
--- a/drivers/acpi/fan_core.c
+++ b/drivers/acpi/fan_core.c
@@ -473,7 +473,7 @@ static struct platform_driver acpi_fan_driver = {
 	},
 };
 
-module_platform_driver(acpi_fan_driver);
+module_acpi_platform_driver(acpi_fan_driver);
 
 MODULE_AUTHOR("Paul Diefenbaugh");
 MODULE_DESCRIPTION("ACPI Fan Driver");
diff --git a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c b/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
index 6311125c3ebd..0005961328fc 100644
--- a/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3400_thermal.c
@@ -699,7 +699,7 @@ static struct platform_driver int3400_thermal_driver = {
 		   },
 };
 
-module_platform_driver(int3400_thermal_driver);
+module_acpi_platform_driver(int3400_thermal_driver);
 
 MODULE_DESCRIPTION("INT3400 Thermal driver");
 MODULE_AUTHOR("Zhang Rui <rui.zhang@intel.com>");
diff --git a/drivers/thermal/intel/int340x_thermal/int3401_thermal.c b/drivers/thermal/intel/int340x_thermal/int3401_thermal.c
index e0603f218d2e..d496f8b171e0 100644
--- a/drivers/thermal/intel/int340x_thermal/int3401_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3401_thermal.c
@@ -69,7 +69,7 @@ static struct platform_driver int3401_driver = {
 	},
 };
 
-module_platform_driver(int3401_driver);
+module_acpi_platform_driver(int3401_driver);
 
 MODULE_AUTHOR("Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>");
 MODULE_DESCRIPTION("Processor Thermal Reporting Device Driver");
diff --git a/drivers/thermal/intel/int340x_thermal/int3402_thermal.c b/drivers/thermal/intel/int340x_thermal/int3402_thermal.c
index 213d4535f2c1..d06c06fadce5 100644
--- a/drivers/thermal/intel/int340x_thermal/int3402_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3402_thermal.c
@@ -100,7 +100,7 @@ static struct platform_driver int3402_thermal_driver = {
 		   },
 };
 
-module_platform_driver(int3402_thermal_driver);
+module_acpi_platform_driver(int3402_thermal_driver);
 
 MODULE_DESCRIPTION("INT3402 Thermal driver");
 MODULE_LICENSE("GPL");
diff --git a/drivers/thermal/intel/int340x_thermal/int3403_thermal.c b/drivers/thermal/intel/int340x_thermal/int3403_thermal.c
index d246c69d4872..33735515b47d 100644
--- a/drivers/thermal/intel/int340x_thermal/int3403_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3403_thermal.c
@@ -284,7 +284,7 @@ static struct platform_driver int3403_driver = {
 	},
 };
 
-module_platform_driver(int3403_driver);
+module_acpi_platform_driver(int3403_driver);
 
 MODULE_AUTHOR("Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>");
 MODULE_LICENSE("GPL v2");
diff --git a/drivers/thermal/intel/int340x_thermal/int3406_thermal.c b/drivers/thermal/intel/int340x_thermal/int3406_thermal.c
index d05ca8bc4061..03cc026cdffb 100644
--- a/drivers/thermal/intel/int340x_thermal/int3406_thermal.c
+++ b/drivers/thermal/intel/int340x_thermal/int3406_thermal.c
@@ -203,7 +203,7 @@ static struct platform_driver int3406_thermal_driver = {
 		   },
 };
 
-module_platform_driver(int3406_thermal_driver);
+module_acpi_platform_driver(int3406_thermal_driver);
 
 MODULE_DESCRIPTION("INT3406 Thermal driver");
 MODULE_LICENSE("GPL v2");
-- 
2.51.0.318.gd7df087d1a-goog


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH v1 11/12] ACPI: platform: Add macro for acpi platform driver
  2025-08-30  5:34 ` [PATCH v1 11/12] ACPI: platform: Add macro for acpi platform driver Slawomir Rosek
@ 2025-08-30 15:13   ` Hans de Goede
  0 siblings, 0 replies; 15+ messages in thread
From: Hans de Goede @ 2025-08-30 15:13 UTC (permalink / raw)
  To: Slawomir Rosek, Rafael J . Wysocki, Alex Hung, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano
  Cc: Greg Kroah-Hartman, Zhang Rui, Srinivas Pandruvada,
	Tomasz Nowicki, Stanislaw Kardach, Michal Krawczyk, linux-kernel,
	linux-acpi, platform-driver-x86, linux-pm

Hi Slawomir,

On 30-Aug-25 7:34 AM, Slawomir Rosek wrote:
> Introduce module_acpi_platform_driver() macro to simplify dynamic
> enumeration of ACPI device objects on the platform bus by loadable
> modules. Move common code from the intel-hid and intel-vbtn drivers
> to the ACPI platform core.
> 
> Signed-off-by: Slawomir Rosek <srosek@google.com>

Thank you for your interesting patch.

> ---
>  drivers/acpi/acpi_platform.c      | 27 ++++++++++++++++++++
>  drivers/platform/x86/intel/hid.c  | 41 +------------------------------
>  drivers/platform/x86/intel/vbtn.c | 30 +---------------------
>  include/linux/platform_device.h   | 17 +++++++++++++
>  4 files changed, 46 insertions(+), 69 deletions(-)
> 
> diff --git a/drivers/acpi/acpi_platform.c b/drivers/acpi/acpi_platform.c
> index 48d15dd785f6..adf32ffa6be6 100644
> --- a/drivers/acpi/acpi_platform.c
> +++ b/drivers/acpi/acpi_platform.c
> @@ -190,6 +190,33 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev,
>  }
>  EXPORT_SYMBOL_GPL(acpi_create_platform_device);
>  
> +static acpi_status
> +__acpi_platform_driver_register_cb(acpi_handle handle, u32 lvl,
> +				void *context, void **rv)
> +{
> +	const struct acpi_device_id *ids = context;
> +	struct acpi_device *dev = acpi_fetch_acpi_dev(handle);
> +
> +	if (dev && acpi_match_device_ids(dev, ids) == 0)
> +		if (!IS_ERR_OR_NULL(acpi_create_platform_device(dev, NULL))) {
> +			dev_info(&dev->dev,
> +				 "created platform device\n");
> +		}
> +
> +	return AE_OK;
> +}
> +
> +int __acpi_platform_driver_register(struct platform_driver *drv,
> +				struct module *owner)
> +{
> +	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX,
> +			    __acpi_platform_driver_register_cb, NULL,
> +			    (void *)drv->driver.acpi_match_table, NULL);
> +
> +	return __platform_driver_register(drv, owner);
> +}
> +EXPORT_SYMBOL_GPL(__acpi_platform_driver_register);
> +
>  void __init acpi_platform_init(void)
>  {
>  	acpi_reconfig_notifier_register(&acpi_platform_notifier);
> diff --git a/drivers/platform/x86/intel/hid.c b/drivers/platform/x86/intel/hid.c
> index f25a427cccda..e2e0fc95e177 100644
> --- a/drivers/platform/x86/intel/hid.c
> +++ b/drivers/platform/x86/intel/hid.c
> @@ -766,43 +766,4 @@ static struct platform_driver intel_hid_pl_driver = {
>  	.remove = intel_hid_remove,
>  };
>  
> -/*
> - * Unfortunately, some laptops provide a _HID="INT33D5" device with
> - * _CID="PNP0C02".  This causes the pnpacpi scan driver to claim the
> - * ACPI node, so no platform device will be created.  The pnpacpi
> - * driver rejects this device in subsequent processing, so no physical
> - * node is created at all.
> - *
> - * As a workaround until the ACPI core figures out how to handle
> - * this corner case, manually ask the ACPI platform device code to
> - * claim the ACPI node.
> - */

This comment contains useful info, please preserve the comment changing
the last paragraph to:

 * As a workaround until the ACPI core figures out how to handle
 * this corner case, manually ask the ACPI platform device code to
 * claim the ACPI node by using module_acpi_platform_driver()
 * instead of the regular module_platform_driver().

> -static acpi_status __init
> -check_acpi_dev(acpi_handle handle, u32 lvl, void *context, void **rv)
> -{
> -	const struct acpi_device_id *ids = context;
> -	struct acpi_device *dev = acpi_fetch_acpi_dev(handle);
> -
> -	if (dev && acpi_match_device_ids(dev, ids) == 0)
> -		if (!IS_ERR_OR_NULL(acpi_create_platform_device(dev, NULL)))
> -			dev_info(&dev->dev,
> -				 "intel-hid: created platform device\n");
> -
> -	return AE_OK;
> -}
> -
> -static int __init intel_hid_init(void)
> -{
> -	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
> -			    ACPI_UINT32_MAX, check_acpi_dev, NULL,
> -			    (void *)intel_hid_ids, NULL);
> -
> -	return platform_driver_register(&intel_hid_pl_driver);
> -}
> -module_init(intel_hid_init);
> -
> -static void __exit intel_hid_exit(void)
> -{
> -	platform_driver_unregister(&intel_hid_pl_driver);
> -}
> -module_exit(intel_hid_exit);
> +module_acpi_platform_driver(intel_hid_pl_driver);
> diff --git a/drivers/platform/x86/intel/vbtn.c b/drivers/platform/x86/intel/vbtn.c
> index 232cd12e3c9f..42932479de35 100644
> --- a/drivers/platform/x86/intel/vbtn.c
> +++ b/drivers/platform/x86/intel/vbtn.c

...

> -static int __init intel_vbtn_init(void)
> -{
> -	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
> -			    ACPI_UINT32_MAX, check_acpi_dev, NULL,
> -			    (void *)intel_vbtn_ids, NULL);

Too bad there is no comment here. I wonder if this is necessary
at all, or if this was just copy & pasted from the intel/hid.c
driver.

git blame is not really helpful here, the acpi_walk_namespace()
was added in 332e081225fc2 ("intel-vbtn: new driver for Intel Virtual
Button").

So it looks like this is just copy paste and maybe a regular
module_platform_driver() will be sufficient here. But changing
behavior like that is out of scope for this patch-set, so please
keep using module_acpi_platform_driver()

Otherwise this looks good to me.

Regards,

Hans



^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers
  2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
                   ` (11 preceding siblings ...)
  2025-08-30  5:34 ` [PATCH v1 12/12] ACPI: DPTF: Move INT340X enumeration to modules Slawomir Rosek
@ 2025-09-01  8:49 ` Rafael J. Wysocki
  12 siblings, 0 replies; 15+ messages in thread
From: Rafael J. Wysocki @ 2025-09-01  8:49 UTC (permalink / raw)
  To: Slawomir Rosek
  Cc: Rafael J . Wysocki, Alex Hung, Hans de Goede, Ilpo Jarvinen,
	AceLan Kao, Daniel Lezcano, Greg Kroah-Hartman, Zhang Rui,
	Srinivas Pandruvada, Tomasz Nowicki, Stanislaw Kardach,
	Michal Krawczyk, linux-kernel, linux-acpi, platform-driver-x86,
	linux-pm

On Sat, Aug 30, 2025 at 7:34 AM Slawomir Rosek <srosek@google.com> wrote:
>
> The Intel Dynamic Platform and Thermal Framework (DPTF) relies on
> the INT340X ACPI device objects. The temperature information and
> cooling ability are exposed to the userspace via those objects.
>
> Since kernel v3.17 the ACPI bus scan handler is introduced to prevent
> enumeration of INT340X ACPI device objects on the platform bus unless
> related thermal drivers are enabled. However, using the IS_ENABLED()
> macro in the ACPI scan handler forces the kernel to be recompiled
> when thermal drivers are enabled or disabled, which is a significant
> limitation of its modularity. The IS_ENABLED() macro is particularly
> problematic for the Android Generic Kernel Image (GKI) project which
> uses unified core kernel while SoC/board support is moved to loadable
> vendor modules.
>
> This patch set moves enumeration of INT340X ACPI device objects on
> the platform bus from DPTF core to thermal drivers. It starts with
> some code cleanup and reorganization to eventually remove IS_ENABLED()
> macro from the ACPI bus scan handler. Brief list of changes is listed
> below:
>
> 1) Remove SOC DTS thermal driver case from the ACPI scan handler
>    since its dependency on INT340X driver is unrelated to DPTF
> 2) Move all INT340X ACPI device ids to the common header and update
>    the DPTF core and thermal drivers accordingly
> 3) Move dynamic enumeration of ACPI device objects on the platform bus
>    from the intel-hid and intel-vbtn drivers to the ACPI platform core
> 4) Move enumeration of INT340X ACPI device objects on the platform bus
>    from DPTF core to thermal drivers using ACPI platform core methods
>
>
> Slawomir Rosek (12):
>   ACPI: DPTF: Ignore SoC DTS thermal while scanning
>   ACPI: DPTF: Move INT3400 device IDs to header
>   ACPI: DPTF: Move INT3401 device IDs to header
>   ACPI: DPTF: Move INT3402 device IDs to header
>   ACPI: DPTF: Move INT3403 device IDs to header
>   ACPI: DPTF: Move INT3404 device IDs to header
>   ACPI: DPTF: Move INT3406 device IDs to header
>   ACPI: DPTF: Move INT3407 device IDs to header

Please avoid sending multiple patches with the same subject,
especially in one patch series.

Thanks!

>   ACPI: DPTF: Move PCH FIVR device IDs to header
>   ACPI: DPTF: Remove not supported INT340X IDs
>   ACPI: platform: Add macro for acpi platform driver
>   ACPI: DPTF: Move INT340X enumeration to modules
>
>  drivers/acpi/acpi_platform.c                  | 27 +++++++
>  drivers/acpi/dptf/dptf_pch_fivr.c             | 10 +--
>  drivers/acpi/dptf/dptf_power.c                | 20 +----
>  drivers/acpi/dptf/int340x_thermal.c           | 76 ++++---------------
>  drivers/acpi/fan.h                            | 10 +--
>  drivers/acpi/fan_core.c                       |  2 +-
>  drivers/acpi/int340x_thermal.h                | 76 +++++++++++++++++++
>  drivers/platform/x86/intel/hid.c              | 41 +---------
>  drivers/platform/x86/intel/vbtn.c             | 30 +-------
>  drivers/thermal/intel/Kconfig                 |  1 +
>  .../intel/int340x_thermal/int3400_thermal.c   | 12 +--
>  .../intel/int340x_thermal/int3401_thermal.c   |  5 +-
>  .../intel/int340x_thermal/int3402_thermal.c   |  5 +-
>  .../intel/int340x_thermal/int3403_thermal.c   | 12 +--
>  .../intel/int340x_thermal/int3406_thermal.c   |  5 +-
>  include/linux/platform_device.h               | 17 +++++
>  16 files changed, 161 insertions(+), 188 deletions(-)
>  create mode 100644 drivers/acpi/int340x_thermal.h
>
> --

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2025-09-01  8:49 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-30  5:33 [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Slawomir Rosek
2025-08-30  5:33 ` [PATCH v1 01/12] ACPI: DPTF: Ignore SoC DTS thermal while scanning Slawomir Rosek
2025-08-30  5:33 ` [PATCH v1 02/12] ACPI: DPTF: Move INT3400 device IDs to header Slawomir Rosek
2025-08-30  5:33 ` [PATCH v1 03/12] ACPI: DPTF: Move INT3401 " Slawomir Rosek
2025-08-30  5:33 ` [PATCH v1 04/12] ACPI: DPTF: Move INT3402 " Slawomir Rosek
2025-08-30  5:33 ` [PATCH v1 05/12] ACPI: DPTF: Move INT3403 " Slawomir Rosek
2025-08-30  5:33 ` [PATCH v1 06/12] ACPI: DPTF: Move INT3404 " Slawomir Rosek
2025-08-30  5:33 ` [PATCH v1 07/12] ACPI: DPTF: Move INT3406 " Slawomir Rosek
2025-08-30  5:34 ` [PATCH v1 08/12] ACPI: DPTF: Move INT3407 " Slawomir Rosek
2025-08-30  5:34 ` [PATCH v1 09/12] ACPI: DPTF: Move PCH FIVR " Slawomir Rosek
2025-08-30  5:34 ` [PATCH v1 10/12] ACPI: DPTF: Remove not supported INT340X IDs Slawomir Rosek
2025-08-30  5:34 ` [PATCH v1 11/12] ACPI: platform: Add macro for acpi platform driver Slawomir Rosek
2025-08-30 15:13   ` Hans de Goede
2025-08-30  5:34 ` [PATCH v1 12/12] ACPI: DPTF: Move INT340X enumeration to modules Slawomir Rosek
2025-09-01  8:49 ` [PATCH v1 00/12] ACPI: DPTF: Move INT340X enumeration from DPTF core to thermal drivers Rafael J. Wysocki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).