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
9 #ifndef __SDCA_FUNCTION_H__
10 #define __SDCA_FUNCTION_H__
12 #include <linux/bits.h>
15 * SDCA Function Types from SDCA specification v1.0a Section 5.1.2
16 * all Function types not described are reserved
17 * Note that SIMPLE_AMP, SIMPLE_MIC and SIMPLE_JACK Function Types
18 * are NOT defined in SDCA 1.0a, but they were defined in earlier
19 * drafts and are planned for 1.1.
22 enum sdca_function_type
{
23 SDCA_FUNCTION_TYPE_SMART_AMP
= 0x01, /* Amplifier with protection features */
24 SDCA_FUNCTION_TYPE_SIMPLE_AMP
= 0x02, /* subset of SmartAmp */
25 SDCA_FUNCTION_TYPE_SMART_MIC
= 0x03, /* Smart microphone with acoustic triggers */
26 SDCA_FUNCTION_TYPE_SIMPLE_MIC
= 0x04, /* subset of SmartMic */
27 SDCA_FUNCTION_TYPE_SPEAKER_MIC
= 0x05, /* Combination of SmartMic and SmartAmp */
28 SDCA_FUNCTION_TYPE_UAJ
= 0x06, /* 3.5mm Universal Audio jack */
29 SDCA_FUNCTION_TYPE_RJ
= 0x07, /* Retaskable jack */
30 SDCA_FUNCTION_TYPE_SIMPLE_JACK
= 0x08, /* Subset of UAJ */
31 SDCA_FUNCTION_TYPE_HID
= 0x0A, /* Human Interface Device, for e.g. buttons */
32 SDCA_FUNCTION_TYPE_IMP_DEF
= 0x1F, /* Implementation-defined function */
35 /* Human-readable names used for kernel logs and Function device registration/bind */
36 #define SDCA_FUNCTION_TYPE_SMART_AMP_NAME "SmartAmp"
37 #define SDCA_FUNCTION_TYPE_SIMPLE_AMP_NAME "SimpleAmp"
38 #define SDCA_FUNCTION_TYPE_SMART_MIC_NAME "SmartMic"
39 #define SDCA_FUNCTION_TYPE_SIMPLE_MIC_NAME "SimpleMic"
40 #define SDCA_FUNCTION_TYPE_SPEAKER_MIC_NAME "SpeakerMic"
41 #define SDCA_FUNCTION_TYPE_UAJ_NAME "UAJ"
42 #define SDCA_FUNCTION_TYPE_RJ_NAME "RJ"
43 #define SDCA_FUNCTION_TYPE_SIMPLE_NAME "SimpleJack"
44 #define SDCA_FUNCTION_TYPE_HID_NAME "HID"
45 #define SDCA_FUNCTION_TYPE_IMP_DEF_NAME "ImplementationDefined"
47 enum sdca_entity0_controls
{
48 SDCA_CTL_ENTITY_0_COMMIT_GROUP_MASK
= 0x01,
49 SDCA_CTL_ENTITY_0_FUNCTION_SDCA_VERSION
= 0x04,
50 SDCA_CTL_ENTITY_0_FUNCTION_TYPE
= 0x05,
51 SDCA_CTL_ENTITY_0_FUNCTION_MANUFACTURER_ID
= 0x06,
52 SDCA_CTL_ENTITY_0_FUNCTION_ID
= 0x07,
53 SDCA_CTL_ENTITY_0_FUNCTION_VERSION
= 0x08,
54 SDCA_CTL_ENTITY_0_FUNCTION_EXTENSION_ID
= 0x09,
55 SDCA_CTL_ENTITY_0_FUNCTION_EXTENSION_VERSION
= 0x0A,
56 SDCA_CTL_ENTITY_0_FUNCTION_STATUS
= 0x10,
57 SDCA_CTL_ENTITY_0_FUNCTION_ACTION
= 0x11,
58 SDCA_CTL_ENTITY_0_MATCHING_GUID
= 0x12,
59 SDCA_CTL_ENTITY_0_DEVICE_MANUFACTURER_ID
= 0x2C,
60 SDCA_CTL_ENTITY_0_DEVICE_PART_ID
= 0x2D,
61 SDCA_CTL_ENTITY_0_DEVICE_VERSION
= 0x2E,
62 SDCA_CTL_ENTITY_0_DEVICE_SDCA_VERSION
= 0x2F,
64 /* Function Status Bits */
65 SDCA_CTL_ENTITY_0_DEVICE_NEWLY_ATTACHED
= BIT(0),
66 SDCA_CTL_ENTITY_0_INTS_DISABLED_ABNORMALLY
= BIT(1),
67 SDCA_CTL_ENTITY_0_STREAMING_STOPPED_ABNORMALLY
= BIT(2),
68 SDCA_CTL_ENTITY_0_FUNCTION_FAULT
= BIT(3),
69 SDCA_CTL_ENTITY_0_UMP_SEQUENCE_FAULT
= BIT(4),
70 SDCA_CTL_ENTITY_0_FUNCTION_NEEDS_INITIALIZATION
= BIT(5),
71 SDCA_CTL_ENTITY_0_FUNCTION_HAS_BEEN_RESET
= BIT(6),
72 SDCA_CTL_ENTITY_0_FUNCTION_BUSY
= BIT(7),