xref: /linux/include/sound/sdca_function.h (revision 60675d4ca1ef0857e44eba5849b74a3a998d0c0f)
1*3a513da1SPierre-Louis Bossart /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2*3a513da1SPierre-Louis Bossart /*
3*3a513da1SPierre-Louis Bossart  * The MIPI SDCA specification is available for public downloads at
4*3a513da1SPierre-Louis Bossart  * https://www.mipi.org/mipi-sdca-v1-0-download
5*3a513da1SPierre-Louis Bossart  *
6*3a513da1SPierre-Louis Bossart  * Copyright(c) 2024 Intel Corporation
7*3a513da1SPierre-Louis Bossart  */
8*3a513da1SPierre-Louis Bossart 
9*3a513da1SPierre-Louis Bossart #ifndef __SDCA_FUNCTION_H__
10*3a513da1SPierre-Louis Bossart #define __SDCA_FUNCTION_H__
11*3a513da1SPierre-Louis Bossart 
12*3a513da1SPierre-Louis Bossart /*
13*3a513da1SPierre-Louis Bossart  * SDCA Function Types from SDCA specification v1.0a Section 5.1.2
14*3a513da1SPierre-Louis Bossart  * all Function types not described are reserved
15*3a513da1SPierre-Louis Bossart  * Note that SIMPLE_AMP, SIMPLE_MIC and SIMPLE_JACK Function Types
16*3a513da1SPierre-Louis Bossart  * are NOT defined in SDCA 1.0a, but they were defined in earlier
17*3a513da1SPierre-Louis Bossart  * drafts and are planned for 1.1.
18*3a513da1SPierre-Louis Bossart  */
19*3a513da1SPierre-Louis Bossart 
20*3a513da1SPierre-Louis Bossart enum sdca_function_type {
21*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_SMART_AMP	= 0x01,	/* Amplifier with protection features */
22*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_SIMPLE_AMP	= 0x02,	/* subset of SmartAmp */
23*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_SMART_MIC	= 0x03,	/* Smart microphone with acoustic triggers */
24*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_SIMPLE_MIC	= 0x04,	/* subset of SmartMic */
25*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_SPEAKER_MIC	= 0x05,	/* Combination of SmartMic and SmartAmp */
26*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_UAJ		= 0x06,	/* 3.5mm Universal Audio jack */
27*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_RJ		= 0x07,	/* Retaskable jack */
28*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_SIMPLE_JACK	= 0x08,	/* Subset of UAJ */
29*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_HID		= 0x0A,	/* Human Interface Device, for e.g. buttons */
30*3a513da1SPierre-Louis Bossart 	SDCA_FUNCTION_TYPE_IMP_DEF	= 0x1F,	/* Implementation-defined function */
31*3a513da1SPierre-Louis Bossart };
32*3a513da1SPierre-Louis Bossart 
33*3a513da1SPierre-Louis Bossart /* Human-readable names used for kernel logs and Function device registration/bind */
34*3a513da1SPierre-Louis Bossart #define	SDCA_FUNCTION_TYPE_SMART_AMP_NAME	"SmartAmp"
35*3a513da1SPierre-Louis Bossart #define	SDCA_FUNCTION_TYPE_SIMPLE_AMP_NAME	"SimpleAmp"
36*3a513da1SPierre-Louis Bossart #define	SDCA_FUNCTION_TYPE_SMART_MIC_NAME	"SmartMic"
37*3a513da1SPierre-Louis Bossart #define	SDCA_FUNCTION_TYPE_SIMPLE_MIC_NAME	"SimpleMic"
38*3a513da1SPierre-Louis Bossart #define	SDCA_FUNCTION_TYPE_SPEAKER_MIC_NAME	"SpeakerMic"
39*3a513da1SPierre-Louis Bossart #define	SDCA_FUNCTION_TYPE_UAJ_NAME		"UAJ"
40*3a513da1SPierre-Louis Bossart #define	SDCA_FUNCTION_TYPE_RJ_NAME		"RJ"
41*3a513da1SPierre-Louis Bossart #define	SDCA_FUNCTION_TYPE_SIMPLE_NAME		"SimpleJack"
42*3a513da1SPierre-Louis Bossart #define	SDCA_FUNCTION_TYPE_HID_NAME		"HID"
43*3a513da1SPierre-Louis Bossart 
44*3a513da1SPierre-Louis Bossart enum sdca_entity0_controls {
45*3a513da1SPierre-Louis Bossart 	SDCA_CONTROL_ENTITY_0_COMMIT_GROUP_MASK		= 0x01,
46*3a513da1SPierre-Louis Bossart 	SDCA_CONTROL_ENTITY_0_INTSTAT_CLEAR		= 0x02,
47*3a513da1SPierre-Louis Bossart 	SDCA_CONTROL_ENTITY_0_INT_ENABLE		= 0x03,
48*3a513da1SPierre-Louis Bossart 	SDCA_CONTROL_ENTITY_0_FUNCTION_SDCA_VERSION	= 0x04,
49*3a513da1SPierre-Louis Bossart 	SDCA_CONTROL_ENTITY_0_FUNCTION_TOPOLOGY		= 0x05,
50*3a513da1SPierre-Louis Bossart 	SDCA_CONTROL_ENTITY_0_FUNCTION_MANUFACTURER_ID	= 0x06,
51*3a513da1SPierre-Louis Bossart 	SDCA_CONTROL_ENTITY_0_FUNCTION_ID		= 0x07,
52*3a513da1SPierre-Louis Bossart 	SDCA_CONTROL_ENTITY_0_FUNCTION_VERSION		= 0x08
53*3a513da1SPierre-Louis Bossart };
54*3a513da1SPierre-Louis Bossart 
55*3a513da1SPierre-Louis Bossart #endif
56