1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
3 * The MIPI SDCA specification is available for public downloads at
4 * https://www.mipi.org/mipi-sdca-v1-0-download
6 * Copyright(c) 2024 Intel Corporation
12 #include <linux/types.h>
13 #include <linux/kconfig.h>
17 #define SDCA_MAX_FUNCTION_COUNT 8
20 * sdca_device_desc - short descriptor for an SDCA Function
21 * @adr: ACPI address (used for SDCA register access)
22 * @type: Function topology type
23 * @name: human-readable string
25 struct sdca_function_desc
{
32 * sdca_device_data - structure containing all SDCA related information
33 * @sdca_interface_revision: value read from _DSD property, mainly to check
34 * for changes between silicon versions
35 * @num_functions: total number of supported SDCA functions. Invalid/unsupported
36 * functions will be skipped.
37 * @sdca_func: array of function descriptors
39 struct sdca_device_data
{
40 u32 interface_revision
;
42 struct sdca_function_desc sdca_func
[SDCA_MAX_FUNCTION_COUNT
];
49 #if IS_ENABLED(CONFIG_ACPI) && IS_ENABLED(CONFIG_SND_SOC_SDCA)
51 void sdca_lookup_functions(struct sdw_slave
*slave
);
52 void sdca_lookup_interface_revision(struct sdw_slave
*slave
);
53 bool sdca_device_quirk_match(struct sdw_slave
*slave
, enum sdca_quirk quirk
);
57 static inline void sdca_lookup_functions(struct sdw_slave
*slave
) {}
58 static inline void sdca_lookup_interface_revision(struct sdw_slave
*slave
) {}
59 static inline bool sdca_device_quirk_match(struct sdw_slave
*slave
, enum sdca_quirk quirk
)