linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] firmware: arm_scmi: Rework quirks framework header
@ 2025-08-15 10:27 Cristian Marussi
  2025-08-15 10:27 ` [PATCH 2/2] [NOT_FOR_UPSTREAM] cpufreq: scmi: Add quirk to disable checks in scmi_dev_used_by_cpus() Cristian Marussi
  2025-08-18  5:35 ` [PATCH 1/2] firmware: arm_scmi: Rework quirks framework header Dhruva Gole
  0 siblings, 2 replies; 6+ messages in thread
From: Cristian Marussi @ 2025-08-15 10:27 UTC (permalink / raw)
  To: linux-kernel, linux-arm-kernel, arm-scmi, linux-pm
  Cc: sudeep.holla, james.quinlan, f.fainelli, vincent.guittot,
	quic_sibis, dan.carpenter, d-gole, johan+linaro, rafael,
	viresh.kumar, quic_mdtipton, Cristian Marussi

Split and relocate the quirks framework header so as to be usable also by
SCMI Drivers and not only by the core.

Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
---
 drivers/firmware/arm_scmi/clock.c  |  2 +-
 drivers/firmware/arm_scmi/driver.c |  1 +
 drivers/firmware/arm_scmi/quirks.h | 33 +++-------------------
 include/linux/scmi_quirks.h        | 44 ++++++++++++++++++++++++++++++
 4 files changed, 50 insertions(+), 30 deletions(-)
 create mode 100644 include/linux/scmi_quirks.h

diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c
index afa7981efe82..5599697de37a 100644
--- a/drivers/firmware/arm_scmi/clock.c
+++ b/drivers/firmware/arm_scmi/clock.c
@@ -7,11 +7,11 @@
 
 #include <linux/module.h>
 #include <linux/limits.h>
+#include <linux/scmi_quirks.h>
 #include <linux/sort.h>
 
 #include "protocols.h"
 #include "notify.h"
-#include "quirks.h"
 
 /* Updated only after ALL the mandatory features for that version are merged */
 #define SCMI_PROTOCOL_SUPPORTED_VERSION		0x30000
diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c
index bd56a877fdfc..6f5934cd3a65 100644
--- a/drivers/firmware/arm_scmi/driver.c
+++ b/drivers/firmware/arm_scmi/driver.c
@@ -34,6 +34,7 @@
 #include <linux/processor.h>
 #include <linux/refcount.h>
 #include <linux/slab.h>
+#include <linux/scmi_quirks.h>
 #include <linux/xarray.h>
 
 #include "common.h"
diff --git a/drivers/firmware/arm_scmi/quirks.h b/drivers/firmware/arm_scmi/quirks.h
index a71fde85a527..260ae38d617b 100644
--- a/drivers/firmware/arm_scmi/quirks.h
+++ b/drivers/firmware/arm_scmi/quirks.h
@@ -4,49 +4,24 @@
  *
  * Copyright (C) 2025 ARM Ltd.
  */
-#ifndef _SCMI_QUIRKS_H
-#define _SCMI_QUIRKS_H
+#ifndef _SCMI_QUIRKS_INTERNAL_H
+#define _SCMI_QUIRKS_INTERNAL_H
 
-#include <linux/static_key.h>
+#include <linux/device.h>
 #include <linux/types.h>
 
 #ifdef CONFIG_ARM_SCMI_QUIRKS
 
-#define DECLARE_SCMI_QUIRK(_qn)						\
-	DECLARE_STATIC_KEY_FALSE(scmi_quirk_ ## _qn)
-
-/*
- * A helper to associate the actual code snippet to use as a quirk
- * named as _qn.
- */
-#define SCMI_QUIRK(_qn, _blk)						\
-	do {								\
-		if (static_branch_unlikely(&(scmi_quirk_ ## _qn)))	\
-			(_blk);						\
-	} while (0)
-
 void scmi_quirks_initialize(void);
 void scmi_quirks_enable(struct device *dev, const char *vend,
 			const char *subv, const u32 impl);
 
 #else
 
-#define DECLARE_SCMI_QUIRK(_qn)
-/* Force quirks compilation even when SCMI Quirks are disabled */
-#define SCMI_QUIRK(_qn, _blk)						\
-	do {								\
-		if (0)							\
-			(_blk);						\
-	} while (0)
-
 static inline void scmi_quirks_initialize(void) { }
 static inline void scmi_quirks_enable(struct device *dev, const char *vend,
 				      const char *sub_vend, const u32 impl) { }
 
 #endif /* CONFIG_ARM_SCMI_QUIRKS */
 
-/* Quirk delarations */
-DECLARE_SCMI_QUIRK(clock_rates_triplet_out_of_spec);
-DECLARE_SCMI_QUIRK(perf_level_get_fc_force);
-
-#endif /* _SCMI_QUIRKS_H */
+#endif /* _SCMI_QUIRKS_INTERNAL_H */
diff --git a/include/linux/scmi_quirks.h b/include/linux/scmi_quirks.h
new file mode 100644
index 000000000000..11657bd91ffc
--- /dev/null
+++ b/include/linux/scmi_quirks.h
@@ -0,0 +1,44 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * System Control and Management Interface (SCMI) Message Protocol Quirks
+ *
+ * Copyright (C) 2025 ARM Ltd.
+ */
+#ifndef _SCMI_QUIRKS_H
+#define _SCMI_QUIRKS_H
+
+#include <linux/static_key.h>
+#include <linux/types.h>
+
+#ifdef CONFIG_ARM_SCMI_QUIRKS
+
+#define DECLARE_SCMI_QUIRK(_qn)						\
+	DECLARE_STATIC_KEY_FALSE(scmi_quirk_ ## _qn)
+
+/*
+ * A helper to associate the actual code snippet to use as a quirk
+ * named as _qn.
+ */
+#define SCMI_QUIRK(_qn, _blk)						\
+	do {								\
+		if (static_branch_unlikely(&(scmi_quirk_ ## _qn)))	\
+			(_blk);						\
+	} while (0)
+
+#else
+
+#define DECLARE_SCMI_QUIRK(_qn)
+/* Force quirks compilation even when SCMI Quirks are disabled */
+#define SCMI_QUIRK(_qn, _blk)						\
+	do {								\
+		if (0)							\
+			(_blk);						\
+	} while (0)
+
+#endif /* CONFIG_ARM_SCMI_QUIRKS */
+
+/* Quirk delarations */
+DECLARE_SCMI_QUIRK(clock_rates_triplet_out_of_spec);
+DECLARE_SCMI_QUIRK(perf_level_get_fc_force);
+
+#endif /* _SCMI_QUIRKS_H */
-- 
2.50.1



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

end of thread, other threads:[~2025-08-18 14:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-15 10:27 [PATCH 1/2] firmware: arm_scmi: Rework quirks framework header Cristian Marussi
2025-08-15 10:27 ` [PATCH 2/2] [NOT_FOR_UPSTREAM] cpufreq: scmi: Add quirk to disable checks in scmi_dev_used_by_cpus() Cristian Marussi
2025-08-18  6:20   ` Dhruva Gole
2025-08-18 13:21     ` Cristian Marussi
2025-08-18  5:35 ` [PATCH 1/2] firmware: arm_scmi: Rework quirks framework header Dhruva Gole
2025-08-18 13:19   ` Cristian Marussi

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).