xref: /linux-6.15/include/sound/sdca_function.h (revision 629dd55c)
1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2 /*
3  * The MIPI SDCA specification is available for public downloads at
4  * https://www.mipi.org/mipi-sdca-v1-0-download
5  *
6  * Copyright(c) 2024 Intel Corporation
7  */
8 
9 #ifndef __SDCA_FUNCTION_H__
10 #define __SDCA_FUNCTION_H__
11 
12 #include <linux/bits.h>
13 
14 /**
15  * enum sdca_function_type - SDCA Function Type codes
16  * @SDCA_FUNCTION_TYPE_SMART_AMP: Amplifier with protection features.
17  * @SDCA_FUNCTION_TYPE_SIMPLE_AMP: Subset of SmartAmp.
18  * @SDCA_FUNCTION_TYPE_SMART_MIC: Smart microphone with acoustic triggers.
19  * @SDCA_FUNCTION_TYPE_SIMPLE_MIC: Subset of SmartMic.
20  * @SDCA_FUNCTION_TYPE_SPEAKER_MIC: Combination of SmartMic and SmartAmp.
21  * @SDCA_FUNCTION_TYPE_UAJ: 3.5mm Universal Audio jack.
22  * @SDCA_FUNCTION_TYPE_RJ: Retaskable jack.
23  * @SDCA_FUNCTION_TYPE_SIMPLE_JACK: Subset of UAJ.
24  * @SDCA_FUNCTION_TYPE_HID: Human Interface Device, for e.g. buttons.
25  * @SDCA_FUNCTION_TYPE_IMP_DEF: Implementation-defined function.
26  *
27  * SDCA Function Types from SDCA specification v1.0a Section 5.1.2
28  * all Function types not described are reserved.
29  *
30  * Note that SIMPLE_AMP, SIMPLE_MIC and SIMPLE_JACK Function Types
31  * are NOT defined in SDCA 1.0a, but they were defined in earlier
32  * drafts and are planned for 1.1.
33  */
34 enum sdca_function_type {
35 	SDCA_FUNCTION_TYPE_SMART_AMP			= 0x01,
36 	SDCA_FUNCTION_TYPE_SIMPLE_AMP			= 0x02,
37 	SDCA_FUNCTION_TYPE_SMART_MIC			= 0x03,
38 	SDCA_FUNCTION_TYPE_SIMPLE_MIC			= 0x04,
39 	SDCA_FUNCTION_TYPE_SPEAKER_MIC			= 0x05,
40 	SDCA_FUNCTION_TYPE_UAJ				= 0x06,
41 	SDCA_FUNCTION_TYPE_RJ				= 0x07,
42 	SDCA_FUNCTION_TYPE_SIMPLE_JACK			= 0x08,
43 	SDCA_FUNCTION_TYPE_HID				= 0x0A,
44 	SDCA_FUNCTION_TYPE_IMP_DEF			= 0x1F,
45 };
46 
47 /* Human-readable names used for kernel logs and Function device registration/bind */
48 #define	SDCA_FUNCTION_TYPE_SMART_AMP_NAME		"SmartAmp"
49 #define	SDCA_FUNCTION_TYPE_SIMPLE_AMP_NAME		"SimpleAmp"
50 #define	SDCA_FUNCTION_TYPE_SMART_MIC_NAME		"SmartMic"
51 #define	SDCA_FUNCTION_TYPE_SIMPLE_MIC_NAME		"SimpleMic"
52 #define	SDCA_FUNCTION_TYPE_SPEAKER_MIC_NAME		"SpeakerMic"
53 #define	SDCA_FUNCTION_TYPE_UAJ_NAME			"UAJ"
54 #define	SDCA_FUNCTION_TYPE_RJ_NAME			"RJ"
55 #define	SDCA_FUNCTION_TYPE_SIMPLE_NAME			"SimpleJack"
56 #define	SDCA_FUNCTION_TYPE_HID_NAME			"HID"
57 #define	SDCA_FUNCTION_TYPE_IMP_DEF_NAME			"ImplementationDefined"
58 
59 /**
60  * enum sdca_entity0_controls - SDCA Controls for Entity 0
61  *
62  * Control Selectors for Entity 0 from SDCA specification v1.0 Section
63  * 6.7.1.1.
64  */
65 enum sdca_entity0_controls {
66 	SDCA_CTL_ENTITY_0_COMMIT_GROUP_MASK		= 0x01,
67 	SDCA_CTL_ENTITY_0_FUNCTION_SDCA_VERSION		= 0x04,
68 	SDCA_CTL_ENTITY_0_FUNCTION_TYPE			= 0x05,
69 	SDCA_CTL_ENTITY_0_FUNCTION_MANUFACTURER_ID	= 0x06,
70 	SDCA_CTL_ENTITY_0_FUNCTION_ID			= 0x07,
71 	SDCA_CTL_ENTITY_0_FUNCTION_VERSION		= 0x08,
72 	SDCA_CTL_ENTITY_0_FUNCTION_EXTENSION_ID		= 0x09,
73 	SDCA_CTL_ENTITY_0_FUNCTION_EXTENSION_VERSION	= 0x0A,
74 	SDCA_CTL_ENTITY_0_FUNCTION_STATUS		= 0x10,
75 	SDCA_CTL_ENTITY_0_FUNCTION_ACTION		= 0x11,
76 	SDCA_CTL_ENTITY_0_MATCHING_GUID			= 0x12,
77 	SDCA_CTL_ENTITY_0_DEVICE_MANUFACTURER_ID	= 0x2C,
78 	SDCA_CTL_ENTITY_0_DEVICE_PART_ID		= 0x2D,
79 	SDCA_CTL_ENTITY_0_DEVICE_VERSION		= 0x2E,
80 	SDCA_CTL_ENTITY_0_DEVICE_SDCA_VERSION		= 0x2F,
81 
82 	/* Function Status Bits */
83 	SDCA_CTL_ENTITY_0_DEVICE_NEWLY_ATTACHED		= BIT(0),
84 	SDCA_CTL_ENTITY_0_INTS_DISABLED_ABNORMALLY	= BIT(1),
85 	SDCA_CTL_ENTITY_0_STREAMING_STOPPED_ABNORMALLY	= BIT(2),
86 	SDCA_CTL_ENTITY_0_FUNCTION_FAULT		= BIT(3),
87 	SDCA_CTL_ENTITY_0_UMP_SEQUENCE_FAULT		= BIT(4),
88 	SDCA_CTL_ENTITY_0_FUNCTION_NEEDS_INITIALIZATION	= BIT(5),
89 	SDCA_CTL_ENTITY_0_FUNCTION_HAS_BEEN_RESET	= BIT(6),
90 	SDCA_CTL_ENTITY_0_FUNCTION_BUSY			= BIT(7),
91 };
92 
93 #endif
94