1 /*- 2 * SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3 * 4 * Copyright (c) 2006 Stephane E. Potvin <sepotvin@videotron.ca> 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 17 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 20 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26 * SUCH DAMAGE. 27 * 28 * $FreeBSD$ 29 */ 30 31 #ifndef _HDA_REG_H_ 32 #define _HDA_REG_H_ 33 34 /**************************************************************************** 35 * HDA Device Verbs 36 ****************************************************************************/ 37 38 /* HDA Command */ 39 #define HDA_CMD_VERB_MASK 0x000fffff 40 #define HDA_CMD_VERB_SHIFT 0 41 #define HDA_CMD_NID_MASK 0x0ff00000 42 #define HDA_CMD_NID_SHIFT 20 43 #define HDA_CMD_CAD_MASK 0xf0000000 44 #define HDA_CMD_CAD_SHIFT 28 45 46 #define HDA_CMD_VERB_4BIT_SHIFT 16 47 #define HDA_CMD_VERB_12BIT_SHIFT 8 48 49 #define HDA_CMD_VERB_4BIT(verb, payload) \ 50 (((verb) << HDA_CMD_VERB_4BIT_SHIFT) | (payload)) 51 #define HDA_CMD_4BIT(cad, nid, verb, payload) \ 52 (((cad) << HDA_CMD_CAD_SHIFT) | \ 53 ((nid) << HDA_CMD_NID_SHIFT) | \ 54 (HDA_CMD_VERB_4BIT((verb), (payload)))) 55 56 #define HDA_CMD_VERB_12BIT(verb, payload) \ 57 (((verb) << HDA_CMD_VERB_12BIT_SHIFT) | (payload)) 58 #define HDA_CMD_12BIT(cad, nid, verb, payload) \ 59 (((cad) << HDA_CMD_CAD_SHIFT) | \ 60 ((nid) << HDA_CMD_NID_SHIFT) | \ 61 (HDA_CMD_VERB_12BIT((verb), (payload)))) 62 63 /* Get Parameter */ 64 #define HDA_CMD_VERB_GET_PARAMETER 0xf00 65 66 #define HDA_CMD_GET_PARAMETER(cad, nid, payload) \ 67 (HDA_CMD_12BIT((cad), (nid), \ 68 HDA_CMD_VERB_GET_PARAMETER, (payload))) 69 70 /* Connection Select Control */ 71 #define HDA_CMD_VERB_GET_CONN_SELECT_CONTROL 0xf01 72 #define HDA_CMD_VERB_SET_CONN_SELECT_CONTROL 0x701 73 74 #define HDA_CMD_GET_CONN_SELECT_CONTROL(cad, nid) \ 75 (HDA_CMD_12BIT((cad), (nid), \ 76 HDA_CMD_VERB_GET_CONN_SELECT_CONTROL, 0x0)) 77 #define HDA_CMD_SET_CONNECTION_SELECT_CONTROL(cad, nid, payload) \ 78 (HDA_CMD_12BIT((cad), (nid), \ 79 HDA_CMD_VERB_SET_CONN_SELECT_CONTROL, (payload))) 80 81 /* Connection List Entry */ 82 #define HDA_CMD_VERB_GET_CONN_LIST_ENTRY 0xf02 83 84 #define HDA_CMD_GET_CONN_LIST_ENTRY(cad, nid, payload) \ 85 (HDA_CMD_12BIT((cad), (nid), \ 86 HDA_CMD_VERB_GET_CONN_LIST_ENTRY, (payload))) 87 88 #define HDA_CMD_GET_CONN_LIST_ENTRY_SIZE_SHORT 1 89 #define HDA_CMD_GET_CONN_LIST_ENTRY_SIZE_LONG 2 90 91 /* Processing State */ 92 #define HDA_CMD_VERB_GET_PROCESSING_STATE 0xf03 93 #define HDA_CMD_VERB_SET_PROCESSING_STATE 0x703 94 95 #define HDA_CMD_GET_PROCESSING_STATE(cad, nid) \ 96 (HDA_CMD_12BIT((cad), (nid), \ 97 HDA_CMD_VERB_GET_PROCESSING_STATE, 0x0)) 98 #define HDA_CMD_SET_PROCESSING_STATE(cad, nid, payload) \ 99 (HDA_CMD_12BIT((cad), (nid), \ 100 HDA_CMD_VERB_SET_PROCESSING_STATE, (payload))) 101 102 #define HDA_CMD_GET_PROCESSING_STATE_STATE_OFF 0x00 103 #define HDA_CMD_GET_PROCESSING_STATE_STATE_ON 0x01 104 #define HDA_CMD_GET_PROCESSING_STATE_STATE_BENIGN 0x02 105 106 /* Coefficient Index */ 107 #define HDA_CMD_VERB_GET_COEFF_INDEX 0xd 108 #define HDA_CMD_VERB_SET_COEFF_INDEX 0x5 109 110 #define HDA_CMD_GET_COEFF_INDEX(cad, nid) \ 111 (HDA_CMD_4BIT((cad), (nid), \ 112 HDA_CMD_VERB_GET_COEFF_INDEX, 0x0)) 113 #define HDA_CMD_SET_COEFF_INDEX(cad, nid, payload) \ 114 (HDA_CMD_4BIT((cad), (nid), \ 115 HDA_CMD_VERB_SET_COEFF_INDEX, (payload))) 116 117 /* Processing Coefficient */ 118 #define HDA_CMD_VERB_GET_PROCESSING_COEFF 0xc 119 #define HDA_CMD_VERB_SET_PROCESSING_COEFF 0x4 120 121 #define HDA_CMD_GET_PROCESSING_COEFF(cad, nid) \ 122 (HDA_CMD_4BIT((cad), (nid), \ 123 HDA_CMD_VERB_GET_PROCESSING_COEFF, 0x0)) 124 #define HDA_CMD_SET_PROCESSING_COEFF(cad, nid, payload) \ 125 (HDA_CMD_4BIT((cad), (nid), \ 126 HDA_CMD_VERB_SET_PROCESSING_COEFF, (payload))) 127 128 /* Amplifier Gain/Mute */ 129 #define HDA_CMD_VERB_GET_AMP_GAIN_MUTE 0xb 130 #define HDA_CMD_VERB_SET_AMP_GAIN_MUTE 0x3 131 132 #define HDA_CMD_GET_AMP_GAIN_MUTE(cad, nid, payload) \ 133 (HDA_CMD_4BIT((cad), (nid), \ 134 HDA_CMD_VERB_GET_AMP_GAIN_MUTE, (payload))) 135 #define HDA_CMD_SET_AMP_GAIN_MUTE(cad, nid, payload) \ 136 (HDA_CMD_4BIT((cad), (nid), \ 137 HDA_CMD_VERB_SET_AMP_GAIN_MUTE, (payload))) 138 139 #define HDA_CMD_GET_AMP_GAIN_MUTE_INPUT 0x0000 140 #define HDA_CMD_GET_AMP_GAIN_MUTE_OUTPUT 0x8000 141 #define HDA_CMD_GET_AMP_GAIN_MUTE_RIGHT 0x0000 142 #define HDA_CMD_GET_AMP_GAIN_MUTE_LEFT 0x2000 143 144 #define HDA_CMD_GET_AMP_GAIN_MUTE_MUTE_MASK 0x00000008 145 #define HDA_CMD_GET_AMP_GAIN_MUTE_MUTE_SHIFT 7 146 #define HDA_CMD_GET_AMP_GAIN_MUTE_GAIN_MASK 0x00000007 147 #define HDA_CMD_GET_AMP_GAIN_MUTE_GAIN_SHIFT 0 148 149 #define HDA_CMD_GET_AMP_GAIN_MUTE_MUTE(rsp) \ 150 (((rsp) & HDA_CMD_GET_AMP_GAIN_MUTE_MUTE_MASK) >> \ 151 HDA_CMD_GET_AMP_GAIN_MUTE_MUTE_SHIFT) 152 #define HDA_CMD_GET_AMP_GAIN_MUTE_GAIN(rsp) \ 153 (((rsp) & HDA_CMD_GET_AMP_GAIN_MUTE_GAIN_MASK) >> \ 154 HDA_CMD_GET_AMP_GAIN_MUTE_GAIN_SHIFT) 155 156 #define HDA_CMD_SET_AMP_GAIN_MUTE_OUTPUT 0x8000 157 #define HDA_CMD_SET_AMP_GAIN_MUTE_INPUT 0x4000 158 #define HDA_CMD_SET_AMP_GAIN_MUTE_LEFT 0x2000 159 #define HDA_CMD_SET_AMP_GAIN_MUTE_RIGHT 0x1000 160 #define HDA_CMD_SET_AMP_GAIN_MUTE_INDEX_MASK 0x0f00 161 #define HDA_CMD_SET_AMP_GAIN_MUTE_INDEX_SHIFT 8 162 #define HDA_CMD_SET_AMP_GAIN_MUTE_MUTE 0x0080 163 #define HDA_CMD_SET_AMP_GAIN_MUTE_GAIN_MASK 0x0007 164 #define HDA_CMD_SET_AMP_GAIN_MUTE_GAIN_SHIFT 0 165 166 #define HDA_CMD_SET_AMP_GAIN_MUTE_INDEX(index) \ 167 (((index) << HDA_CMD_SET_AMP_GAIN_MUTE_INDEX_SHIFT) & \ 168 HDA_CMD_SET_AMP_GAIN_MUTE_INDEX_MASK) 169 #define HDA_CMD_SET_AMP_GAIN_MUTE_GAIN(index) \ 170 (((index) << HDA_CMD_SET_AMP_GAIN_MUTE_GAIN_SHIFT) & \ 171 HDA_CMD_SET_AMP_GAIN_MUTE_GAIN_MASK) 172 173 /* Converter format */ 174 #define HDA_CMD_VERB_GET_CONV_FMT 0xa 175 #define HDA_CMD_VERB_SET_CONV_FMT 0x2 176 177 #define HDA_CMD_GET_CONV_FMT(cad, nid) \ 178 (HDA_CMD_4BIT((cad), (nid), \ 179 HDA_CMD_VERB_GET_CONV_FMT, 0x0)) 180 #define HDA_CMD_SET_CONV_FMT(cad, nid, payload) \ 181 (HDA_CMD_4BIT((cad), (nid), \ 182 HDA_CMD_VERB_SET_CONV_FMT, (payload))) 183 184 /* Digital Converter Control */ 185 #define HDA_CMD_VERB_GET_DIGITAL_CONV_FMT1 0xf0d 186 #define HDA_CMD_VERB_GET_DIGITAL_CONV_FMT2 0xf0e 187 #define HDA_CMD_VERB_SET_DIGITAL_CONV_FMT1 0x70d 188 #define HDA_CMD_VERB_SET_DIGITAL_CONV_FMT2 0x70e 189 190 #define HDA_CMD_GET_DIGITAL_CONV_FMT(cad, nid) \ 191 (HDA_CMD_12BIT((cad), (nid), \ 192 HDA_CMD_VERB_GET_DIGITAL_CONV_FMT1, 0x0)) 193 #define HDA_CMD_SET_DIGITAL_CONV_FMT1(cad, nid, payload) \ 194 (HDA_CMD_12BIT((cad), (nid), \ 195 HDA_CMD_VERB_SET_DIGITAL_CONV_FMT1, (payload))) 196 #define HDA_CMD_SET_DIGITAL_CONV_FMT2(cad, nid, payload) \ 197 (HDA_CMD_12BIT((cad), (nid), \ 198 HDA_CMD_VERB_SET_DIGITAL_CONV_FMT2, (payload))) 199 200 #define HDA_CMD_GET_DIGITAL_CONV_FMT_CC_MASK 0x7f00 201 #define HDA_CMD_GET_DIGITAL_CONV_FMT_CC_SHIFT 8 202 #define HDA_CMD_GET_DIGITAL_CONV_FMT_L_MASK 0x0080 203 #define HDA_CMD_GET_DIGITAL_CONV_FMT_L_SHIFT 7 204 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRO_MASK 0x0040 205 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRO_SHIFT 6 206 #define HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO_MASK 0x0020 207 #define HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO_SHIFT 5 208 #define HDA_CMD_GET_DIGITAL_CONV_FMT_COPY_MASK 0x0010 209 #define HDA_CMD_GET_DIGITAL_CONV_FMT_COPY_SHIFT 4 210 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRE_MASK 0x0008 211 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRE_SHIFT 3 212 #define HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG_MASK 0x0004 213 #define HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG_SHIFT 2 214 #define HDA_CMD_GET_DIGITAL_CONV_FMT_V_MASK 0x0002 215 #define HDA_CMD_GET_DIGITAL_CONV_FMT_V_SHIFT 1 216 #define HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN_MASK 0x0001 217 #define HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN_SHIFT 0 218 219 #define HDA_CMD_GET_DIGITAL_CONV_FMT_CC(rsp) \ 220 (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_CC_MASK) >> \ 221 HDA_CMD_GET_DIGITAL_CONV_FMT_CC_SHIFT) 222 #define HDA_CMD_GET_DIGITAL_CONV_FMT_L(rsp) \ 223 (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_L_MASK) >> \ 224 HDA_CMD_GET_DIGITAL_CONV_FMT_L_SHIFT) 225 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRO(rsp) \ 226 (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_PRO_MASK) >> \ 227 HDA_CMD_GET_DIGITAL_CONV_FMT_PRO_SHIFT) 228 #define HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO(rsp) \ 229 (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO_MASK) >> \ 230 HDA_CMD_GET_DIGITAL_CONV_FMT_NAUDIO_SHIFT) 231 #define HDA_CMD_GET_DIGITAL_CONV_FMT_COPY(rsp) \ 232 (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_COPY_MASK) >> \ 233 HDA_CMD_GET_DIGITAL_CONV_FMT_COPY_SHIFT) 234 #define HDA_CMD_GET_DIGITAL_CONV_FMT_PRE(rsp) \ 235 (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_PRE_MASK) >> \ 236 HDA_CMD_GET_DIGITAL_CONV_FMT_PRE_SHIFT) 237 #define HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG(rsp) \ 238 (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG_MASK) >> \ 239 HDA_CMD_GET_DIGITAL_CONV_FMT_VCFG_SHIFT) 240 #define HDA_CMD_GET_DIGITAL_CONV_FMT_V(rsp) \ 241 (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_V_MASK) >> \ 242 HDA_CMD_GET_DIGITAL_CONV_FMT_V_SHIFT) 243 #define HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN(rsp) \ 244 (((rsp) & HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN_MASK) >> \ 245 HDA_CMD_GET_DIGITAL_CONV_FMT_DIGEN_SHIFT) 246 247 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_L 0x80 248 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_PRO 0x40 249 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_NAUDIO 0x20 250 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_COPY 0x10 251 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_PRE 0x08 252 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_VCFG 0x04 253 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_V 0x02 254 #define HDA_CMD_SET_DIGITAL_CONV_FMT1_DIGEN 0x01 255 256 /* Power State */ 257 #define HDA_CMD_VERB_GET_POWER_STATE 0xf05 258 #define HDA_CMD_VERB_SET_POWER_STATE 0x705 259 260 #define HDA_CMD_GET_POWER_STATE(cad, nid) \ 261 (HDA_CMD_12BIT((cad), (nid), \ 262 HDA_CMD_VERB_GET_POWER_STATE, 0x0)) 263 #define HDA_CMD_SET_POWER_STATE(cad, nid, payload) \ 264 (HDA_CMD_12BIT((cad), (nid), \ 265 HDA_CMD_VERB_SET_POWER_STATE, (payload))) 266 267 #define HDA_CMD_POWER_STATE_D0 0x00 268 #define HDA_CMD_POWER_STATE_D1 0x01 269 #define HDA_CMD_POWER_STATE_D2 0x02 270 #define HDA_CMD_POWER_STATE_D3 0x03 271 272 #define HDA_CMD_POWER_STATE_ACT_MASK 0x000000f0 273 #define HDA_CMD_POWER_STATE_ACT_SHIFT 4 274 #define HDA_CMD_POWER_STATE_SET_MASK 0x0000000f 275 #define HDA_CMD_POWER_STATE_SET_SHIFT 0 276 277 #define HDA_CMD_GET_POWER_STATE_ACT(rsp) \ 278 (((rsp) & HDA_CMD_POWER_STATE_ACT_MASK) >> \ 279 HDA_CMD_POWER_STATE_ACT_SHIFT) 280 #define HDA_CMD_GET_POWER_STATE_SET(rsp) \ 281 (((rsp) & HDA_CMD_POWER_STATE_SET_MASK) >> \ 282 HDA_CMD_POWER_STATE_SET_SHIFT) 283 284 #define HDA_CMD_SET_POWER_STATE_ACT(ps) \ 285 (((ps) << HDA_CMD_POWER_STATE_ACT_SHIFT) & \ 286 HDA_CMD_POWER_STATE_ACT_MASK) 287 #define HDA_CMD_SET_POWER_STATE_SET(ps) \ 288 (((ps) << HDA_CMD_POWER_STATE_SET_SHIFT) & \ 289 HDA_CMD_POWER_STATE_ACT_MASK) 290 291 /* Converter Stream, Channel */ 292 #define HDA_CMD_VERB_GET_CONV_STREAM_CHAN 0xf06 293 #define HDA_CMD_VERB_SET_CONV_STREAM_CHAN 0x706 294 295 #define HDA_CMD_GET_CONV_STREAM_CHAN(cad, nid) \ 296 (HDA_CMD_12BIT((cad), (nid), \ 297 HDA_CMD_VERB_GET_CONV_STREAM_CHAN, 0x0)) 298 #define HDA_CMD_SET_CONV_STREAM_CHAN(cad, nid, payload) \ 299 (HDA_CMD_12BIT((cad), (nid), \ 300 HDA_CMD_VERB_SET_CONV_STREAM_CHAN, (payload))) 301 302 #define HDA_CMD_CONV_STREAM_CHAN_STREAM_MASK 0x000000f0 303 #define HDA_CMD_CONV_STREAM_CHAN_STREAM_SHIFT 4 304 #define HDA_CMD_CONV_STREAM_CHAN_CHAN_MASK 0x0000000f 305 #define HDA_CMD_CONV_STREAM_CHAN_CHAN_SHIFT 0 306 307 #define HDA_CMD_GET_CONV_STREAM_CHAN_STREAM(rsp) \ 308 (((rsp) & HDA_CMD_CONV_STREAM_CHAN_STREAM_MASK) >> \ 309 HDA_CMD_CONV_STREAM_CHAN_STREAM_SHIFT) 310 #define HDA_CMD_GET_CONV_STREAM_CHAN_CHAN(rsp) \ 311 (((rsp) & HDA_CMD_CONV_STREAM_CHAN_CHAN_MASK) >> \ 312 HDA_CMD_CONV_STREAM_CHAN_CHAN_SHIFT) 313 314 #define HDA_CMD_SET_CONV_STREAM_CHAN_STREAM(param) \ 315 (((param) << HDA_CMD_CONV_STREAM_CHAN_STREAM_SHIFT) & \ 316 HDA_CMD_CONV_STREAM_CHAN_STREAM_MASK) 317 #define HDA_CMD_SET_CONV_STREAM_CHAN_CHAN(param) \ 318 (((param) << HDA_CMD_CONV_STREAM_CHAN_CHAN_SHIFT) & \ 319 HDA_CMD_CONV_STREAM_CHAN_CHAN_MASK) 320 321 /* Input Converter SDI Select */ 322 #define HDA_CMD_VERB_GET_INPUT_CONVERTER_SDI_SELECT 0xf04 323 #define HDA_CMD_VERB_SET_INPUT_CONVERTER_SDI_SELECT 0x704 324 325 #define HDA_CMD_GET_INPUT_CONVERTER_SDI_SELECT(cad, nid) \ 326 (HDA_CMD_12BIT((cad), (nid), \ 327 HDA_CMD_VERB_GET_INPUT_CONVERTER_SDI_SELECT, 0x0)) 328 #define HDA_CMD_SET_INPUT_CONVERTER_SDI_SELECT(cad, nid, payload) \ 329 (HDA_CMD_12BIT((cad), (nid), \ 330 HDA_CMD_VERB_SET_INPUT_CONVERTER_SDI_SELECT, (payload))) 331 332 /* Pin Widget Control */ 333 #define HDA_CMD_VERB_GET_PIN_WIDGET_CTRL 0xf07 334 #define HDA_CMD_VERB_SET_PIN_WIDGET_CTRL 0x707 335 336 #define HDA_CMD_GET_PIN_WIDGET_CTRL(cad, nid) \ 337 (HDA_CMD_12BIT((cad), (nid), \ 338 HDA_CMD_VERB_GET_PIN_WIDGET_CTRL, 0x0)) 339 #define HDA_CMD_SET_PIN_WIDGET_CTRL(cad, nid, payload) \ 340 (HDA_CMD_12BIT((cad), (nid), \ 341 HDA_CMD_VERB_SET_PIN_WIDGET_CTRL, (payload))) 342 343 #define HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE_MASK 0x00000080 344 #define HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE_SHIFT 7 345 #define HDA_CMD_GET_PIN_WIDGET_CTRL_OUT_ENABLE_MASK 0x00000040 346 #define HDA_CMD_GET_PIN_WIDGET_CTRL_OUT_ENABLE_SHIFT 6 347 #define HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE_MASK 0x00000020 348 #define HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE_SHIFT 5 349 #define HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK 0x00000007 350 #define HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE_SHIFT 0 351 352 #define HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE(rsp) \ 353 (((rsp) & HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE_MASK) >> \ 354 HDA_CMD_GET_PIN_WIDGET_CTRL_HPHN_ENABLE_SHIFT) 355 #define HDA_CMD_GET_PIN_WIDGET_CTRL_OUT_ENABLE(rsp) \ 356 (((rsp) & HDA_CMD_GET_PIN_WIDGET_CTRL_OUT_ENABLE_MASK) >> \ 357 HDA_GET_CMD_PIN_WIDGET_CTRL_OUT_ENABLE_SHIFT) 358 #define HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE(rsp) \ 359 (((rsp) & HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE_MASK) >> \ 360 HDA_CMD_GET_PIN_WIDGET_CTRL_IN_ENABLE_SHIFT) 361 #define HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE(rsp) \ 362 (((rsp) & HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK) >> \ 363 HDA_CMD_GET_PIN_WIDGET_CTRL_VREF_ENABLE_SHIFT) 364 365 #define HDA_CMD_SET_PIN_WIDGET_CTRL_HPHN_ENABLE 0x80 366 #define HDA_CMD_SET_PIN_WIDGET_CTRL_OUT_ENABLE 0x40 367 #define HDA_CMD_SET_PIN_WIDGET_CTRL_IN_ENABLE 0x20 368 #define HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK 0x07 369 #define HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_SHIFT 0 370 371 #define HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE(param) \ 372 (((param) << HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_SHIFT) & \ 373 HDA_CMD_SET_PIN_WIDGET_CTRL_VREF_ENABLE_MASK) 374 375 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_HIZ 0 376 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_50 1 377 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_GROUND 2 378 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_80 4 379 #define HDA_CMD_PIN_WIDGET_CTRL_VREF_ENABLE_100 5 380 381 /* Unsolicited Response */ 382 #define HDA_CMD_VERB_GET_UNSOLICITED_RESPONSE 0xf08 383 #define HDA_CMD_VERB_SET_UNSOLICITED_RESPONSE 0x708 384 385 #define HDA_CMD_GET_UNSOLICITED_RESPONSE(cad, nid) \ 386 (HDA_CMD_12BIT((cad), (nid), \ 387 HDA_CMD_VERB_GET_UNSOLICITED_RESPONSE, 0x0)) 388 #define HDA_CMD_SET_UNSOLICITED_RESPONSE(cad, nid, payload) \ 389 (HDA_CMD_12BIT((cad), (nid), \ 390 HDA_CMD_VERB_SET_UNSOLICITED_RESPONSE, (payload))) 391 392 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE_MASK 0x00000080 393 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE_SHIFT 7 394 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG_MASK 0x0000001f 395 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG_SHIFT 0 396 397 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE(rsp) \ 398 (((rsp) & HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE_MASK) >> \ 399 HDA_CMD_GET_UNSOLICITED_RESPONSE_ENABLE_SHIFT) 400 #define HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG(rsp) \ 401 (((rsp) & HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG_MASK) >> \ 402 HDA_CMD_GET_UNSOLICITED_RESPONSE_TAG_SHIFT) 403 404 #define HDA_CMD_SET_UNSOLICITED_RESPONSE_ENABLE 0x80 405 #define HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG_MASK 0x3f 406 #define HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG_SHIFT 0 407 408 #define HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG(param) \ 409 (((param) << HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG_SHIFT) & \ 410 HDA_CMD_SET_UNSOLICITED_RESPONSE_TAG_MASK) 411 412 /* Pin Sense */ 413 #define HDA_CMD_VERB_GET_PIN_SENSE 0xf09 414 #define HDA_CMD_VERB_SET_PIN_SENSE 0x709 415 416 #define HDA_CMD_GET_PIN_SENSE(cad, nid) \ 417 (HDA_CMD_12BIT((cad), (nid), \ 418 HDA_CMD_VERB_GET_PIN_SENSE, 0x0)) 419 #define HDA_CMD_SET_PIN_SENSE(cad, nid, payload) \ 420 (HDA_CMD_12BIT((cad), (nid), \ 421 HDA_CMD_VERB_SET_PIN_SENSE, (payload))) 422 423 #define HDA_CMD_GET_PIN_SENSE_PRESENCE_DETECT 0x80000000 424 #define HDA_CMD_GET_PIN_SENSE_ELD_VALID 0x40000000 425 #define HDA_CMD_GET_PIN_SENSE_IMP_SENSE_MASK 0x7fffffff 426 #define HDA_CMD_GET_PIN_SENSE_IMP_SENSE_SHIFT 0 427 428 #define HDA_CMD_GET_PIN_SENSE_IMP_SENSE(rsp) \ 429 (((rsp) & HDA_CMD_GET_PIN_SENSE_IMP_SENSE_MASK) >> \ 430 HDA_CMD_GET_PIN_SENSE_IMP_SENSE_SHIFT) 431 432 #define HDA_CMD_GET_PIN_SENSE_IMP_SENSE_INVALID 0x7fffffff 433 434 #define HDA_CMD_SET_PIN_SENSE_LEFT_CHANNEL 0x00 435 #define HDA_CMD_SET_PIN_SENSE_RIGHT_CHANNEL 0x01 436 437 /* EAPD/BTL Enable */ 438 #define HDA_CMD_VERB_GET_EAPD_BTL_ENABLE 0xf0c 439 #define HDA_CMD_VERB_SET_EAPD_BTL_ENABLE 0x70c 440 441 #define HDA_CMD_GET_EAPD_BTL_ENABLE(cad, nid) \ 442 (HDA_CMD_12BIT((cad), (nid), \ 443 HDA_CMD_VERB_GET_EAPD_BTL_ENABLE, 0x0)) 444 #define HDA_CMD_SET_EAPD_BTL_ENABLE(cad, nid, payload) \ 445 (HDA_CMD_12BIT((cad), (nid), \ 446 HDA_CMD_VERB_SET_EAPD_BTL_ENABLE, (payload))) 447 448 #define HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP_MASK 0x00000004 449 #define HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP_SHIFT 2 450 #define HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD_MASK 0x00000002 451 #define HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD_SHIFT 1 452 #define HDA_CMD_GET_EAPD_BTL_ENABLE_BTL_MASK 0x00000001 453 #define HDA_CMD_GET_EAPD_BTL_ENABLE_BTL_SHIFT 0 454 455 #define HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP(rsp) \ 456 (((rsp) & HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP_MASK) >> \ 457 HDA_CMD_GET_EAPD_BTL_ENABLE_LR_SWAP_SHIFT) 458 #define HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD(rsp) \ 459 (((rsp) & HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD_MASK) >> \ 460 HDA_CMD_GET_EAPD_BTL_ENABLE_EAPD_SHIFT) 461 #define HDA_CMD_GET_EAPD_BTL_ENABLE_BTL(rsp) \ 462 (((rsp) & HDA_CMD_GET_EAPD_BTL_ENABLE_BTL_MASK) >> \ 463 HDA_CMD_GET_EAPD_BTL_ENABLE_BTL_SHIFT) 464 465 #define HDA_CMD_SET_EAPD_BTL_ENABLE_LR_SWAP 0x04 466 #define HDA_CMD_SET_EAPD_BTL_ENABLE_EAPD 0x02 467 #define HDA_CMD_SET_EAPD_BTL_ENABLE_BTL 0x01 468 469 /* GPI Data */ 470 #define HDA_CMD_VERB_GET_GPI_DATA 0xf10 471 #define HDA_CMD_VERB_SET_GPI_DATA 0x710 472 473 #define HDA_CMD_GET_GPI_DATA(cad, nid) \ 474 (HDA_CMD_12BIT((cad), (nid), \ 475 HDA_CMD_VERB_GET_GPI_DATA, 0x0)) 476 #define HDA_CMD_SET_GPI_DATA(cad, nid) \ 477 (HDA_CMD_12BIT((cad), (nid), \ 478 HDA_CMD_VERB_SET_GPI_DATA, (payload))) 479 480 /* GPI Wake Enable Mask */ 481 #define HDA_CMD_VERB_GET_GPI_WAKE_ENABLE_MASK 0xf11 482 #define HDA_CMD_VERB_SET_GPI_WAKE_ENABLE_MASK 0x711 483 484 #define HDA_CMD_GET_GPI_WAKE_ENABLE_MASK(cad, nid) \ 485 (HDA_CMD_12BIT((cad), (nid), \ 486 HDA_CMD_VERB_GET_GPI_WAKE_ENABLE_MASK, 0x0)) 487 #define HDA_CMD_SET_GPI_WAKE_ENABLE_MASK(cad, nid, payload) \ 488 (HDA_CMD_12BIT((cad), (nid), \ 489 HDA_CMD_VERB_SET_GPI_WAKE_ENABLE_MASK, (payload))) 490 491 /* GPI Unsolicited Enable Mask */ 492 #define HDA_CMD_VERB_GET_GPI_UNSOLICITED_ENABLE_MASK 0xf12 493 #define HDA_CMD_VERB_SET_GPI_UNSOLICITED_ENABLE_MASK 0x712 494 495 #define HDA_CMD_GET_GPI_UNSOLICITED_ENABLE_MASK(cad, nid) \ 496 (HDA_CMD_12BIT((cad), (nid), \ 497 HDA_CMD_VERB_GET_GPI_UNSOLICITED_ENABLE_MASK, 0x0)) 498 #define HDA_CMD_SET_GPI_UNSOLICITED_ENABLE_MASK(cad, nid, payload) \ 499 (HDA_CMD_12BIT((cad), (nid), \ 500 HDA_CMD_VERB_SET_GPI_UNSOLICITED_ENABLE_MASK, (payload))) 501 502 /* GPI Sticky Mask */ 503 #define HDA_CMD_VERB_GET_GPI_STICKY_MASK 0xf13 504 #define HDA_CMD_VERB_SET_GPI_STICKY_MASK 0x713 505 506 #define HDA_CMD_GET_GPI_STICKY_MASK(cad, nid) \ 507 (HDA_CMD_12BIT((cad), (nid), \ 508 HDA_CMD_VERB_GET_GPI_STICKY_MASK, 0x0)) 509 #define HDA_CMD_SET_GPI_STICKY_MASK(cad, nid, payload) \ 510 (HDA_CMD_12BIT((cad), (nid), \ 511 HDA_CMD_VERB_SET_GPI_STICKY_MASK, (payload))) 512 513 /* GPO Data */ 514 #define HDA_CMD_VERB_GET_GPO_DATA 0xf14 515 #define HDA_CMD_VERB_SET_GPO_DATA 0x714 516 517 #define HDA_CMD_GET_GPO_DATA(cad, nid) \ 518 (HDA_CMD_12BIT((cad), (nid), \ 519 HDA_CMD_VERB_GET_GPO_DATA, 0x0)) 520 #define HDA_CMD_SET_GPO_DATA(cad, nid, payload) \ 521 (HDA_CMD_12BIT((cad), (nid), \ 522 HDA_CMD_VERB_SET_GPO_DATA, (payload))) 523 524 /* GPIO Data */ 525 #define HDA_CMD_VERB_GET_GPIO_DATA 0xf15 526 #define HDA_CMD_VERB_SET_GPIO_DATA 0x715 527 528 #define HDA_CMD_GET_GPIO_DATA(cad, nid) \ 529 (HDA_CMD_12BIT((cad), (nid), \ 530 HDA_CMD_VERB_GET_GPIO_DATA, 0x0)) 531 #define HDA_CMD_SET_GPIO_DATA(cad, nid, payload) \ 532 (HDA_CMD_12BIT((cad), (nid), \ 533 HDA_CMD_VERB_SET_GPIO_DATA, (payload))) 534 535 /* GPIO Enable Mask */ 536 #define HDA_CMD_VERB_GET_GPIO_ENABLE_MASK 0xf16 537 #define HDA_CMD_VERB_SET_GPIO_ENABLE_MASK 0x716 538 539 #define HDA_CMD_GET_GPIO_ENABLE_MASK(cad, nid) \ 540 (HDA_CMD_12BIT((cad), (nid), \ 541 HDA_CMD_VERB_GET_GPIO_ENABLE_MASK, 0x0)) 542 #define HDA_CMD_SET_GPIO_ENABLE_MASK(cad, nid, payload) \ 543 (HDA_CMD_12BIT((cad), (nid), \ 544 HDA_CMD_VERB_SET_GPIO_ENABLE_MASK, (payload))) 545 546 /* GPIO Direction */ 547 #define HDA_CMD_VERB_GET_GPIO_DIRECTION 0xf17 548 #define HDA_CMD_VERB_SET_GPIO_DIRECTION 0x717 549 550 #define HDA_CMD_GET_GPIO_DIRECTION(cad, nid) \ 551 (HDA_CMD_12BIT((cad), (nid), \ 552 HDA_CMD_VERB_GET_GPIO_DIRECTION, 0x0)) 553 #define HDA_CMD_SET_GPIO_DIRECTION(cad, nid, payload) \ 554 (HDA_CMD_12BIT((cad), (nid), \ 555 HDA_CMD_VERB_SET_GPIO_DIRECTION, (payload))) 556 557 /* GPIO Wake Enable Mask */ 558 #define HDA_CMD_VERB_GET_GPIO_WAKE_ENABLE_MASK 0xf18 559 #define HDA_CMD_VERB_SET_GPIO_WAKE_ENABLE_MASK 0x718 560 561 #define HDA_CMD_GET_GPIO_WAKE_ENABLE_MASK(cad, nid) \ 562 (HDA_CMD_12BIT((cad), (nid), \ 563 HDA_CMD_VERB_GET_GPIO_WAKE_ENABLE_MASK, 0x0)) 564 #define HDA_CMD_SET_GPIO_WAKE_ENABLE_MASK(cad, nid, payload) \ 565 (HDA_CMD_12BIT((cad), (nid), \ 566 HDA_CMD_VERB_SET_GPIO_WAKE_ENABLE_MASK, (payload))) 567 568 /* GPIO Unsolicited Enable Mask */ 569 #define HDA_CMD_VERB_GET_GPIO_UNSOLICITED_ENABLE_MASK 0xf19 570 #define HDA_CMD_VERB_SET_GPIO_UNSOLICITED_ENABLE_MASK 0x719 571 572 #define HDA_CMD_GET_GPIO_UNSOLICITED_ENABLE_MASK(cad, nid) \ 573 (HDA_CMD_12BIT((cad), (nid), \ 574 HDA_CMD_VERB_GET_GPIO_UNSOLICITED_ENABLE_MASK, 0x0)) 575 #define HDA_CMD_SET_GPIO_UNSOLICITED_ENABLE_MASK(cad, nid, payload) \ 576 (HDA_CMD_12BIT((cad), (nid), \ 577 HDA_CMD_VERB_SET_GPIO_UNSOLICITED_ENABLE_MASK, (payload))) 578 579 /* GPIO_STICKY_MASK */ 580 #define HDA_CMD_VERB_GET_GPIO_STICKY_MASK 0xf1a 581 #define HDA_CMD_VERB_SET_GPIO_STICKY_MASK 0x71a 582 583 #define HDA_CMD_GET_GPIO_STICKY_MASK(cad, nid) \ 584 (HDA_CMD_12BIT((cad), (nid), \ 585 HDA_CMD_VERB_GET_GPIO_STICKY_MASK, 0x0)) 586 #define HDA_CMD_SET_GPIO_STICKY_MASK(cad, nid, payload) \ 587 (HDA_CMD_12BIT((cad), (nid), \ 588 HDA_CMD_VERB_SET_GPIO_STICKY_MASK, (payload))) 589 590 /* Beep Generation */ 591 #define HDA_CMD_VERB_GET_BEEP_GENERATION 0xf0a 592 #define HDA_CMD_VERB_SET_BEEP_GENERATION 0x70a 593 594 #define HDA_CMD_GET_BEEP_GENERATION(cad, nid) \ 595 (HDA_CMD_12BIT((cad), (nid), \ 596 HDA_CMD_VERB_GET_BEEP_GENERATION, 0x0)) 597 #define HDA_CMD_SET_BEEP_GENERATION(cad, nid, payload) \ 598 (HDA_CMD_12BIT((cad), (nid), \ 599 HDA_CMD_VERB_SET_BEEP_GENERATION, (payload))) 600 601 /* Volume Knob */ 602 #define HDA_CMD_VERB_GET_VOLUME_KNOB 0xf0f 603 #define HDA_CMD_VERB_SET_VOLUME_KNOB 0x70f 604 605 #define HDA_CMD_GET_VOLUME_KNOB(cad, nid) \ 606 (HDA_CMD_12BIT((cad), (nid), \ 607 HDA_CMD_VERB_GET_VOLUME_KNOB, 0x0)) 608 #define HDA_CMD_SET_VOLUME_KNOB(cad, nid, payload) \ 609 (HDA_CMD_12BIT((cad), (nid), \ 610 HDA_CMD_VERB_SET_VOLUME_KNOB, (payload))) 611 612 /* Subsystem ID */ 613 #define HDA_CMD_VERB_GET_SUBSYSTEM_ID 0xf20 614 #define HDA_CMD_VERB_SET_SUSBYSTEM_ID1 0x720 615 #define HDA_CMD_VERB_SET_SUBSYSTEM_ID2 0x721 616 #define HDA_CMD_VERB_SET_SUBSYSTEM_ID3 0x722 617 #define HDA_CMD_VERB_SET_SUBSYSTEM_ID4 0x723 618 619 #define HDA_CMD_GET_SUBSYSTEM_ID(cad, nid) \ 620 (HDA_CMD_12BIT((cad), (nid), \ 621 HDA_CMD_VERB_GET_SUBSYSTEM_ID, 0x0)) 622 #define HDA_CMD_SET_SUBSYSTEM_ID1(cad, nid, payload) \ 623 (HDA_CMD_12BIT((cad), (nid), \ 624 HDA_CMD_VERB_SET_SUSBYSTEM_ID1, (payload))) 625 #define HDA_CMD_SET_SUBSYSTEM_ID2(cad, nid, payload) \ 626 (HDA_CMD_12BIT((cad), (nid), \ 627 HDA_CMD_VERB_SET_SUSBYSTEM_ID2, (payload))) 628 #define HDA_CMD_SET_SUBSYSTEM_ID3(cad, nid, payload) \ 629 (HDA_CMD_12BIT((cad), (nid), \ 630 HDA_CMD_VERB_SET_SUSBYSTEM_ID3, (payload))) 631 #define HDA_CMD_SET_SUBSYSTEM_ID4(cad, nid, payload) \ 632 (HDA_CMD_12BIT((cad), (nid), \ 633 HDA_CMD_VERB_SET_SUSBYSTEM_ID4, (payload))) 634 635 /* Configuration Default */ 636 #define HDA_CMD_VERB_GET_CONFIGURATION_DEFAULT 0xf1c 637 #define HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT1 0x71c 638 #define HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT2 0x71d 639 #define HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT3 0x71e 640 #define HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT4 0x71f 641 642 #define HDA_CMD_GET_CONFIGURATION_DEFAULT(cad, nid) \ 643 (HDA_CMD_12BIT((cad), (nid), \ 644 HDA_CMD_VERB_GET_CONFIGURATION_DEFAULT, 0x0)) 645 #define HDA_CMD_SET_CONFIGURATION_DEFAULT1(cad, nid, payload) \ 646 (HDA_CMD_12BIT((cad), (nid), \ 647 HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT1, (payload))) 648 #define HDA_CMD_SET_CONFIGURATION_DEFAULT2(cad, nid, payload) \ 649 (HDA_CMD_12BIT((cad), (nid), \ 650 HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT2, (payload))) 651 #define HDA_CMD_SET_CONFIGURATION_DEFAULT3(cad, nid, payload) \ 652 (HDA_CMD_12BIT((cad), (nid), \ 653 HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT3, (payload))) 654 #define HDA_CMD_SET_CONFIGURATION_DEFAULT4(cad, nid, payload) \ 655 (HDA_CMD_12BIT((cad), (nid), \ 656 HDA_CMD_VERB_SET_CONFIGURATION_DEFAULT4, (payload))) 657 658 /* Stripe Control */ 659 #define HDA_CMD_VERB_GET_STRIPE_CONTROL 0xf24 660 #define HDA_CMD_VERB_SET_STRIPE_CONTROL 0x724 661 662 #define HDA_CMD_GET_STRIPE_CONTROL(cad, nid) \ 663 (HDA_CMD_12BIT((cad), (nid), \ 664 HDA_CMD_VERB_GET_STRIPE_CONTROL, 0x0)) 665 #define HDA_CMD_SET_STRIPE_CONTROL(cad, nid, payload) \ 666 (HDA_CMD_12BIT((cad), (nid), \ 667 HDA_CMD_VERB_SET_STRIPE_CONTROL, (payload))) 668 669 /* Channel Count Control */ 670 #define HDA_CMD_VERB_GET_CONV_CHAN_COUNT 0xf2d 671 #define HDA_CMD_VERB_SET_CONV_CHAN_COUNT 0x72d 672 673 #define HDA_CMD_GET_CONV_CHAN_COUNT(cad, nid) \ 674 (HDA_CMD_12BIT((cad), (nid), \ 675 HDA_CMD_VERB_GET_CONV_CHAN_COUNT, 0x0)) 676 #define HDA_CMD_SET_CONV_CHAN_COUNT(cad, nid, payload) \ 677 (HDA_CMD_12BIT((cad), (nid), \ 678 HDA_CMD_VERB_SET_CONV_CHAN_COUNT, (payload))) 679 680 #define HDA_CMD_VERB_GET_HDMI_DIP_SIZE 0xf2e 681 682 #define HDA_CMD_GET_HDMI_DIP_SIZE(cad, nid, arg) \ 683 (HDA_CMD_12BIT((cad), (nid), \ 684 HDA_CMD_VERB_GET_HDMI_DIP_SIZE, (arg))) 685 686 #define HDA_CMD_VERB_GET_HDMI_ELDD 0xf2f 687 688 #define HDA_CMD_GET_HDMI_ELDD(cad, nid, off) \ 689 (HDA_CMD_12BIT((cad), (nid), \ 690 HDA_CMD_VERB_GET_HDMI_ELDD, (off))) 691 692 #define HDA_CMD_VERB_GET_HDMI_DIP_INDEX 0xf30 693 #define HDA_CMD_VERB_SET_HDMI_DIP_INDEX 0x730 694 695 #define HDA_CMD_GET_HDMI_DIP_INDEX(cad, nid) \ 696 (HDA_CMD_12BIT((cad), (nid), \ 697 HDA_CMD_VERB_GET_HDMI_DIP_INDEX, 0x0)) 698 #define HDA_CMD_SET_HDMI_DIP_INDEX(cad, nid, payload) \ 699 (HDA_CMD_12BIT((cad), (nid), \ 700 HDA_CMD_VERB_SET_HDMI_DIP_INDEX, (payload))) 701 702 #define HDA_CMD_VERB_GET_HDMI_DIP_DATA 0xf31 703 #define HDA_CMD_VERB_SET_HDMI_DIP_DATA 0x731 704 705 #define HDA_CMD_GET_HDMI_DIP_DATA(cad, nid) \ 706 (HDA_CMD_12BIT((cad), (nid), \ 707 HDA_CMD_VERB_GET_HDMI_DIP_DATA, 0x0)) 708 #define HDA_CMD_SET_HDMI_DIP_DATA(cad, nid, payload) \ 709 (HDA_CMD_12BIT((cad), (nid), \ 710 HDA_CMD_VERB_SET_HDMI_DIP_DATA, (payload))) 711 712 #define HDA_CMD_VERB_GET_HDMI_DIP_XMIT 0xf32 713 #define HDA_CMD_VERB_SET_HDMI_DIP_XMIT 0x732 714 715 #define HDA_CMD_GET_HDMI_DIP_XMIT(cad, nid) \ 716 (HDA_CMD_12BIT((cad), (nid), \ 717 HDA_CMD_VERB_GET_HDMI_DIP_XMIT, 0x0)) 718 #define HDA_CMD_SET_HDMI_DIP_XMIT(cad, nid, payload) \ 719 (HDA_CMD_12BIT((cad), (nid), \ 720 HDA_CMD_VERB_SET_HDMI_DIP_XMIT, (payload))) 721 722 #define HDA_CMD_VERB_GET_HDMI_CP_CTRL 0xf33 723 #define HDA_CMD_VERB_SET_HDMI_CP_CTRL 0x733 724 725 #define HDA_CMD_VERB_GET_HDMI_CHAN_SLOT 0xf34 726 #define HDA_CMD_VERB_SET_HDMI_CHAN_SLOT 0x734 727 728 #define HDA_CMD_GET_HDMI_CHAN_SLOT(cad, nid) \ 729 (HDA_CMD_12BIT((cad), (nid), \ 730 HDA_CMD_VERB_GET_HDMI_CHAN_SLOT, 0x0)) 731 #define HDA_CMD_SET_HDMI_CHAN_SLOT(cad, nid, payload) \ 732 (HDA_CMD_12BIT((cad), (nid), \ 733 HDA_CMD_VERB_SET_HDMI_CHAN_SLOT, (payload))) 734 735 #define HDA_HDMI_CODING_TYPE_REF_STREAM_HEADER 0 736 #define HDA_HDMI_CODING_TYPE_LPCM 1 737 #define HDA_HDMI_CODING_TYPE_AC3 2 738 #define HDA_HDMI_CODING_TYPE_MPEG1 3 739 #define HDA_HDMI_CODING_TYPE_MP3 4 740 #define HDA_HDMI_CODING_TYPE_MPEG2 5 741 #define HDA_HDMI_CODING_TYPE_AACLC 6 742 #define HDA_HDMI_CODING_TYPE_DTS 7 743 #define HDA_HDMI_CODING_TYPE_ATRAC 8 744 #define HDA_HDMI_CODING_TYPE_SACD 9 745 #define HDA_HDMI_CODING_TYPE_EAC3 10 746 #define HDA_HDMI_CODING_TYPE_DTS_HD 11 747 #define HDA_HDMI_CODING_TYPE_MLP 12 748 #define HDA_HDMI_CODING_TYPE_DST 13 749 #define HDA_HDMI_CODING_TYPE_WMAPRO 14 750 #define HDA_HDMI_CODING_TYPE_REF_CTX 15 751 752 /* Function Reset */ 753 #define HDA_CMD_VERB_FUNCTION_RESET 0x7ff 754 755 #define HDA_CMD_FUNCTION_RESET(cad, nid) \ 756 (HDA_CMD_12BIT((cad), (nid), \ 757 HDA_CMD_VERB_FUNCTION_RESET, 0x0)) 758 759 /**************************************************************************** 760 * HDA Device Parameters 761 ****************************************************************************/ 762 763 /* Vendor ID */ 764 #define HDA_PARAM_VENDOR_ID 0x00 765 766 #define HDA_PARAM_VENDOR_ID_VENDOR_ID_MASK 0xffff0000 767 #define HDA_PARAM_VENDOR_ID_VENDOR_ID_SHIFT 16 768 #define HDA_PARAM_VENDOR_ID_DEVICE_ID_MASK 0x0000ffff 769 #define HDA_PARAM_VENDOR_ID_DEVICE_ID_SHIFT 0 770 771 #define HDA_PARAM_VENDOR_ID_VENDOR_ID(param) \ 772 (((param) & HDA_PARAM_VENDOR_ID_VENDOR_ID_MASK) >> \ 773 HDA_PARAM_VENDOR_ID_VENDOR_ID_SHIFT) 774 #define HDA_PARAM_VENDOR_ID_DEVICE_ID(param) \ 775 (((param) & HDA_PARAM_VENDOR_ID_DEVICE_ID_MASK) >> \ 776 HDA_PARAM_VENDOR_ID_DEVICE_ID_SHIFT) 777 778 /* Revision ID */ 779 #define HDA_PARAM_REVISION_ID 0x02 780 781 #define HDA_PARAM_REVISION_ID_MAJREV_MASK 0x00f00000 782 #define HDA_PARAM_REVISION_ID_MAJREV_SHIFT 20 783 #define HDA_PARAM_REVISION_ID_MINREV_MASK 0x000f0000 784 #define HDA_PARAM_REVISION_ID_MINREV_SHIFT 16 785 #define HDA_PARAM_REVISION_ID_REVISION_ID_MASK 0x0000ff00 786 #define HDA_PARAM_REVISION_ID_REVISION_ID_SHIFT 8 787 #define HDA_PARAM_REVISION_ID_STEPPING_ID_MASK 0x000000ff 788 #define HDA_PARAM_REVISION_ID_STEPPING_ID_SHIFT 0 789 790 #define HDA_PARAM_REVISION_ID_MAJREV(param) \ 791 (((param) & HDA_PARAM_REVISION_ID_MAJREV_MASK) >> \ 792 HDA_PARAM_REVISION_ID_MAJREV_SHIFT) 793 #define HDA_PARAM_REVISION_ID_MINREV(param) \ 794 (((param) & HDA_PARAM_REVISION_ID_MINREV_MASK) >> \ 795 HDA_PARAM_REVISION_ID_MINREV_SHIFT) 796 #define HDA_PARAM_REVISION_ID_REVISION_ID(param) \ 797 (((param) & HDA_PARAM_REVISION_ID_REVISION_ID_MASK) >> \ 798 HDA_PARAM_REVISION_ID_REVISION_ID_SHIFT) 799 #define HDA_PARAM_REVISION_ID_STEPPING_ID(param) \ 800 (((param) & HDA_PARAM_REVISION_ID_STEPPING_ID_MASK) >> \ 801 HDA_PARAM_REVISION_ID_STEPPING_ID_SHIFT) 802 803 /* Subordinate Node Cound */ 804 #define HDA_PARAM_SUB_NODE_COUNT 0x04 805 806 #define HDA_PARAM_SUB_NODE_COUNT_START_MASK 0x00ff0000 807 #define HDA_PARAM_SUB_NODE_COUNT_START_SHIFT 16 808 #define HDA_PARAM_SUB_NODE_COUNT_TOTAL_MASK 0x000000ff 809 #define HDA_PARAM_SUB_NODE_COUNT_TOTAL_SHIFT 0 810 811 #define HDA_PARAM_SUB_NODE_COUNT_START(param) \ 812 (((param) & HDA_PARAM_SUB_NODE_COUNT_START_MASK) >> \ 813 HDA_PARAM_SUB_NODE_COUNT_START_SHIFT) 814 #define HDA_PARAM_SUB_NODE_COUNT_TOTAL(param) \ 815 (((param) & HDA_PARAM_SUB_NODE_COUNT_TOTAL_MASK) >> \ 816 HDA_PARAM_SUB_NODE_COUNT_TOTAL_SHIFT) 817 818 /* Function Group Type */ 819 #define HDA_PARAM_FCT_GRP_TYPE 0x05 820 821 #define HDA_PARAM_FCT_GRP_TYPE_UNSOL_MASK 0x00000100 822 #define HDA_PARAM_FCT_GRP_TYPE_UNSOL_SHIFT 8 823 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_MASK 0x000000ff 824 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_SHIFT 0 825 826 #define HDA_PARAM_FCT_GRP_TYPE_UNSOL(param) \ 827 (((param) & HDA_PARAM_FCT_GRP_TYPE_UNSOL_MASK) >> \ 828 HDA_PARAM_FCT_GROUP_TYPE_UNSOL_SHIFT) 829 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE(param) \ 830 (((param) & HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_MASK) >> \ 831 HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_SHIFT) 832 833 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_AUDIO 0x01 834 #define HDA_PARAM_FCT_GRP_TYPE_NODE_TYPE_MODEM 0x02 835 836 /* Audio Function Group Capabilities */ 837 #define HDA_PARAM_AUDIO_FCT_GRP_CAP 0x08 838 839 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_MASK 0x00010000 840 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_SHIFT 16 841 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_MASK 0x00000f00 842 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_SHIFT 8 843 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_MASK 0x0000000f 844 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_SHIFT 0 845 846 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN(param) \ 847 (((param) & HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_MASK) >> \ 848 HDA_PARAM_AUDIO_FCT_GRP_CAP_BEEP_GEN_SHIFT) 849 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY(param) \ 850 (((param) & HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_MASK) >> \ 851 HDA_PARAM_AUDIO_FCT_GRP_CAP_INPUT_DELAY_SHIFT) 852 #define HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY(param) \ 853 (((param) & HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_MASK) >> \ 854 HDA_PARAM_AUDIO_FCT_GRP_CAP_OUTPUT_DELAY_SHIFT) 855 856 /* Audio Widget Capabilities */ 857 #define HDA_PARAM_AUDIO_WIDGET_CAP 0x09 858 859 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_MASK 0x00f00000 860 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_SHIFT 20 861 #define HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_MASK 0x000f0000 862 #define HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_SHIFT 16 863 #define HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_MASK 0x0000e000 864 #define HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_SHIFT 13 865 #define HDA_PARAM_AUDIO_WIDGET_CAP_CP_MASK 0x00001000 866 #define HDA_PARAM_AUDIO_WIDGET_CAP_CP_SHIFT 12 867 #define HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_MASK 0x00000800 868 #define HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_SHIFT 11 869 #define HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_MASK 0x00000400 870 #define HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_SHIFT 10 871 #define HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK 0x00000200 872 #define HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_SHIFT 9 873 #define HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_MASK 0x00000100 874 #define HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_SHIFT 8 875 #define HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_MASK 0x00000080 876 #define HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_SHIFT 7 877 #define HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_MASK 0x00000040 878 #define HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_SHIFT 6 879 #define HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_MASK 0x00000020 880 #define HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_SHIFT 5 881 #define HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_MASK 0x00000010 882 #define HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_SHIFT 4 883 #define HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_MASK 0x00000008 884 #define HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_SHIFT 3 885 #define HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_MASK 0x00000004 886 #define HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_SHIFT 2 887 #define HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_MASK 0x00000002 888 #define HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_SHIFT 1 889 #define HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_MASK 0x00000001 890 #define HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_SHIFT 0 891 892 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE(param) \ 893 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_MASK) >> \ 894 HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_SHIFT) 895 #define HDA_PARAM_AUDIO_WIDGET_CAP_DELAY(param) \ 896 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_MASK) >> \ 897 HDA_PARAM_AUDIO_WIDGET_CAP_DELAY_SHIFT) 898 #define HDA_PARAM_AUDIO_WIDGET_CAP_CC(param) \ 899 ((((param) & HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_MASK) >> \ 900 (HDA_PARAM_AUDIO_WIDGET_CAP_CC_EXT_SHIFT - 1)) | \ 901 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_MASK) >> \ 902 HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_SHIFT)) 903 #define HDA_PARAM_AUDIO_WIDGET_CAP_CP(param) \ 904 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_CP_MASK) >> \ 905 HDA_PARAM_AUDIO_WIDGET_CAP_CP_SHIFT) 906 #define HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP(param) \ 907 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_MASK) >> \ 908 HDA_PARAM_AUDIO_WIDGET_CAP_LR_SWAP_SHIFT) 909 #define HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL(param) \ 910 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_MASK) >> \ 911 HDA_PARAM_AUDIO_WIDGET_CAP_POWER_CTRL_SHIFT) 912 #define HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL(param) \ 913 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_MASK) >> \ 914 HDA_PARAM_AUDIO_WIDGET_CAP_DIGITAL_SHIFT) 915 #define HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST(param) \ 916 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_MASK) >> \ 917 HDA_PARAM_AUDIO_WIDGET_CAP_CONN_LIST_SHIFT) 918 #define HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP(param) \ 919 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_MASK) >> \ 920 HDA_PARAM_AUDIO_WIDGET_CAP_UNSOL_CAP_SHIFT) 921 #define HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET(param) \ 922 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_MASK) >> \ 923 HDA_PARAM_AUDIO_WIDGET_CAP_PROC_WIDGET_SHIFT) 924 #define HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE(param) \ 925 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_MASK) >> \ 926 HDA_PARAM_AUDIO_WIDGET_CAP_STRIPE_SHIFT) 927 #define HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR(param) \ 928 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_MASK) >> \ 929 HDA_PARAM_AUDIO_WIDGET_CAP_FORMAT_OVR_SHIFT) 930 #define HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR(param) \ 931 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_MASK) >> \ 932 HDA_PARAM_AUDIO_WIDGET_CAP_AMP_OVR_SHIFT) 933 #define HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP(param) \ 934 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_MASK) >> \ 935 HDA_PARAM_AUDIO_WIDGET_CAP_OUT_AMP_SHIFT) 936 #define HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP(param) \ 937 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_MASK) >> \ 938 HDA_PARAM_AUDIO_WIDGET_CAP_IN_AMP_SHIFT) 939 #define HDA_PARAM_AUDIO_WIDGET_CAP_STEREO(param) \ 940 (((param) & HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_MASK) >> \ 941 HDA_PARAM_AUDIO_WIDGET_CAP_STEREO_SHIFT) 942 943 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_OUTPUT 0x0 944 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_INPUT 0x1 945 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_MIXER 0x2 946 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_AUDIO_SELECTOR 0x3 947 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_PIN_COMPLEX 0x4 948 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_POWER_WIDGET 0x5 949 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_VOLUME_WIDGET 0x6 950 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_BEEP_WIDGET 0x7 951 #define HDA_PARAM_AUDIO_WIDGET_CAP_TYPE_VENDOR_WIDGET 0xf 952 953 /* Supported PCM Size, Rates */ 954 955 #define HDA_PARAM_SUPP_PCM_SIZE_RATE 0x0a 956 957 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_MASK 0x00100000 958 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_SHIFT 20 959 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_MASK 0x00080000 960 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_SHIFT 19 961 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_MASK 0x00040000 962 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_SHIFT 18 963 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_MASK 0x00020000 964 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_SHIFT 17 965 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_MASK 0x00010000 966 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_SHIFT 16 967 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_MASK 0x00000001 968 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_SHIFT 0 969 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_MASK 0x00000002 970 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_SHIFT 1 971 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_MASK 0x00000004 972 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_SHIFT 2 973 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_MASK 0x00000008 974 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_SHIFT 3 975 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_MASK 0x00000010 976 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_SHIFT 4 977 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_MASK 0x00000020 978 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_SHIFT 5 979 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_MASK 0x00000040 980 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_SHIFT 6 981 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_MASK 0x00000080 982 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_SHIFT 7 983 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_MASK 0x00000100 984 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_SHIFT 8 985 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_MASK 0x00000200 986 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_SHIFT 9 987 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_MASK 0x00000400 988 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_SHIFT 10 989 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_MASK 0x00000800 990 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_SHIFT 11 991 992 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT(param) \ 993 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_MASK) >> \ 994 HDA_PARAM_SUPP_PCM_SIZE_RATE_32BIT_SHIFT) 995 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT(param) \ 996 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_MASK) >> \ 997 HDA_PARAM_SUPP_PCM_SIZE_RATE_24BIT_SHIFT) 998 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT(param) \ 999 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_MASK) >> \ 1000 HDA_PARAM_SUPP_PCM_SIZE_RATE_20BIT_SHIFT) 1001 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT(param) \ 1002 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_MASK) >> \ 1003 HDA_PARAM_SUPP_PCM_SIZE_RATE_16BIT_SHIFT) 1004 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT(param) \ 1005 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_MASK) >> \ 1006 HDA_PARAM_SUPP_PCM_SIZE_RATE_8BIT_SHIFT) 1007 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ(param) \ 1008 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_MASK) >> \ 1009 HDA_PARAM_SUPP_PCM_SIZE_RATE_8KHZ_SHIFT) 1010 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ(param) \ 1011 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_MASK) >> \ 1012 HDA_PARAM_SUPP_PCM_SIZE_RATE_11KHZ_SHIFT) 1013 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ(param) \ 1014 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_MASK) >> \ 1015 HDA_PARAM_SUPP_PCM_SIZE_RATE_16KHZ_SHIFT) 1016 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ(param) \ 1017 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_MASK) >> \ 1018 HDA_PARAM_SUPP_PCM_SIZE_RATE_22KHZ_SHIFT) 1019 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ(param) \ 1020 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_MASK) >> \ 1021 HDA_PARAM_SUPP_PCM_SIZE_RATE_32KHZ_SHIFT) 1022 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ(param) \ 1023 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_MASK) >> \ 1024 HDA_PARAM_SUPP_PCM_SIZE_RATE_44KHZ_SHIFT) 1025 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ(param) \ 1026 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_MASK) >> \ 1027 HDA_PARAM_SUPP_PCM_SIZE_RATE_48KHZ_SHIFT) 1028 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ(param) \ 1029 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_MASK) >> \ 1030 HDA_PARAM_SUPP_PCM_SIZE_RATE_88KHZ_SHIFT) 1031 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ(param) \ 1032 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_MASK) >> \ 1033 HDA_PARAM_SUPP_PCM_SIZE_RATE_96KHZ_SHIFT) 1034 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ(param) \ 1035 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_MASK) >> \ 1036 HDA_PARAM_SUPP_PCM_SIZE_RATE_176KHZ_SHIFT) 1037 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ(param) \ 1038 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_MASK) >> \ 1039 HDA_PARAM_SUPP_PCM_SIZE_RATE_192KHZ_SHIFT) 1040 #define HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ(param) \ 1041 (((param) & HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_MASK) >> \ 1042 HDA_PARAM_SUPP_PCM_SIZE_RATE_384KHZ_SHIFT) 1043 1044 /* Supported Stream Formats */ 1045 #define HDA_PARAM_SUPP_STREAM_FORMATS 0x0b 1046 1047 #define HDA_PARAM_SUPP_STREAM_FORMATS_AC3_MASK 0x00000004 1048 #define HDA_PARAM_SUPP_STREAM_FORMATS_AC3_SHIFT 2 1049 #define HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_MASK 0x00000002 1050 #define HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_SHIFT 1 1051 #define HDA_PARAM_SUPP_STREAM_FORMATS_PCM_MASK 0x00000001 1052 #define HDA_PARAM_SUPP_STREAM_FORMATS_PCM_SHIFT 0 1053 1054 #define HDA_PARAM_SUPP_STREAM_FORMATS_AC3(param) \ 1055 (((param) & HDA_PARAM_SUPP_STREAM_FORMATS_AC3_MASK) >> \ 1056 HDA_PARAM_SUPP_STREAM_FORMATS_AC3_SHIFT) 1057 #define HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32(param) \ 1058 (((param) & HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_MASK) >> \ 1059 HDA_PARAM_SUPP_STREAM_FORMATS_FLOAT32_SHIFT) 1060 #define HDA_PARAM_SUPP_STREAM_FORMATS_PCM(param) \ 1061 (((param) & HDA_PARAM_SUPP_STREAM_FORMATS_PCM_MASK) >> \ 1062 HDA_PARAM_SUPP_STREAM_FORMATS_PCM_SHIFT) 1063 1064 /* Pin Capabilities */ 1065 #define HDA_PARAM_PIN_CAP 0x0c 1066 1067 #define HDA_PARAM_PIN_CAP_HBR_MASK 0x08000000 1068 #define HDA_PARAM_PIN_CAP_HBR_SHIFT 27 1069 #define HDA_PARAM_PIN_CAP_DP_MASK 0x01000000 1070 #define HDA_PARAM_PIN_CAP_DP_SHIFT 24 1071 #define HDA_PARAM_PIN_CAP_EAPD_CAP_MASK 0x00010000 1072 #define HDA_PARAM_PIN_CAP_EAPD_CAP_SHIFT 16 1073 #define HDA_PARAM_PIN_CAP_VREF_CTRL_MASK 0x0000ff00 1074 #define HDA_PARAM_PIN_CAP_VREF_CTRL_SHIFT 8 1075 #define HDA_PARAM_PIN_CAP_VREF_CTRL_100_MASK 0x00002000 1076 #define HDA_PARAM_PIN_CAP_VREF_CTRL_100_SHIFT 13 1077 #define HDA_PARAM_PIN_CAP_VREF_CTRL_80_MASK 0x00001000 1078 #define HDA_PARAM_PIN_CAP_VREF_CTRL_80_SHIFT 12 1079 #define HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_MASK 0x00000400 1080 #define HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_SHIFT 10 1081 #define HDA_PARAM_PIN_CAP_VREF_CTRL_50_MASK 0x00000200 1082 #define HDA_PARAM_PIN_CAP_VREF_CTRL_50_SHIFT 9 1083 #define HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_MASK 0x00000100 1084 #define HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_SHIFT 8 1085 #define HDA_PARAM_PIN_CAP_HDMI_MASK 0x00000080 1086 #define HDA_PARAM_PIN_CAP_HDMI_SHIFT 7 1087 #define HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_MASK 0x00000040 1088 #define HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_SHIFT 6 1089 #define HDA_PARAM_PIN_CAP_INPUT_CAP_MASK 0x00000020 1090 #define HDA_PARAM_PIN_CAP_INPUT_CAP_SHIFT 5 1091 #define HDA_PARAM_PIN_CAP_OUTPUT_CAP_MASK 0x00000010 1092 #define HDA_PARAM_PIN_CAP_OUTPUT_CAP_SHIFT 4 1093 #define HDA_PARAM_PIN_CAP_HEADPHONE_CAP_MASK 0x00000008 1094 #define HDA_PARAM_PIN_CAP_HEADPHONE_CAP_SHIFT 3 1095 #define HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_MASK 0x00000004 1096 #define HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_SHIFT 2 1097 #define HDA_PARAM_PIN_CAP_TRIGGER_REQD_MASK 0x00000002 1098 #define HDA_PARAM_PIN_CAP_TRIGGER_REQD_SHIFT 1 1099 #define HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_MASK 0x00000001 1100 #define HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_SHIFT 0 1101 1102 #define HDA_PARAM_PIN_CAP_HBR(param) \ 1103 (((param) & HDA_PARAM_PIN_CAP_HBR_MASK) >> \ 1104 HDA_PARAM_PIN_CAP_HBR_SHIFT) 1105 #define HDA_PARAM_PIN_CAP_DP(param) \ 1106 (((param) & HDA_PARAM_PIN_CAP_DP_MASK) >> \ 1107 HDA_PARAM_PIN_CAP_DP_SHIFT) 1108 #define HDA_PARAM_PIN_CAP_EAPD_CAP(param) \ 1109 (((param) & HDA_PARAM_PIN_CAP_EAPD_CAP_MASK) >> \ 1110 HDA_PARAM_PIN_CAP_EAPD_CAP_SHIFT) 1111 #define HDA_PARAM_PIN_CAP_VREF_CTRL(param) \ 1112 (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_MASK) >> \ 1113 HDA_PARAM_PIN_CAP_VREF_CTRL_SHIFT) 1114 #define HDA_PARAM_PIN_CAP_VREF_CTRL_100(param) \ 1115 (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_100_MASK) >> \ 1116 HDA_PARAM_PIN_CAP_VREF_CTRL_100_SHIFT) 1117 #define HDA_PARAM_PIN_CAP_VREF_CTRL_80(param) \ 1118 (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_80_MASK) >> \ 1119 HDA_PARAM_PIN_CAP_VREF_CTRL_80_SHIFT) 1120 #define HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND(param) \ 1121 (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_MASK) >> \ 1122 HDA_PARAM_PIN_CAP_VREF_CTRL_GROUND_SHIFT) 1123 #define HDA_PARAM_PIN_CAP_VREF_CTRL_50(param) \ 1124 (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_50_MASK) >> \ 1125 HDA_PARAM_PIN_CAP_VREF_CTRL_50_SHIFT) 1126 #define HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ(param) \ 1127 (((param) & HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_MASK) >> \ 1128 HDA_PARAM_PIN_CAP_VREF_CTRL_HIZ_SHIFT) 1129 #define HDA_PARAM_PIN_CAP_HDMI(param) \ 1130 (((param) & HDA_PARAM_PIN_CAP_HDMI_MASK) >> \ 1131 HDA_PARAM_PIN_CAP_HDMI_SHIFT) 1132 #define HDA_PARAM_PIN_CAP_BALANCED_IO_PINS(param) \ 1133 (((param) & HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_MASK) >> \ 1134 HDA_PARAM_PIN_CAP_BALANCED_IO_PINS_SHIFT) 1135 #define HDA_PARAM_PIN_CAP_INPUT_CAP(param) \ 1136 (((param) & HDA_PARAM_PIN_CAP_INPUT_CAP_MASK) >> \ 1137 HDA_PARAM_PIN_CAP_INPUT_CAP_SHIFT) 1138 #define HDA_PARAM_PIN_CAP_OUTPUT_CAP(param) \ 1139 (((param) & HDA_PARAM_PIN_CAP_OUTPUT_CAP_MASK) >> \ 1140 HDA_PARAM_PIN_CAP_OUTPUT_CAP_SHIFT) 1141 #define HDA_PARAM_PIN_CAP_HEADPHONE_CAP(param) \ 1142 (((param) & HDA_PARAM_PIN_CAP_HEADPHONE_CAP_MASK) >> \ 1143 HDA_PARAM_PIN_CAP_HEADPHONE_CAP_SHIFT) 1144 #define HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP(param) \ 1145 (((param) & HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_MASK) >> \ 1146 HDA_PARAM_PIN_CAP_PRESENCE_DETECT_CAP_SHIFT) 1147 #define HDA_PARAM_PIN_CAP_TRIGGER_REQD(param) \ 1148 (((param) & HDA_PARAM_PIN_CAP_TRIGGER_REQD_MASK) >> \ 1149 HDA_PARAM_PIN_CAP_TRIGGER_REQD_SHIFT) 1150 #define HDA_PARAM_PIN_CAP_IMP_SENSE_CAP(param) \ 1151 (((param) & HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_MASK) >> \ 1152 HDA_PARAM_PIN_CAP_IMP_SENSE_CAP_SHIFT) 1153 1154 /* Input Amplifier Capabilities */ 1155 #define HDA_PARAM_INPUT_AMP_CAP 0x0d 1156 1157 #define HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_MASK 0x80000000 1158 #define HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_SHIFT 31 1159 #define HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_MASK 0x007f0000 1160 #define HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_SHIFT 16 1161 #define HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_MASK 0x00007f00 1162 #define HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_SHIFT 8 1163 #define HDA_PARAM_INPUT_AMP_CAP_OFFSET_MASK 0x0000007f 1164 #define HDA_PARAM_INPUT_AMP_CAP_OFFSET_SHIFT 0 1165 1166 #define HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP(param) \ 1167 (((param) & HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_MASK) >> \ 1168 HDA_PARAM_INPUT_AMP_CAP_MUTE_CAP_SHIFT) 1169 #define HDA_PARAM_INPUT_AMP_CAP_STEPSIZE(param) \ 1170 (((param) & HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_MASK) >> \ 1171 HDA_PARAM_INPUT_AMP_CAP_STEPSIZE_SHIFT) 1172 #define HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS(param) \ 1173 (((param) & HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_MASK) >> \ 1174 HDA_PARAM_INPUT_AMP_CAP_NUMSTEPS_SHIFT) 1175 #define HDA_PARAM_INPUT_AMP_CAP_OFFSET(param) \ 1176 (((param) & HDA_PARAM_INPUT_AMP_CAP_OFFSET_MASK) >> \ 1177 HDA_PARAM_INPUT_AMP_CAP_OFFSET_SHIFT) 1178 1179 /* Output Amplifier Capabilities */ 1180 #define HDA_PARAM_OUTPUT_AMP_CAP 0x12 1181 1182 #define HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_MASK 0x80000000 1183 #define HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_SHIFT 31 1184 #define HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_MASK 0x007f0000 1185 #define HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_SHIFT 16 1186 #define HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_MASK 0x00007f00 1187 #define HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_SHIFT 8 1188 #define HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_MASK 0x0000007f 1189 #define HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_SHIFT 0 1190 1191 #define HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP(param) \ 1192 (((param) & HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_MASK) >> \ 1193 HDA_PARAM_OUTPUT_AMP_CAP_MUTE_CAP_SHIFT) 1194 #define HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE(param) \ 1195 (((param) & HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_MASK) >> \ 1196 HDA_PARAM_OUTPUT_AMP_CAP_STEPSIZE_SHIFT) 1197 #define HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS(param) \ 1198 (((param) & HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_MASK) >> \ 1199 HDA_PARAM_OUTPUT_AMP_CAP_NUMSTEPS_SHIFT) 1200 #define HDA_PARAM_OUTPUT_AMP_CAP_OFFSET(param) \ 1201 (((param) & HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_MASK) >> \ 1202 HDA_PARAM_OUTPUT_AMP_CAP_OFFSET_SHIFT) 1203 1204 /* Connection List Length */ 1205 #define HDA_PARAM_CONN_LIST_LENGTH 0x0e 1206 1207 #define HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_MASK 0x00000080 1208 #define HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_SHIFT 7 1209 #define HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_MASK 0x0000007f 1210 #define HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_SHIFT 0 1211 1212 #define HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM(param) \ 1213 (((param) & HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_MASK) >> \ 1214 HDA_PARAM_CONN_LIST_LENGTH_LONG_FORM_SHIFT) 1215 #define HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH(param) \ 1216 (((param) & HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_MASK) >> \ 1217 HDA_PARAM_CONN_LIST_LENGTH_LIST_LENGTH_SHIFT) 1218 1219 /* Supported Power States */ 1220 #define HDA_PARAM_SUPP_POWER_STATES 0x0f 1221 1222 #define HDA_PARAM_SUPP_POWER_STATES_D3_MASK 0x00000008 1223 #define HDA_PARAM_SUPP_POWER_STATES_D3_SHIFT 3 1224 #define HDA_PARAM_SUPP_POWER_STATES_D2_MASK 0x00000004 1225 #define HDA_PARAM_SUPP_POWER_STATES_D2_SHIFT 2 1226 #define HDA_PARAM_SUPP_POWER_STATES_D1_MASK 0x00000002 1227 #define HDA_PARAM_SUPP_POWER_STATES_D1_SHIFT 1 1228 #define HDA_PARAM_SUPP_POWER_STATES_D0_MASK 0x00000001 1229 #define HDA_PARAM_SUPP_POWER_STATES_D0_SHIFT 0 1230 1231 #define HDA_PARAM_SUPP_POWER_STATES_D3(param) \ 1232 (((param) & HDA_PARAM_SUPP_POWER_STATES_D3_MASK) >> \ 1233 HDA_PARAM_SUPP_POWER_STATES_D3_SHIFT) 1234 #define HDA_PARAM_SUPP_POWER_STATES_D2(param) \ 1235 (((param) & HDA_PARAM_SUPP_POWER_STATES_D2_MASK) >> \ 1236 HDA_PARAM_SUPP_POWER_STATES_D2_SHIFT) 1237 #define HDA_PARAM_SUPP_POWER_STATES_D1(param) \ 1238 (((param) & HDA_PARAM_SUPP_POWER_STATES_D1_MASK) >> \ 1239 HDA_PARAM_SUPP_POWER_STATES_D1_SHIFT) 1240 #define HDA_PARAM_SUPP_POWER_STATES_D0(param) \ 1241 (((param) & HDA_PARAM_SUPP_POWER_STATES_D0_MASK) >> \ 1242 HDA_PARAM_SUPP_POWER_STATES_D0_SHIFT) 1243 1244 /* Processing Capabilities */ 1245 #define HDA_PARAM_PROCESSING_CAP 0x10 1246 1247 #define HDA_PARAM_PROCESSING_CAP_NUMCOEFF_MASK 0x0000ff00 1248 #define HDA_PARAM_PROCESSING_CAP_NUMCOEFF_SHIFT 8 1249 #define HDA_PARAM_PROCESSING_CAP_BENIGN_MASK 0x00000001 1250 #define HDA_PARAM_PROCESSING_CAP_BENIGN_SHIFT 0 1251 1252 #define HDA_PARAM_PROCESSING_CAP_NUMCOEFF(param) \ 1253 (((param) & HDA_PARAM_PROCESSING_CAP_NUMCOEFF_MASK) >> \ 1254 HDA_PARAM_PROCESSING_CAP_NUMCOEFF_SHIFT) 1255 #define HDA_PARAM_PROCESSING_CAP_BENIGN(param) \ 1256 (((param) & HDA_PARAM_PROCESSING_CAP_BENIGN_MASK) >> \ 1257 HDA_PARAM_PROCESSING_CAP_BENIGN_SHIFT) 1258 1259 /* GPIO Count */ 1260 #define HDA_PARAM_GPIO_COUNT 0x11 1261 1262 #define HDA_PARAM_GPIO_COUNT_GPI_WAKE_MASK 0x80000000 1263 #define HDA_PARAM_GPIO_COUNT_GPI_WAKE_SHIFT 31 1264 #define HDA_PARAM_GPIO_COUNT_GPI_UNSOL_MASK 0x40000000 1265 #define HDA_PARAM_GPIO_COUNT_GPI_UNSOL_SHIFT 30 1266 #define HDA_PARAM_GPIO_COUNT_NUM_GPI_MASK 0x00ff0000 1267 #define HDA_PARAM_GPIO_COUNT_NUM_GPI_SHIFT 16 1268 #define HDA_PARAM_GPIO_COUNT_NUM_GPO_MASK 0x0000ff00 1269 #define HDA_PARAM_GPIO_COUNT_NUM_GPO_SHIFT 8 1270 #define HDA_PARAM_GPIO_COUNT_NUM_GPIO_MASK 0x000000ff 1271 #define HDA_PARAM_GPIO_COUNT_NUM_GPIO_SHIFT 0 1272 1273 #define HDA_PARAM_GPIO_COUNT_GPI_WAKE(param) \ 1274 (((param) & HDA_PARAM_GPIO_COUNT_GPI_WAKE_MASK) >> \ 1275 HDA_PARAM_GPIO_COUNT_GPI_WAKE_SHIFT) 1276 #define HDA_PARAM_GPIO_COUNT_GPI_UNSOL(param) \ 1277 (((param) & HDA_PARAM_GPIO_COUNT_GPI_UNSOL_MASK) >> \ 1278 HDA_PARAM_GPIO_COUNT_GPI_UNSOL_SHIFT) 1279 #define HDA_PARAM_GPIO_COUNT_NUM_GPI(param) \ 1280 (((param) & HDA_PARAM_GPIO_COUNT_NUM_GPI_MASK) >> \ 1281 HDA_PARAM_GPIO_COUNT_NUM_GPI_SHIFT) 1282 #define HDA_PARAM_GPIO_COUNT_NUM_GPO(param) \ 1283 (((param) & HDA_PARAM_GPIO_COUNT_NUM_GPO_MASK) >> \ 1284 HDA_PARAM_GPIO_COUNT_NUM_GPO_SHIFT) 1285 #define HDA_PARAM_GPIO_COUNT_NUM_GPIO(param) \ 1286 (((param) & HDA_PARAM_GPIO_COUNT_NUM_GPIO_MASK) >> \ 1287 HDA_PARAM_GPIO_COUNT_NUM_GPIO_SHIFT) 1288 1289 /* Volume Knob Capabilities */ 1290 #define HDA_PARAM_VOLUME_KNOB_CAP 0x13 1291 1292 #define HDA_PARAM_VOLUME_KNOB_CAP_DELTA_MASK 0x00000080 1293 #define HDA_PARAM_VOLUME_KNOB_CAP_DELTA_SHIFT 7 1294 #define HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_MASK 0x0000007f 1295 #define HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_SHIFT 0 1296 1297 #define HDA_PARAM_VOLUME_KNOB_CAP_DELTA(param) \ 1298 (((param) & HDA_PARAM_VOLUME_KNOB_CAP_DELTA_MASK) >> \ 1299 HDA_PARAM_VOLUME_KNOB_CAP_DELTA_SHIFT) 1300 #define HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS(param) \ 1301 (((param) & HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_MASK) >> \ 1302 HDA_PARAM_VOLUME_KNOB_CAP_NUM_STEPS_SHIFT) 1303 1304 #define HDA_CONFIG_DEFAULTCONF_SEQUENCE_MASK 0x0000000f 1305 #define HDA_CONFIG_DEFAULTCONF_SEQUENCE_SHIFT 0 1306 #define HDA_CONFIG_DEFAULTCONF_ASSOCIATION_MASK 0x000000f0 1307 #define HDA_CONFIG_DEFAULTCONF_ASSOCIATION_SHIFT 4 1308 #define HDA_CONFIG_DEFAULTCONF_MISC_MASK 0x00000f00 1309 #define HDA_CONFIG_DEFAULTCONF_MISC_SHIFT 8 1310 #define HDA_CONFIG_DEFAULTCONF_COLOR_MASK 0x0000f000 1311 #define HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT 12 1312 #define HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_MASK 0x000f0000 1313 #define HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_SHIFT 16 1314 #define HDA_CONFIG_DEFAULTCONF_DEVICE_MASK 0x00f00000 1315 #define HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT 20 1316 #define HDA_CONFIG_DEFAULTCONF_LOCATION_MASK 0x3f000000 1317 #define HDA_CONFIG_DEFAULTCONF_LOCATION_SHIFT 24 1318 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK 0xc0000000 1319 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT 30 1320 1321 #define HDA_CONFIG_DEFAULTCONF_SEQUENCE(conf) \ 1322 (((conf) & HDA_CONFIG_DEFAULTCONF_SEQUENCE_MASK) >> \ 1323 HDA_CONFIG_DEFAULTCONF_SEQUENCE_SHIFT) 1324 #define HDA_CONFIG_DEFAULTCONF_ASSOCIATION(conf) \ 1325 (((conf) & HDA_CONFIG_DEFAULTCONF_ASSOCIATION_MASK) >> \ 1326 HDA_CONFIG_DEFAULTCONF_ASSOCIATION_SHIFT) 1327 #define HDA_CONFIG_DEFAULTCONF_MISC(conf) \ 1328 (((conf) & HDA_CONFIG_DEFAULTCONF_MISC_MASK) >> \ 1329 HDA_CONFIG_DEFAULTCONF_MISC_SHIFT) 1330 #define HDA_CONFIG_DEFAULTCONF_COLOR(conf) \ 1331 (((conf) & HDA_CONFIG_DEFAULTCONF_COLOR_MASK) >> \ 1332 HDA_CONFIG_DEFAULTCONF_COLOR_SHIFT) 1333 #define HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE(conf) \ 1334 (((conf) & HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_MASK) >> \ 1335 HDA_CONFIG_DEFAULTCONF_CONNECTION_TYPE_SHIFT) 1336 #define HDA_CONFIG_DEFAULTCONF_DEVICE(conf) \ 1337 (((conf) & HDA_CONFIG_DEFAULTCONF_DEVICE_MASK) >> \ 1338 HDA_CONFIG_DEFAULTCONF_DEVICE_SHIFT) 1339 #define HDA_CONFIG_DEFAULTCONF_LOCATION(conf) \ 1340 (((conf) & HDA_CONFIG_DEFAULTCONF_LOCATION_MASK) >> \ 1341 HDA_CONFIG_DEFAULTCONF_LOCATION_SHIFT) 1342 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY(conf) \ 1343 (((conf) & HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_MASK) >> \ 1344 HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_SHIFT) 1345 1346 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_JACK (0<<30) 1347 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_NONE (1<<30) 1348 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_FIXED (2<<30) 1349 #define HDA_CONFIG_DEFAULTCONF_CONNECTIVITY_BOTH (3<<30) 1350 1351 #define HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_OUT (0<<20) 1352 #define HDA_CONFIG_DEFAULTCONF_DEVICE_SPEAKER (1<<20) 1353 #define HDA_CONFIG_DEFAULTCONF_DEVICE_HP_OUT (2<<20) 1354 #define HDA_CONFIG_DEFAULTCONF_DEVICE_CD (3<<20) 1355 #define HDA_CONFIG_DEFAULTCONF_DEVICE_SPDIF_OUT (4<<20) 1356 #define HDA_CONFIG_DEFAULTCONF_DEVICE_DIGITAL_OTHER_OUT (5<<20) 1357 #define HDA_CONFIG_DEFAULTCONF_DEVICE_MODEM_LINE (6<<20) 1358 #define HDA_CONFIG_DEFAULTCONF_DEVICE_MODEM_HANDSET (7<<20) 1359 #define HDA_CONFIG_DEFAULTCONF_DEVICE_LINE_IN (8<<20) 1360 #define HDA_CONFIG_DEFAULTCONF_DEVICE_AUX (9<<20) 1361 #define HDA_CONFIG_DEFAULTCONF_DEVICE_MIC_IN (10<<20) 1362 #define HDA_CONFIG_DEFAULTCONF_DEVICE_TELEPHONY (11<<20) 1363 #define HDA_CONFIG_DEFAULTCONF_DEVICE_SPDIF_IN (12<<20) 1364 #define HDA_CONFIG_DEFAULTCONF_DEVICE_DIGITAL_OTHER_IN (13<<20) 1365 #define HDA_CONFIG_DEFAULTCONF_DEVICE_OTHER (15<<20) 1366 1367 #endif 1368