Changeset 33705 in vbox
- Timestamp:
- Nov 2, 2010 6:33:41 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/src/VBox/Devices/Audio/DevCodec.cpp (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevCodec.cpp
r33681 r33705 73 73 #define CODEC_SET_AMP_IS_RIGHT_SIDE(cmd) (((cmd) & CODEC_VERB_SET_AMP_RIGHT_SIDE) != 0) 74 74 #define CODEC_SET_AMP_INDEX(cmd) (((cmd) & CODEC_VERB_SET_AMP_INDEX) >> 7) 75 76 /* HDA spec 7.3.3.31 defines layout of configuration registers/verbs (0xF1C) */ 77 /* Configuration's port connection */ 78 #define CODEC_DEFAULT_CONF_PORT_MASK (0x3) 79 #define CODEC_DEFAULT_CONF_PORT_SHIFT (30) 80 81 #define CODEC_DEFAULT_CONF_PORT_COMPLEX (0x0) 82 #define CODEC_DEFAULT_CONF_PORT_NO_PHYS (0x1) 83 #define CODEC_DEFAULT_CONF_PORT_FIXED (0x2) 84 #define CODEC_DEFAULT_CONF_BOTH (0x3) 85 86 /* Configuration's location */ 87 #define CODEC_DEFAULT_CONF_LOCATION_MASK (0x3F) 88 #define CODEC_DEFAULT_CONF_LOCATION_SHIFT (24) 89 /* [4:5] bits of location region means chassis attachment */ 90 #define CODEC_DEFAULT_CONF_LOCATION_PRIMARY_CHASSIS (0) 91 #define CODEC_DEFAULT_CONF_LOCATION_INTERNAL RT_BIT(4) 92 #define CODEC_DEFAULT_CONF_LOCATION_SECONDRARY_CHASSIS RT_BIT(5) 93 #define CODEC_DEFAULT_CONF_LOCATION_OTHER (RT_BIT(5)) 94 95 /* [0:3] bits of location region means geometry location attachment */ 96 #define CODEC_DEFAULT_CONF_LOCATION_NA (0) 97 #define CODEC_DEFAULT_CONF_LOCATION_REAR (0x1) 98 #define CODEC_DEFAULT_CONF_LOCATION_FRONT (0x2) 99 #define CODEC_DEFAULT_CONF_LOCATION_LEFT (0x3) 100 #define CODEC_DEFAULT_CONF_LOCATION_RIGTH (0x4) 101 #define CODEC_DEFAULT_CONF_LOCATION_TOP (0x5) 102 #define CODEC_DEFAULT_CONF_LOCATION_BOTTOM (0x6) 103 #define CODEC_DEFAULT_CONF_LOCATION_SPECIAL_0 (0x7) 104 #define CODEC_DEFAULT_CONF_LOCATION_SPECIAL_1 (0x8) 105 #define CODEC_DEFAULT_CONF_LOCATION_SPECIAL_3 (0x9) 106 107 /* Configuration's devices */ 108 #define CODEC_DEFAULT_CONF_DEVICE_MASK (0xF) 109 #define CODEC_DEFAULT_CONF_DEVICE_SHIFT (20) 110 #define CODEC_DEFAULT_CONF_DEVICE_LINE_OUT (0) 111 #define CODEC_DEFAULT_CONF_DEVICE_SPEAKER (0x1) 112 #define CODEC_DEFAULT_CONF_DEVICE_HP (0x2) 113 #define CODEC_DEFAULT_CONF_DEVICE_CD (0x3) 114 #define CODEC_DEFAULT_CONF_DEVICE_SPDIF_OUT (0x4) 115 #define CODEC_DEFAULT_CONF_DEVICE_DIGITAL_OTHER_OUT (0x5) 116 #define CODEC_DEFAULT_CONF_DEVICE_MODEM_LINE_SIDE (0x6) 117 #define CODEC_DEFAULT_CONF_DEVICE_MODEM_HANDSET_SIDE (0x7) 118 #define CODEC_DEFAULT_CONF_DEVICE_LINE_IN (0x8) 119 #define CODEC_DEFAULT_CONF_DEVICE_AUX (0x9) 120 #define CODEC_DEFAULT_CONF_DEVICE_MIC (0xA) 121 #define CODEC_DEFAULT_CONF_DEVICE_PHONE (0xB) 122 #define CODEC_DEFAULT_CONF_DEVICE_SPDIF_IN (0xC) 123 #define CODEC_DEFAULT_CONF_DEVICE_RESERVED (0xE) 124 #define CODEC_DEFAULT_CONF_DEVICE_OTHER (0xF) 125 126 /* Configuration's Connection type */ 127 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_MASK (0xF) 128 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_SHIFT (16) 129 130 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_UNKNOWN (0) 131 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_1_8INCHES (0x1) 132 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_1_4INCHES (0x2) 133 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_ATAPI (0x3) 134 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_RCA (0x4) 135 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_OPTICAL (0x5) 136 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_OTHER_DIGITAL (0x6) 137 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_ANALOG (0x7) 138 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_DIN (0x8) 139 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_XLR (0x9) 140 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_RJ_11 (0xA) 141 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_COMBO (0xB) 142 #define CODEC_DEFAULT_CONF_CONNECTION_TYPE_OTHER (0xF) 143 144 /* Configuration's color */ 145 #define CODEC_DEFAULT_CONF_COLOR_MASK (0xF) 146 #define CODEC_DEFAULT_CONF_COLOR_SHIFT (12) 147 #define CODEC_DEFAULT_CONF_COLOR_UNKNOWN (0) 148 #define CODEC_DEFAULT_CONF_COLOR_BLACK (0x1) 149 #define CODEC_DEFAULT_CONF_COLOR_GREY (0x2) 150 #define CODEC_DEFAULT_CONF_COLOR_BLUE (0x3) 151 #define CODEC_DEFAULT_CONF_COLOR_GREEN (0x4) 152 #define CODEC_DEFAULT_CONF_COLOR_RED (0x5) 153 #define CODEC_DEFAULT_CONF_COLOR_ORANGE (0x6) 154 #define CODEC_DEFAULT_CONF_COLOR_YELLOW (0x7) 155 #define CODEC_DEFAULT_CONF_COLOR_PURPLE (0x8) 156 #define CODEC_DEFAULT_CONF_COLOR_PINK (0x9) 157 #define CODEC_DEFAULT_CONF_COLOR_RESERVED_0 (0xA) 158 #define CODEC_DEFAULT_CONF_COLOR_RESERVED_1 (0xB) 159 #define CODEC_DEFAULT_CONF_COLOR_RESERVED_2 (0xC) 160 #define CODEC_DEFAULT_CONF_COLOR_RESERVED_3 (0xD) 161 #define CODEC_DEFAULT_CONF_COLOR_WHITE (0xE) 162 #define CODEC_DEFAULT_CONF_COLOR_OTHER (0xF) 163 164 /* Configuration's misc */ 165 #define CODEC_DEFAULT_CONF_MISC_MASK (0xF) 166 #define CODEC_DEFAULT_CONF_MISC_SHIFT (8) 167 #define CODEC_DEFAULT_CONF_MISC_JACK_DETECT RT_BIT(0) 168 #define CODEC_DEFAULT_CONF_MISC_RESERVED_0 RT_BIT(1) 169 #define CODEC_DEFAULT_CONF_MISC_RESERVED_1 RT_BIT(2) 170 #define CODEC_DEFAULT_CONF_MISC_RESERVED_2 RT_BIT(3) 171 172 /* Configuration's association */ 173 #define CODEC_DEFAULT_CONF_ASSOCIATION_MASK (0xF) 174 #define CODEC_DEFAULT_CONF_ASSOCIATION_SHIFT (4) 175 /* Connection's sequence */ 176 #define CODEC_DEFAULT_CONF_SEQ_MASK (0xF) 177 #define CODEC_DEFAULT_CONF_SEQ_SHIFT (0) 178 179 /* macro definition helping in filling the configuration registers. */ 180 #define CODEC_MAKE_U32_DEFAULT_CONF(port_connectivity, location, device, connection_type, color, misc, association, sequence) \ 181 ( ((port_connectivity) << CODEC_DEFAULT_CONF_PORT_SHIFT) \ 182 | ((location) << CODEC_DEFAULT_CONF_LOCATION_SHIFT) \ 183 | ((device) << CODEC_DEFAULT_CONF_DEVICE_SHIFT) \ 184 | ((connection_type) << CODEC_DEFAULT_CONF_CONNECTION_TYPE_SHIFT) \ 185 | ((color) << CODEC_DEFAULT_CONF_COLOR_SHIFT) \ 186 | ((misc) << CODEC_DEFAULT_CONF_MISC_SHIFT) \ 187 | ((association) << CODEC_DEFAULT_CONF_ASSOCIATION_SHIFT) \ 188 | ((sequence))) 75 189 76 190 /* STAC9220 */ … … 215 329 pNode->port.u32F08_param = 0; 216 330 if (!pState->fInReset) 217 pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x20, 0x40, 0x21, 0x02); 331 pNode->port.u32F1c_param = CODEC_MAKE_U32_DEFAULT_CONF(CODEC_DEFAULT_CONF_PORT_COMPLEX, 332 CODEC_DEFAULT_CONF_LOCATION_FRONT, 333 CODEC_DEFAULT_CONF_DEVICE_HP, 334 CODEC_DEFAULT_CONF_CONNECTION_TYPE_1_8INCHES, 335 CODEC_DEFAULT_CONF_COLOR_GREEN, 336 CODEC_DEFAULT_CONF_MISC_JACK_DETECT, 337 0x2, 0);//RT_MAKE_U32_FROM_U8(0x20, 0x40, 0x21, 0x02); 218 338 goto port_init; 219 339 case 0xB: … … 223 343 pNode->port.u32F07_param = RT_BIT(5); 224 344 if (!pState->fInReset) 225 pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x11, 0x60, 0x11, 0x01); 345 pNode->port.u32F1c_param = CODEC_MAKE_U32_DEFAULT_CONF(CODEC_DEFAULT_CONF_PORT_COMPLEX, 346 CODEC_DEFAULT_CONF_LOCATION_INTERNAL|CODEC_DEFAULT_CONF_LOCATION_REAR, 347 CODEC_DEFAULT_CONF_DEVICE_SPEAKER, 348 CODEC_DEFAULT_CONF_CONNECTION_TYPE_1_8INCHES, 349 CODEC_DEFAULT_CONF_COLOR_BLACK, 350 CODEC_DEFAULT_CONF_MISC_JACK_DETECT, 351 0x1, 0x1);//RT_MAKE_U32_FROM_U8(0x11, 0x60, 0x11, 0x01); 226 352 goto port_init; 227 353 case 0xC: … … 231 357 pNode->port.u32F07_param = RT_BIT(5); 232 358 if (!pState->fInReset) 233 pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x10, 0x40, 0x11, 0x01); 359 pNode->port.u32F1c_param = CODEC_MAKE_U32_DEFAULT_CONF(CODEC_DEFAULT_CONF_PORT_COMPLEX, 360 CODEC_DEFAULT_CONF_LOCATION_REAR, 361 CODEC_DEFAULT_CONF_DEVICE_SPEAKER, 362 CODEC_DEFAULT_CONF_CONNECTION_TYPE_1_8INCHES, 363 CODEC_DEFAULT_CONF_COLOR_GREEN, 364 0x0, 0x1, 0x0);//RT_MAKE_U32_FROM_U8(0x10, 0x40, 0x11, 0x01); 234 365 goto port_init; 235 366 case 0xD: … … 239 370 pNode->node.au32F02_param[0] = 0x2; 240 371 if (!pState->fInReset) 241 pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x50, 0x90, 0xA1, 0x02); /* Microphone */ 372 pNode->port.u32F1c_param = CODEC_MAKE_U32_DEFAULT_CONF(CODEC_DEFAULT_CONF_PORT_COMPLEX, 373 CODEC_DEFAULT_CONF_LOCATION_FRONT, 374 CODEC_DEFAULT_CONF_DEVICE_MIC, 375 CODEC_DEFAULT_CONF_CONNECTION_TYPE_1_8INCHES, 376 CODEC_DEFAULT_CONF_COLOR_PINK, 377 0x0, 0x5, 0x0);//RT_MAKE_U32_FROM_U8(0x50, 0x90, 0xA1, 0x02); /* Microphone */ 242 378 port_init: 243 379 pNode->port.u32F09_param = RT_BIT(31)|0x7fffffff; … … 254 390 pNode->port.u32F09_param = 0x7fffffff; 255 391 if (!pState->fInReset) 256 pNode->port.u32F1c_param = 0x01013040; /* Line Out */ 392 pNode->port.u32F1c_param = CODEC_MAKE_U32_DEFAULT_CONF(CODEC_DEFAULT_CONF_PORT_COMPLEX, 393 CODEC_DEFAULT_CONF_LOCATION_REAR, 394 CODEC_DEFAULT_CONF_DEVICE_LINE_OUT, 395 CODEC_DEFAULT_CONF_CONNECTION_TYPE_1_8INCHES, 396 CODEC_DEFAULT_CONF_COLOR_BLUE, 397 0x0, 0x4, 0x0);//0x01013040; /* Line Out */ 257 398 break; 258 399 case 0xF: … … 264 405 pNode->port.u32F07_param = 0x40; 265 406 if (!pState->fInReset) 266 pNode->port.u32F1c_param = RT_MAKE_U32_FROM_U8(0x12, 0x60, 0x11, 0x01); 407 pNode->port.u32F1c_param = CODEC_MAKE_U32_DEFAULT_CONF(CODEC_DEFAULT_CONF_PORT_COMPLEX, 408 CODEC_DEFAULT_CONF_LOCATION_REAR, 409 CODEC_DEFAULT_CONF_DEVICE_SPEAKER, 410 CODEC_DEFAULT_CONF_CONNECTION_TYPE_1_8INCHES, 411 CODEC_DEFAULT_CONF_COLOR_ORANGE, 412 0x0, 0x1, 0x2);//RT_MAKE_U32_FROM_U8(0x12, 0x60, 0x11, 0x01); 267 413 pNode->node.au32F02_param[0] = 0x5; 268 414 pNode->port.u32F09_param = 0x7fffffff; … … 274 420 pNode->node.au32F00_param[0xE] = 0x3; 275 421 pNode->digout.u32F01_param = 0; 276 /* STAC9220 spec defines default connection list containing reserved nodes, that confuses some drivers. */277 422 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x08, 0x17, 0x19, 0); 278 423 pNode->digout.u32F07_param = 0;
Note:
See TracChangeset
for help on using the changeset viewer.

