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