Changeset 31084 in vbox for trunk/src/VBox/Devices/Audio
- Timestamp:
- Jul 25, 2010 3:49:20 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 64032
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevCodec.cpp
r31083 r31084 123 123 int rc; 124 124 rc = codecUnimplemented(pState, cmd, pResp); 125 *pResp |= CODEC_RESPONSE_UNSOLICITED; 125 *pResp |= CODEC_RESPONSE_UNSOLICITED; 126 126 return rc; 127 127 } … … 132 132 PCODECNODE pNode = &pState->pNodes[CODEC_NID(cmd)]; 133 133 if (STAC9220_IS_DAC_CMD(cmd)) 134 *pResp = AMPLIFIER_REGISTER(pNode->dac.B_params, 135 CODEC_B_DIRECTION(cmd), 136 CODEC_B_SIDE(cmd), 134 *pResp = AMPLIFIER_REGISTER(pNode->dac.B_params, 135 CODEC_B_DIRECTION(cmd), 136 CODEC_B_SIDE(cmd), 137 137 CODEC_B_INDEX(cmd)); 138 138 else if (STAC9220_IS_ADCVOL_CMD(cmd)) 139 *pResp = AMPLIFIER_REGISTER(pNode->adcvol.B_params, 140 CODEC_B_DIRECTION(cmd), 141 CODEC_B_SIDE(cmd), 139 *pResp = AMPLIFIER_REGISTER(pNode->adcvol.B_params, 140 CODEC_B_DIRECTION(cmd), 141 CODEC_B_SIDE(cmd), 142 142 CODEC_B_INDEX(cmd)); 143 143 else if (STAC9220_IS_ADCMUX_CMD(cmd)) 144 *pResp = AMPLIFIER_REGISTER(pNode->adcmux.B_params, 145 CODEC_B_DIRECTION(cmd), 146 CODEC_B_SIDE(cmd), 144 *pResp = AMPLIFIER_REGISTER(pNode->adcmux.B_params, 145 CODEC_B_DIRECTION(cmd), 146 CODEC_B_SIDE(cmd), 147 147 CODEC_B_INDEX(cmd)); 148 148 else { … … 159 159 *pResp = 0; 160 160 if (STAC9220_IS_DAC_CMD(cmd)) 161 pu32Bparam = &LIFIER_REGISTER(pNode->dac.B_params, 162 CODEC_B_DIRECTION(cmd), 163 CODEC_B_SIDE(cmd), 161 pu32Bparam = &LIFIER_REGISTER(pNode->dac.B_params, 162 CODEC_B_DIRECTION(cmd), 163 CODEC_B_SIDE(cmd), 164 164 CODEC_B_INDEX(cmd)); 165 165 else if (STAC9220_IS_ADCVOL_CMD(cmd)) 166 pu32Bparam = &LIFIER_REGISTER(pNode->adcvol.B_params, 167 CODEC_B_DIRECTION(cmd), 168 CODEC_B_SIDE(cmd), 166 pu32Bparam = &LIFIER_REGISTER(pNode->adcvol.B_params, 167 CODEC_B_DIRECTION(cmd), 168 CODEC_B_SIDE(cmd), 169 169 CODEC_B_INDEX(cmd)); 170 170 else if (STAC9220_IS_ADCMUX_CMD(cmd)) 171 pu32Bparam = &LIFIER_REGISTER(pNode->adcmux.B_params, 172 CODEC_B_DIRECTION(cmd), 173 CODEC_B_SIDE(cmd), 171 pu32Bparam = &LIFIER_REGISTER(pNode->adcmux.B_params, 172 CODEC_B_DIRECTION(cmd), 173 CODEC_B_SIDE(cmd), 174 174 CODEC_B_INDEX(cmd)); 175 175 Assert(pu32Bparam); … … 239 239 if (STAC9220_IS_ADC_CMD(cmd)) 240 240 { 241 pState->pNodes[CODEC_NID(cmd)].adc.u32F03_param &= ~CODEC_VERB_8BIT_DATA; 242 pState->pNodes[CODEC_NID(cmd)].adc.u32F03_param |= cmd & CODEC_VERB_8BIT_DATA; 241 pState->pNodes[CODEC_NID(cmd)].adc.u32F03_param &= ~CODEC_VERB_8BIT_DATA; 242 pState->pNodes[CODEC_NID(cmd)].adc.u32F03_param |= cmd & CODEC_VERB_8BIT_DATA; 243 243 } 244 244 *pResp = 0; … … 260 260 if (STAC9220_IS_SPDIFOUT_CMD(cmd)) 261 261 { 262 pState->pNodes[CODEC_NID(cmd)].spdifout.u32F0d_param &= ~CODEC_VERB_8BIT_DATA; 263 pState->pNodes[CODEC_NID(cmd)].spdifout.u32F0d_param |= cmd & CODEC_VERB_8BIT_DATA; 262 pState->pNodes[CODEC_NID(cmd)].spdifout.u32F0d_param &= ~CODEC_VERB_8BIT_DATA; 263 pState->pNodes[CODEC_NID(cmd)].spdifout.u32F0d_param |= cmd & CODEC_VERB_8BIT_DATA; 264 264 } 265 265 *pResp = 0; … … 272 272 if (STAC9220_IS_SPDIFOUT_CMD(cmd)) 273 273 { 274 pState->pNodes[CODEC_NID(cmd)].spdifout.u32F0d_param &= ~(CODEC_VERB_8BIT_DATA << 8); 275 pState->pNodes[CODEC_NID(cmd)].spdifout.u32F0d_param |= cmd & (CODEC_VERB_8BIT_DATA << 8); 274 pState->pNodes[CODEC_NID(cmd)].spdifout.u32F0d_param &= ~(CODEC_VERB_8BIT_DATA << 8); 275 pState->pNodes[CODEC_NID(cmd)].spdifout.u32F0d_param |= cmd & (CODEC_VERB_8BIT_DATA << 8); 276 276 } 277 277 *pResp = 0; … … 400 400 case 1: 401 401 pNode->afg.node.name = "AFG"; 402 pNode->node.au32F00_param[4] = RT_MAKE_U32_FROM_U8(0x1a, 0x00, 0x02, 0x00); 403 pNode->node.au32F00_param[5] = RT_MAKE_U32_FROM_U8(0x1, 0x01, 0x00, 0x0); 402 pNode->node.au32F00_param[4] = RT_MAKE_U32_FROM_U8(0x1a, 0x00, 0x02, 0x00); 403 pNode->node.au32F00_param[5] = RT_MAKE_U32_FROM_U8(0x1, 0x01, 0x00, 0x0); 404 404 pNode->node.au32F00_param[8] = RT_MAKE_U32_FROM_U8(0x0d, 0x0d, 0x01, 0x0); /* Capabilities */ 405 405 //pNode->node.au32F00_param[0xa] = RT_BIT(19)|RT_BIT(18)|RT_BIT(17)|RT_BIT(10)|RT_BIT(9)|RT_BIT(8)|RT_BIT(7)|RT_BIT(6)|RT_BIT(5); … … 660 660 uint32_t multFrq = CODEC_FMT_MUL_FRQ(dacFmt); 661 661 switch (baseFrq) 662 { 662 { 663 663 case 0: baseFrq = 48000; break; 664 664 case 0x1: baseFrq = 44100; break; … … 685 685 case 0x7: divFrq = 8; break; 686 686 } 687 return baseFrq * multFrq / divFrq; 687 return baseFrq * multFrq / divFrq; 688 688 } 689 689 static int codec_dac_to_aud(CODECState *pState, int dacnum, audsettings_t *paud) … … 691 691 uint32_t dacfmt = pState->pNodes[dacnum].dac.u32A_param; 692 692 paud->freq = 44100;//codecFrequencyCalculate(dacfmt); 693 paud->nchannels = 2;//CODEC_DAC_CHANELS(dacfmt); 693 paud->nchannels = 2;//CODEC_DAC_CHANELS(dacfmt); 694 694 paud->fmt = AUD_FMT_U16; 695 695 696 696 paud->endianness = 0; 697 697 return VINF_SUCCESS; … … 701 701 { 702 702 CODECState *pState = (CODECState *)opaque; 703 pState->pfnTransfer(pState, PI_INDEX, avail); 703 pState->pfnTransfer(pState, PI_INDEX, avail); 704 704 } 705 705 … … 707 707 { 708 708 CODECState *pState = (CODECState *)opaque; 709 pState->pfnTransfer(pState, PO_INDEX, avail); 709 pState->pfnTransfer(pState, PO_INDEX, avail); 710 710 } 711 711 … … 713 713 { 714 714 CODECState *pState = (CODECState *)opaque; 715 pState->pfnTransfer(pState, MC_INDEX, avail); 715 pState->pfnTransfer(pState, MC_INDEX, avail); 716 716 } 717 717 #define STAC9220_DAC_PI (0x2) … … 732 732 AUD_register_card ("ICH0", &pState->card); 733 733 734 734 735 735 codec_dac_to_aud(pState, STAC9220_DAC_PI, &as); 736 736 pState->voice_pi = AUD_open_in(&pState->card, pState->voice_pi, "hda.in", pState, pi_callback, &as);
Note:
See TracChangeset
for help on using the changeset viewer.