Changeset 31190 in vbox for trunk/src/VBox/Devices/Audio
- Timestamp:
- Jul 29, 2010 7:38:02 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 64182
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevCodec.cpp
r31188 r31190 93 93 #define STAC9220_IS_SPDIFOUT_CMD(cmd) (CODEC_NID((cmd)) == 0x8) 94 94 95 #define STAC9220_IS_DIGPIN_CMD(cmd) ( \ 96 CODEC_NID((cmd)) == 0x10 \ 97 || CODEC_NID((cmd)) == 0x11) 95 #define STAC9220_IS_DIGINPIN_CMD(cmd) (CODEC_NID((cmd)) == 0x11) 96 #define STAC9220_IS_DIGOUTPIN_CMD(cmd) (CODEC_NID((cmd)) == 0x10) 98 97 99 98 #define STAC9220_IS_CD_CMD(cmd) (CODEC_NID((cmd)) == 0x15) … … 188 187 return VINF_SUCCESS; 189 188 } 189 190 /* F01 */ 191 static int codecGetConSelectCtrl(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 192 { 193 Assert((CODEC_CAD(cmd) == pState->id)); 194 if (STAC9220_IS_ADCMUX_CMD(cmd)) 195 *pResp = pState->pNodes[CODEC_NID(cmd)].adcmux.u32F01_param; 196 else if (STAC9220_IS_DIGOUTPIN_CMD(cmd)) 197 *pResp = pState->pNodes[CODEC_NID(cmd)].digout.u32F07_param; 198 return VINF_SUCCESS; 199 } 200 201 /* 701 */ 202 static int codecSetConSelectCtrl(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 203 { 204 uint32_t *pu32Reg = NULL; 205 *pResp = 0; 206 if (STAC9220_IS_ADCMUX_CMD(cmd)) 207 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].adcmux.u32F01_param; 208 else if (STAC9220_IS_DIGOUTPIN_CMD(cmd)) 209 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].digout.u32F01_param; 210 Assert((pu32Reg)); 211 if (!pu32Reg) 212 return VINF_SUCCESS; 213 *pu32Reg = (*pu32Reg) & ~CODEC_VERB_8BIT_DATA; 214 *pu32Reg = (*pu32Reg) | (cmd & CODEC_VERB_8BIT_DATA); 215 return VINF_SUCCESS; 216 } 217 218 /* F07 */ 190 219 static int codecGetPinCtrl(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 191 220 { 192 221 if (STAC9220_IS_PORT_CMD(cmd)) 193 222 *pResp = pState->pNodes[CODEC_NID(cmd)].port.u32F07_param; 194 else if (STAC9220_IS_DIGPIN_CMD(cmd)) 223 else if (STAC9220_IS_DIGOUTPIN_CMD(cmd)) 224 *pResp = pState->pNodes[CODEC_NID(cmd)].digout.u32F07_param; 225 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 195 226 *pResp = pState->pNodes[CODEC_NID(cmd)].digin.u32F07_param; 196 227 else if (STAC9220_IS_CD_CMD(cmd)) … … 201 232 } 202 233 234 /* 707 */ 203 235 static int codecSetPinCtrl(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 204 236 { … … 207 239 if (STAC9220_IS_PORT_CMD(cmd)) 208 240 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].port.u32F07_param; 209 else if (STAC9220_IS_DIG PIN_CMD(cmd))241 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 210 242 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].digin.u32F07_param; 243 else if (STAC9220_IS_DIGOUTPIN_CMD(cmd)) 244 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].digout.u32F07_param; 211 245 else if (STAC9220_IS_CD_CMD(cmd)) 212 246 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].cdnode.u32F07_param; … … 219 253 } 220 254 255 /* F08 */ 221 256 static int codecGetUnsolicitedEnabled(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 222 257 { … … 224 259 if (STAC9220_IS_PORT_CMD(cmd)) 225 260 *pResp = pState->pNodes[CODEC_NID(cmd)].port.u32F08_param; 226 else if (STAC9220_IS_DIG PIN_CMD(cmd))261 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 227 262 *pResp = pState->pNodes[CODEC_NID(cmd)].digin.u32F08_param; 228 263 else if (STAC9220_IS_AFG_CMD(cmd)) … … 235 270 } 236 271 272 /* 708 */ 237 273 static int codecSetUnsolicitedEnabled(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 238 274 { … … 241 277 if (STAC9220_IS_PORT_CMD(cmd)) 242 278 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].port.u32F08_param; 243 else if (STAC9220_IS_DIG PIN_CMD(cmd))279 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 244 280 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].digin.u32F08_param; 245 281 else if (STAC9220_IS_AFG_CMD(cmd)) … … 255 291 } 256 292 293 /* F09 */ 257 294 static int codecGetPinSense(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 258 295 { … … 260 297 if (STAC9220_IS_PORT_CMD(cmd)) 261 298 *pResp = pState->pNodes[CODEC_NID(cmd)].port.u32F09_param; 262 else if (STAC9220_IS_DIG PIN_CMD(cmd))299 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 263 300 *pResp = pState->pNodes[CODEC_NID(cmd)].digin.u32F09_param; 264 301 else … … 266 303 return VINF_SUCCESS; 267 304 } 305 306 /* 709 */ 268 307 static int codecSetPinSense(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 269 308 { … … 272 311 if (STAC9220_IS_PORT_CMD(cmd)) 273 312 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].port.u32F08_param; 274 else if (STAC9220_IS_DIG PIN_CMD(cmd))313 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 275 314 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].digin.u32F08_param; 276 315 Assert(pu32Reg); … … 372 411 } 373 412 413 /* F05 */ 374 414 static int codecGetPowerState(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 375 415 { … … 377 417 *pResp = 0; 378 418 if (STAC9220_IS_AFG_CMD(cmd)) 379 {380 419 *pResp = pState->pNodes[CODEC_NID(cmd)].afg.u32F05_param; 381 }382 420 else if (STAC9220_IS_DAC_CMD(cmd)) 383 {384 421 *pResp = pState->pNodes[CODEC_NID(cmd)].dac.u32F05_param; 385 } 386 else if (STAC9220_IS_DIGPIN_CMD(cmd)) 387 { 422 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 388 423 *pResp = pState->pNodes[CODEC_NID(cmd)].digin.u32F05_param; 389 }390 424 else if (STAC9220_IS_ADC_CMD(cmd)) 391 {392 425 *pResp = pState->pNodes[CODEC_NID(cmd)].adc.u32F05_param; 393 }394 return VINF_SUCCESS; 395 } 396 426 return VINF_SUCCESS; 427 } 428 429 /* 705 */ 397 430 static int codecSetPowerState(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 398 431 { … … 401 434 *pResp = 0; 402 435 if (STAC9220_IS_AFG_CMD(cmd)) 403 {404 436 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].afg.u32F05_param; 405 }406 437 else if (STAC9220_IS_DAC_CMD(cmd)) 407 {408 438 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].dac.u32F05_param; 409 } 410 else if (STAC9220_IS_DIGPIN_CMD(cmd)) 411 { 439 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 412 440 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].digin.u32F05_param; 413 }414 441 else if (STAC9220_IS_ADC_CMD(cmd)) 415 {416 442 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].adc.u32F05_param; 417 }418 443 Assert((pu32Reg)); 419 444 if (!pu32Reg) … … 490 515 } 491 516 517 /* F0C */ 492 518 static int codecGetEAPD_BTLEnabled(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 493 519 { … … 497 523 else if (STAC9220_IS_DAC_CMD(cmd)) 498 524 *pResp = pState->pNodes[CODEC_NID(cmd)].dac.u32F0c_param; 499 else if (STAC9220_IS_DIG PIN_CMD(cmd))525 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 500 526 *pResp = pState->pNodes[CODEC_NID(cmd)].digin.u32F0c_param; 501 527 *pResp = 0; … … 503 529 } 504 530 531 /* 70C */ 505 532 static int codecSetEAPD_BTLEnabled(struct CODECState *pState, uint32_t cmd, uint64_t *pResp) 506 533 { … … 512 539 else if (STAC9220_IS_DAC_CMD(cmd)) 513 540 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].dac.u32F0c_param; 514 else if (STAC9220_IS_DIG PIN_CMD(cmd))541 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 515 542 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].digin.u32F0c_param; 516 543 *pResp = 0; … … 559 586 if (STAC9220_IS_PORT_CMD(cmd)) 560 587 *pResp = pState->pNodes[CODEC_NID(cmd)].port.u32F1c_param; 561 else if (STAC9220_IS_DIGPIN_CMD(cmd)) 562 *pResp = pState->pNodes[CODEC_NID(cmd)].digin.u32F1c_param; 588 else if (STAC9220_IS_DIGOUTPIN_CMD(cmd)) 589 *pResp = pState->pNodes[CODEC_NID(cmd)].digout.u32F1c_param; 590 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 591 *pResp = pState->pNodes[CODEC_NID(cmd)].digout.u32F1c_param; 563 592 else if (STAC9220_IS_CD_CMD(cmd)) 564 *pResp = pState->pNodes[CODEC_NID(cmd)]. digin.u32F1c_param;593 *pResp = pState->pNodes[CODEC_NID(cmd)].cdnode.u32F1c_param; 565 594 return VINF_SUCCESS; 566 595 } … … 571 600 if (STAC9220_IS_PORT_CMD(cmd)) 572 601 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].port.u32F1c_param; 573 else if (STAC9220_IS_DIGPIN_CMD(cmd)) 574 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].port.u32F1c_param; 602 else if (STAC9220_IS_DIGINPIN_CMD(cmd)) 603 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].digin.u32F1c_param; 604 else if (STAC9220_IS_DIGOUTPIN_CMD(cmd)) 605 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].digout.u32F1c_param; 575 606 else if (STAC9220_IS_CD_CMD(cmd)) 576 607 pu32Reg = &pState->pNodes[CODEC_NID(cmd)].cdnode.u32F1c_param; … … 834 865 /* ----------- -------------------- ----------------------- */ 835 866 {0x000F0000, CODEC_VERB_8BIT_CMD , codecGetParameter }, 836 {0x000A0000, CODEC_VERB_16BIT_CMD, codecGetConverterFormat }, 837 {0x00020000, CODEC_VERB_16BIT_CMD, codecSetConverterFormat }, 838 {0x000B0000, CODEC_VERB_16BIT_CMD, codecGetAmplifier }, 839 {0x00030000, CODEC_VERB_16BIT_CMD, codecSetAmplifier }, 867 {0x000F0100, CODEC_VERB_8BIT_CMD , codecGetConSelectCtrl }, 868 {0x00070100, CODEC_VERB_8BIT_CMD , codecSetConSelectCtrl }, 869 {0x000F0600, CODEC_VERB_8BIT_CMD , codecGetStreamId }, 840 870 {0x00070600, CODEC_VERB_8BIT_CMD , codecSetStreamId }, 841 {0x000F0600, CODEC_VERB_8BIT_CMD , codecGetStreamId },842 871 {0x000F0700, CODEC_VERB_8BIT_CMD , codecGetPinCtrl }, 843 872 {0x00070700, CODEC_VERB_8BIT_CMD , codecSetPinCtrl }, … … 865 894 {0x00071E00, CODEC_VERB_8BIT_CMD , codecSetConfig2 }, 866 895 {0x00071F00, CODEC_VERB_8BIT_CMD , codecSetConfig3 }, 896 {0x000A0000, CODEC_VERB_16BIT_CMD, codecGetConverterFormat }, 897 {0x00020000, CODEC_VERB_16BIT_CMD, codecSetConverterFormat }, 898 {0x000B0000, CODEC_VERB_16BIT_CMD, codecGetAmplifier }, 899 {0x00030000, CODEC_VERB_16BIT_CMD, codecSetAmplifier }, 867 900 }; 868 901
Note:
See TracChangeset
for help on using the changeset viewer.