File Index
Files and directories
Sign in
FILE

quirks.h

File preview with syntax highlighting.

linux-6.19.14/drivers/firmware/arm_scmi/quirks.h C
 1/* SPDX-License-Identifier: GPL-2.0 */
 2/*
 3 * System Control and Management Interface (SCMI) Message Protocol Quirks
 4 *
 5 * Copyright (C) 2025 ARM Ltd.
 6 */
 7#ifndef _SCMI_QUIRKS_H
 8#define _SCMI_QUIRKS_H
 9
10#include <linux/static_key.h>
11#include <linux/types.h>
12
13#ifdef CONFIG_ARM_SCMI_QUIRKS
14
15#define DECLARE_SCMI_QUIRK(_qn)						\
16	DECLARE_STATIC_KEY_FALSE(scmi_quirk_ ## _qn)
17
18/*
19 * A helper to associate the actual code snippet to use as a quirk
20 * named as _qn.
21 */
22#define SCMI_QUIRK(_qn, _blk)						\
23	do {								\
24		if (static_branch_unlikely(&(scmi_quirk_ ## _qn)))	\
25			(_blk);						\
26	} while (0)
27
28void scmi_quirks_initialize(void);
29void scmi_quirks_enable(struct device *dev, const char *vend,
30			const char *subv, const u32 impl);
31
32#else
33
34#define DECLARE_SCMI_QUIRK(_qn)
35/* Force quirks compilation even when SCMI Quirks are disabled */
36#define SCMI_QUIRK(_qn, _blk)						\
37	do {								\
38		if (0)							\
39			(_blk);						\
40	} while (0)
41
42static inline void scmi_quirks_initialize(void) { }
43static inline void scmi_quirks_enable(struct device *dev, const char *vend,
44				      const char *sub_vend, const u32 impl) { }
45
46#endif /* CONFIG_ARM_SCMI_QUIRKS */
47
48/* Quirk delarations */
49DECLARE_SCMI_QUIRK(clock_rates_triplet_out_of_spec);
50DECLARE_SCMI_QUIRK(perf_level_get_fc_force);
51
52#endif /* _SCMI_QUIRKS_H */
~/ Read-only file preview.