1 /* SPDX-License-Identifier: (GPL-2.0-only OR B 1 2 /* 3 * This file is provided under a dual BSD/GPLv 4 * redistributing this file, you may do so und 5 * 6 * Copyright(c) 2018 Intel Corporation 7 */ 8 9 #ifndef __INCLUDE_SOUND_SOF_CONTROL_H__ 10 #define __INCLUDE_SOUND_SOF_CONTROL_H__ 11 12 #include <uapi/sound/sof/header.h> 13 #include <sound/sof/header.h> 14 15 /* 16 * Component Mixers and Controls 17 */ 18 19 /* channel positions - uses same values as ALS 20 enum sof_ipc_chmap { 21 SOF_CHMAP_UNKNOWN = 0, 22 SOF_CHMAP_NA, /**< N/A, sile 23 SOF_CHMAP_MONO, /**< mono stre 24 SOF_CHMAP_FL, /**< front lef 25 SOF_CHMAP_FR, /**< front rig 26 SOF_CHMAP_RL, /**< rear left 27 SOF_CHMAP_RR, /**< rear righ 28 SOF_CHMAP_FC, /**< front cen 29 SOF_CHMAP_LFE, /**< LFE */ 30 SOF_CHMAP_SL, /**< side left 31 SOF_CHMAP_SR, /**< side righ 32 SOF_CHMAP_RC, /**< rear cent 33 SOF_CHMAP_FLC, /**< front lef 34 SOF_CHMAP_FRC, /**< front rig 35 SOF_CHMAP_RLC, /**< rear left 36 SOF_CHMAP_RRC, /**< rear righ 37 SOF_CHMAP_FLW, /**< front lef 38 SOF_CHMAP_FRW, /**< front rig 39 SOF_CHMAP_FLH, /**< front lef 40 SOF_CHMAP_FCH, /**< front cen 41 SOF_CHMAP_FRH, /**< front rig 42 SOF_CHMAP_TC, /**< top centr 43 SOF_CHMAP_TFL, /**< top front 44 SOF_CHMAP_TFR, /**< top front 45 SOF_CHMAP_TFC, /**< top front 46 SOF_CHMAP_TRL, /**< top rear 47 SOF_CHMAP_TRR, /**< top rear 48 SOF_CHMAP_TRC, /**< top rear 49 SOF_CHMAP_TFLC, /**< top front 50 SOF_CHMAP_TFRC, /**< top front 51 SOF_CHMAP_TSL, /**< top side 52 SOF_CHMAP_TSR, /**< top side 53 SOF_CHMAP_LLFE, /**< left LFE 54 SOF_CHMAP_RLFE, /**< right LFE 55 SOF_CHMAP_BC, /**< bottom ce 56 SOF_CHMAP_BLC, /**< bottom le 57 SOF_CHMAP_BRC, /**< bottom ri 58 SOF_CHMAP_LAST = SOF_CHMAP_BRC, 59 }; 60 61 /* control data type and direction */ 62 enum sof_ipc_ctrl_type { 63 /* per channel data - uses struct sof 64 SOF_CTRL_TYPE_VALUE_CHAN_GET = 0, 65 SOF_CTRL_TYPE_VALUE_CHAN_SET, 66 /* component data - uses struct sof_ip 67 SOF_CTRL_TYPE_VALUE_COMP_GET, 68 SOF_CTRL_TYPE_VALUE_COMP_SET, 69 /* bespoke data - uses struct sof_abi_ 70 SOF_CTRL_TYPE_DATA_GET, 71 SOF_CTRL_TYPE_DATA_SET, 72 }; 73 74 /* control command type */ 75 enum sof_ipc_ctrl_cmd { 76 SOF_CTRL_CMD_VOLUME = 0, /**< maps to 77 SOF_CTRL_CMD_ENUM, /**< maps to A 78 SOF_CTRL_CMD_SWITCH, /**< maps to A 79 SOF_CTRL_CMD_BINARY, /**< maps to A 80 }; 81 82 /* generic channel mapped value data */ 83 struct sof_ipc_ctrl_value_chan { 84 uint32_t channel; /**< channel m 85 uint32_t value; 86 } __packed; 87 88 /* generic component mapped value data */ 89 struct sof_ipc_ctrl_value_comp { 90 uint32_t index; /**< component source/ 91 union { 92 uint32_t uvalue; 93 int32_t svalue; 94 }; 95 } __packed; 96 97 /* generic control data */ 98 struct sof_ipc_ctrl_data { 99 struct sof_ipc_reply rhdr; 100 uint32_t comp_id; 101 102 /* control access and data type */ 103 uint32_t type; /**< enum sof_ 104 uint32_t cmd; /**< enum sof_ 105 uint32_t index; /**< control i 106 107 /* control data - can either be append 108 struct sof_ipc_host_buffer buffer; 109 uint32_t num_elems; /**< in array 110 uint32_t elems_remaining; /**< e 111 112 uint32_t msg_index; /**< for large 113 114 /* reserved for future use */ 115 uint32_t reserved[6]; 116 117 /* control data - add new types if nee 118 union { 119 /* channel values can be used 120 DECLARE_FLEX_ARRAY(struct sof_ 121 /* component values used by ro 122 DECLARE_FLEX_ARRAY(struct sof_ 123 /* data can be used by binary 124 DECLARE_FLEX_ARRAY(struct sof_ 125 }; 126 } __packed; 127 128 /** Event type */ 129 enum sof_ipc_ctrl_event_type { 130 SOF_CTRL_EVENT_GENERIC = 0, /**< g 131 SOF_CTRL_EVENT_GENERIC_METADATA, 132 SOF_CTRL_EVENT_KD, /**< keyword d 133 SOF_CTRL_EVENT_VAD, /**< voice act 134 }; 135 136 /** 137 * Generic notification data. 138 */ 139 struct sof_ipc_comp_event { 140 struct sof_ipc_reply rhdr; 141 uint16_t src_comp_type; /**< COMP_TYPE 142 uint32_t src_comp_id; /**< source co 143 uint32_t event_type; /**< event typ 144 uint32_t num_elems; /**< in array 145 146 /* reserved for future use */ 147 uint32_t reserved[8]; 148 149 /* control data - add new types if nee 150 union { 151 /* data can be used by binary 152 struct sof_abi_hdr data[0]; 153 /* event specific values */ 154 uint32_t event_value; 155 }; 156 } __packed; 157 158 #endif 159
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.