FILE
quirks.h
File preview with syntax highlighting.
linux-6.19.14/drivers/firmware/arm_scmi/quirks.h
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.