- Timestamp:
- Oct 29, 2012 3:38:37 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 81705
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevIchIntelHDA.cpp
r42431 r43770 74 74 #define ICH6_HDA_REG_GCAP 0 /* range 0x00-0x01*/ 75 75 #define GCAP(pState) (HDA_REG((pState), GCAP)) 76 /* GCAP HDASpec 3.3.2 This macro compact following information about HDA76 /* GCAP HDASpec 3.3.2 This macro encodes the following information about HDA in a compact manner: 77 77 * oss (15:12) - number of output streams supported 78 * iss (11:8) - number of input streams supported79 * bss (7:3) - number of bidirectionstreams suppoted80 * bds (2:1) - number of serial data out signals supported81 * b64sup (0) - 64 bit addressing supported.78 * iss (11:8) - number of input streams supported 79 * bss (7:3) - number of bidirectional streams suppoted 80 * bds (2:1) - number of serial data out signals supported 81 * b64sup (0) - 64 bit addressing supported. 82 82 */ 83 83 #define HDA_MAKE_GCAP(oss, iss, bss, bds, b64sup) \ … … 354 354 * Other values not listed are not supported. 355 355 */ 356 #define HDA_SDONFIFO_16B (0x F) /* 8-, 16-, 20-, 24-, 32-bit Output Streams */356 #define HDA_SDONFIFO_16B (0x0F) /* 8-, 16-, 20-, 24-, 32-bit Output Streams */ 357 357 #define HDA_SDONFIFO_32B (0x1F) /* 8-, 16-, 20-, 24-, 32-bit Output Streams */ 358 358 #define HDA_SDONFIFO_64B (0x3F) /* 8-, 16-, 20-, 24-, 32-bit Output Streams */ … … 481 481 uint64_t u64RIRBBase; 482 482 uint64_t u64DPBase; 483 /* pointer onCORB buf */483 /* pointer to CORB buf */ 484 484 uint32_t *pu32CorbBuf; 485 485 /* size in bytes of CORB buf */ … … 939 939 *pStreamDesc->pu32Lpib = 0; 940 940 *pStreamDesc->pu32Sts = 0; 941 /* According to ICH6 datasheet, 0x40000 isdefault value for stream descriptor register 23:20941 /* According to the ICH6 datasheet, 0x40000 is the default value for stream descriptor register 23:20 942 942 * bits are reserved for stream number 18.2.33, resets SDnCTL except SRCT bit */ 943 943 HDA_STREAM_REG2(pState, CTL, u8Strm) = 0x40000 | (HDA_STREAM_REG2(pState, CTL, u8Strm) & HDA_REG_FIELD_FLAG_MASK(SDCTL, SRST)); … … 1046 1046 /* Flush: GSTS:1 set, see 6.2.6*/ 1047 1047 GSTS(pState) |= HDA_REG_FIELD_FLAG_MASK(GSTS, FSH); /* set the flush state */ 1048 /* DPLBASE and DPUBASE ,should be initialized with initial value (see 6.2.6)*/1048 /* DPLBASE and DPUBASE should be initialized with initial value (see 6.2.6)*/ 1049 1049 } 1050 1050 return VINF_SUCCESS; … … 1155 1155 */ 1156 1156 Assert((!fReset)); 1157 Log(("hda: guest initiate exit of stream reset.\n"));1157 Log(("hda: guest initiated exit of stream reset.\n")); 1158 1158 goto done; 1159 1159 } … … 1181 1181 goto done; 1182 1182 } 1183 Log(("hda: guest initiate enter to stream reset.\n"));1183 Log(("hda: guest initiated enter to stream reset.\n")); 1184 1184 hdaInitTransferDescriptor(pState, pBdle, u8Strm, &stStreamDesc); 1185 1185 hdaStreamReset(pState, pBdle, &stStreamDesc, u8Strm); … … 1273 1273 1274 1274 case HDA_SDONFIFO_256B: 1275 Log(("hda: 256 bit is unsupported, HDA is switched into 192Bmode\n"));1275 Log(("hda: 256-bit is unsupported, HDA is switched into 192-bit mode\n")); 1276 1276 default: 1277 1277 return hdaRegWriteU16(pState, offset, index, HDA_SDONFIFO_192B); … … 1279 1279 return VINF_SUCCESS; 1280 1280 default: 1281 AssertMsgFailed(("Something w ierd happenswith register lookup routine"));1281 AssertMsgFailed(("Something weird happened with register lookup routine")); 1282 1282 } 1283 1283 return VINF_SUCCESS; … … 1316 1316 { 1317 1317 case 0: 1318 Log(("hda: %s requested 8 1318 Log(("hda: %s requested 8-bit\n", __FUNCTION__)); 1319 1319 pAudSetting->fmt = AUD_FMT_S8; 1320 1320 break; 1321 1321 case 1: 1322 Log(("hda: %s requested 16 1322 Log(("hda: %s requested 16-bit\n", __FUNCTION__)); 1323 1323 pAudSetting->fmt = AUD_FMT_S16; 1324 1324 break; 1325 1325 case 2: 1326 Log(("hda: %s requested 20 1326 Log(("hda: %s requested 20-bit\n", __FUNCTION__)); 1327 1327 break; 1328 1328 case 3: 1329 Log(("hda: %s requested 24 1329 Log(("hda: %s requested 24-bit\n", __FUNCTION__)); 1330 1330 break; 1331 1331 case 4: 1332 Log(("hda: %s requested 32 1332 Log(("hda: %s requested 32-bit\n", __FUNCTION__)); 1333 1333 pAudSetting->fmt = AUD_FMT_S32; 1334 1334 break; … … 1345 1345 { 1346 1346 #ifdef VBOX_WITH_HDA_CODEC_EMU 1347 /* @todo here some more investigations are required. */1347 /* @todo a bit more investigation is required here. */ 1348 1348 int rc = 0; 1349 1349 audsettings_t as; … … 1404 1404 PFNCODECVERBPROCESSOR pfn = (PFNCODECVERBPROCESSOR)NULL; 1405 1405 /* 1406 * if guest set ICB bit of IRS register HDA should process verb in IC register and1407 * write s response in IR register and setIRV (valid in case of success) bit of IRS register.1406 * if guest set the ICB bit of IRS register, HDA should process the verb in IC register, 1407 * write the response to IR register, and set the IRV (valid in case of success) bit of IRS register. 1408 1408 */ 1409 1409 if ( u32Value & HDA_REG_FIELD_FLAG_MASK(IRS, ICB) … … 1414 1414 { 1415 1415 /* 1416 * 3.4.3 defines behavio ur of immediate Command status register.1416 * 3.4.3 defines behavior of immediate Command status register. 1417 1417 */ 1418 LogRel(("hda: guest has tried process immediate verb (%x) with active CORB\n", cmd));1418 LogRel(("hda: guest attempted process immediate verb (%x) with active CORB\n", cmd)); 1419 1419 return rc; 1420 1420 } … … 1434 1434 } 1435 1435 /* 1436 * when guest's read the responseit should clean the IRV bit of the IRS register.1436 * Once the guest read the response, it should clean the IRV bit of the IRS register. 1437 1437 */ 1438 1438 if ( u32Value & HDA_REG_FIELD_FLAG_MASK(IRS, IRV) … … 1448 1448 RIRBWP(pState) = 0; 1449 1449 } 1450 /* The rest ofbits are O, see 6.2.22 */1450 /* The remaining bits are O, see 6.2.22 */ 1451 1451 return VINF_SUCCESS; 1452 1452 } … … 1550 1550 uint32_t cb2Copy; 1551 1551 /* 1552 * Amounts of bytes depends oncurrent position in buffer (u32BdleCviLen-u32BdleCviPos)1552 * Number of bytes depends on the current position in buffer (u32BdleCviLen-u32BdleCviPos) 1553 1553 */ 1554 1554 Assert((pBdle->u32BdleCviLen >= pBdle->u32BdleCviPos)); /* sanity */ … … 1560 1560 Assert((u32SoundBackendBufferBytesAvail > 0)); 1561 1561 1562 /* sanity check to avoid overriding sound backendbuffer */1562 /* sanity check to avoid overriding the backend audio buffer */ 1563 1563 cb2Copy = RT_MIN(cb2Copy, u32SoundBackendBufferBytesAvail); 1564 1564 cb2Copy = RT_MIN(cb2Copy, u32CblLimit); … … 1566 1566 if (cb2Copy <= pBdle->cbUnderFifoW) 1567 1567 return 0; 1568 cb2Copy -= pBdle->cbUnderFifoW; /* forc ely reserve amount of ureported bytes to copy */1568 cb2Copy -= pBdle->cbUnderFifoW; /* forcibly reserve the amount of unreported bytes to copy */ 1569 1569 return cb2Copy; 1570 1570 } … … 1576 1576 Assert((cbCopied)); 1577 1577 Assert((pu32BackendBufferCapacity && *pu32BackendBufferCapacity)); 1578 /* Assertion!!! It was copied less than cbUnderFifoW1579 * Probably we need to move the buffer, but it rather hard to imaginesituation1580 * wh y it mayhappen.1578 /* Assertion!!! Fewer than cbUnderFifoW bytes were copied. 1579 * Probably we need to move the buffer, but it is rather hard to imagine a situation 1580 * where it might happen. 1581 1581 */ 1582 Assert((cbCopied == pBdle->cbUnderFifoW + cbArranged2Copy)); /* we assume that we write whole buffer including notreported bytes */1582 Assert((cbCopied == pBdle->cbUnderFifoW + cbArranged2Copy)); /* we assume that we write the entire buffer including unreported bytes */ 1583 1583 if ( pBdle->cbUnderFifoW 1584 1584 && pBdle->cbUnderFifoW <= cbCopied) … … 1586 1586 1587 1587 pBdle->cbUnderFifoW -= RT_MIN(pBdle->cbUnderFifoW, cbCopied); 1588 Assert((!pBdle->cbUnderFifoW)); /* Assert!!! Assumption failed*/1589 1590 /* We always increment position on DMA buffer counter because we're always reading tointermediate buffer */1588 Assert((!pBdle->cbUnderFifoW)); /* Assert!!! Incorrect assumption */ 1589 1590 /* We always increment the position of DMA buffer counter because we're always reading into an intermediate buffer */ 1591 1591 pBdle->u32BdleCviPos += cbArranged2Copy; 1592 1592 1593 1593 Assert((pBdle->u32BdleCviLen >= pBdle->u32BdleCviPos && *pu32BackendBufferCapacity >= cbCopied)); /* sanity */ 1594 /* We report s all bytes (including unreported previously) */1594 /* We report all bytes (including previously unreported bytes) */ 1595 1595 *pu32DMACursor += cbCopied; 1596 /* reducing backend counter on amount of bytes we copied tobackend */1596 /* Decrease the backend counter by the number of bytes we copied to the backend */ 1597 1597 *pu32BackendBufferCapacity -= cbCopied; 1598 1598 Log(("hda:hdaBackendWriteTransferReported: CVI(pos:%d, len:%d), pu32DMACursor: %d, pu32BackendBufferCapacity:%d\n", … … 1617 1617 pBdle->u32BdleCviPos += cbCopied; 1618 1618 pBdle->cbUnderFifoW += cbCopied; 1619 /* In case of read transaction we're always coping frombackend buffer */1619 /* In case of a read transaction we're always copying from the backend buffer */ 1620 1620 if (pu32BackendBufferCapacity) 1621 1621 *pu32BackendBufferCapacity -= cbCopied; … … 1649 1649 { 1650 1650 /* 1651 * if we're under FIFO Watermarkit's expected that HDA doesn't fetch anything.1651 * if we're below the FIFO Watermark, it's expected that HDA doesn't fetch anything. 1652 1652 * (ICH6 datasheet 18.2.38) 1653 1653 */ … … 1657 1657 1658 1658 /* 1659 * Assert. Overlapping of buffer counter shouldn't happen.1659 * Assert. The buffer counters should never overlap. 1660 1660 */ 1661 1661 Assert((*pStreamDesc->pu32Lpib <= pStreamDesc->u32Cbl)); … … 1678 1678 * @todo - more carefully investigate BCIS flag. 1679 1679 * Speech synthesis works fine on Mac Guest if this bit isn't set 1680 * but in general sound quality becomes lesser.1680 * but in general sound quality gets worse. 1681 1681 */ 1682 1682 *pStreamDesc->pu32Sts |= HDA_REG_FIELD_FLAG_MASK(SDSTS, BCIS); … … 1694 1694 1695 1695 /* 1696 * hdaReadAudio - copies samples from Qemu Sound back-end to DMA.1697 * Note: this function writes immediately to DMA buffer, but "reports bytes" when all conditions meet (FIFOW)1696 * hdaReadAudio - copies samples from audio backend to DMA. 1697 * Note: this function writes to the DMA buffer immediately, but "reports bytes" when all conditions are met (FIFOW) 1698 1698 */ 1699 1699 static uint32_t hdaReadAudio(INTELHDLinkState *pState, PHDASTREAMTRANSFERDESC pStreamDesc, uint32_t *pu32Avail, bool *fStop, uint32_t u32CblLimit) 1700 1700 { 1701 1701 PHDABDLEDESC pBdle = &pState->stInBdle; 1702 uint32_t cbTransfer ed = 0;1702 uint32_t cbTransferred = 0; 1703 1703 uint32_t cb2Copy = 0; 1704 1704 uint32_t cbBackendCopy = 0; … … 1716 1716 1717 1717 /* 1718 * read from backend input line to last ureported position or at the begining.1718 * read from backend input line to the last unreported position or at the begining. 1719 1719 */ 1720 1720 cbBackendCopy = AUD_read (pState->Codec.SwVoiceIn, pBdle->au8HdaBuffer, cb2Copy); 1721 1721 /* 1722 * write on the HDA DMA1722 * write the HDA DMA buffer 1723 1723 */ 1724 1724 PDMDevHlpPhysWrite(ICH6_HDASTATE_2_DEVINS(pState), pBdle->u64BdleCviAddr + pBdle->u32BdleCviPos, pBdle->au8HdaBuffer, cbBackendCopy); 1725 1725 1726 /* Don't see reasons why cb2Copy could differ from cbBackendCopy */1726 /* Don't see any reason why cb2Copy would differ from cbBackendCopy */ 1727 1727 Assert((cbBackendCopy == cb2Copy && (*pu32Avail) >= cb2Copy)); /* sanity */ 1728 1728 1729 1729 if (pBdle->cbUnderFifoW + cbBackendCopy > hdaFifoWToSz(pState, 0)) 1730 hdaBackendReadTransferReported(pBdle, cb2Copy, cbBackendCopy, &cbTransfer ed, pu32Avail);1730 hdaBackendReadTransferReported(pBdle, cb2Copy, cbBackendCopy, &cbTransferred, pu32Avail); 1731 1731 else 1732 1732 { … … 1735 1735 } 1736 1736 done: 1737 Assert((cbTransfer ed <= (SDFIFOS(pState, 0) + 1)));1738 Log(("hda:ra: CVI(pos:%d, len:%d) cbTransfer ed: %d\n", pBdle->u32BdleCviPos, pBdle->u32BdleCviLen, cbTransfered));1739 return cbTransfer ed;1737 Assert((cbTransferred <= (SDFIFOS(pState, 0) + 1))); 1738 Log(("hda:ra: CVI(pos:%d, len:%d) cbTransferred: %d\n", pBdle->u32BdleCviPos, pBdle->u32BdleCviLen, cbTransferred)); 1739 return cbTransferred; 1740 1740 } 1741 1741 … … 1743 1743 { 1744 1744 PHDABDLEDESC pBdle = &pState->stOutBdle; 1745 uint32_t cbTransfer ed = 0;1745 uint32_t cbTransferred = 0; 1746 1746 uint32_t cb2Copy = 0; /* local byte counter (on local buffer) */ 1747 1747 uint32_t cbBackendCopy = 0; /* local byte counter, how many bytes copied to backend */ … … 1752 1752 1753 1753 /* 1754 * Copy from DMA to the corresponding hdaBuffer (if there exists some bytes from the previous not reported transfer we write to ''pBdle->cbUnderFifoW'' offset)1754 * Copy from DMA to the corresponding hdaBuffer (if there are any bytes from the previous unreported transfer we write at offset ''pBdle->cbUnderFifoW'') 1755 1755 */ 1756 1756 if (!cb2Copy) … … 1762 1762 PDMDevHlpPhysRead(ICH6_HDASTATE_2_DEVINS(pState), pBdle->u64BdleCviAddr + pBdle->u32BdleCviPos, pBdle->au8HdaBuffer + pBdle->cbUnderFifoW, cb2Copy); 1763 1763 /* 1764 * Write to audio backend. we should be sure whether we have enought bytes to copy to Audiobackend.1764 * Write to audio backend. we should ensure that we have enough bytes to copy to the backend. 1765 1765 */ 1766 1766 if (cb2Copy + pBdle->cbUnderFifoW >= hdaFifoWToSz(pState, pStreamDesc)) 1767 1767 { 1768 1768 /* 1769 * We feed backend with new portion of fetched samples including not reported.1769 * Feed the newly fetched samples, including unreported ones, to the backend. 1770 1770 */ 1771 1771 cbBackendCopy = AUD_write (pState->Codec.SwVoiceOut, pBdle->au8HdaBuffer, cb2Copy + pBdle->cbUnderFifoW); 1772 hdaBackendWriteTransferReported(pBdle, cb2Copy, cbBackendCopy, &cbTransfer ed, pu32Avail);1772 hdaBackendWriteTransferReported(pBdle, cb2Copy, cbBackendCopy, &cbTransferred, pu32Avail); 1773 1773 } 1774 1774 else 1775 1775 { 1776 /* Not enough bytes to be processed and reported, check luck on next enterence*/1776 /* Not enough bytes to be processed and reported, we'll try our luck next time around */ 1777 1777 hdaBackendTransferUnreported(pState, pBdle, pStreamDesc, cb2Copy, NULL); 1778 1778 *fStop = true; … … 1780 1780 1781 1781 done: 1782 Assert((cbTransfer ed <= (SDFIFOS(pState, 4) + 1)));1783 Log(("hda:wa: CVI(pos:%d, len:%d, cbTransfer ed:%d)\n", pBdle->u32BdleCviPos, pBdle->u32BdleCviLen, cbTransfered));1784 return cbTransfer ed;1782 Assert((cbTransferred <= (SDFIFOS(pState, 4) + 1))); 1783 Log(("hda:wa: CVI(pos:%d, len:%d, cbTransferred:%d)\n", pBdle->u32BdleCviPos, pBdle->u32BdleCviLen, cbTransferred)); 1784 return cbTransferred; 1785 1785 } 1786 1786 … … 1884 1884 * Handle register read operation. 1885 1885 * 1886 * Looks up and calls appropriate handler.1886 * Looks up and calls the appropriate handler. 1887 1887 * 1888 * @note: while implementation was detected socalled "forgotten" or "hole" registers1889 * wh ich description is missed in RPM, datasheetor spec.1888 * @note: During implementation, we discovered so-called "forgotten" or "hole" registers 1889 * whose description is not listed in the RPM, datasheet, or spec. 1890 1890 * 1891 1891 * @returns VBox status code. 1892 1892 * 1893 1893 * @param pState The device state structure. 1894 * @param uOffset Register offset in memory-mapped frame.1895 * @param pv Where to fetchthe value.1894 * @param uOffset Register offset in memory-mapped area. 1895 * @param pv Where to place the value. 1896 1896 * @param cb Number of bytes to write. 1897 1897 * @thread EMT … … 1922 1922 case 2: mask = 0x0000ffff; break; 1923 1923 case 4: 1924 /* 18.2 of ICH6 datasheet defines wideness of the accesses byte, wordand double word */1924 /* 18.2 of the ICH6 datasheet defines the valid access widths as byte, word, and double word */ 1925 1925 case 8: 1926 1926 mask = 0xffffffff; … … 1929 1929 } 1930 1930 #if 0 1931 /* cross register access. Mac guest hitthis assert doing assumption 4 byte access to 3 byte registers e.g. {I,O}SDnCTL1931 /* Cross-register access. Mac guest hits this assert doing assumption 4 byte access to 3 byte registers e.g. {I,O}SDnCTL 1932 1932 */ 1933 1933 //Assert((cb <= s_ichIntelHDRegMap[idxReg].size - (offReg - s_ichIntelHDRegMap[idxReg].offset))); … … 1955 1955 * Handle register write operation. 1956 1956 * 1957 * Looks up and calls appropriate handler.1957 * Looks up and calls the appropriate handler. 1958 1958 * 1959 1959 * @returns VBox status code. 1960 1960 * 1961 1961 * @param pState The device state structure. 1962 * @param uOffset Register offset in memory-mapped frame.1962 * @param uOffset Register offset in memory-mapped area. 1963 1963 * @param pv Where to fetch the value. 1964 1964 * @param cb Number of bytes to write. … … 1982 1982 { 1983 1983 /** @todo r=bird: This looks like code for handling unalinged register 1984 * accesses. If it isn't then, add a comment explaing what you're1984 * accesses. If it isn't, then add a comment explaining what you're 1985 1985 * trying to do here. OTOH, if it is then it has the following 1986 1986 * issues: … … 1990 1990 * 1991 1991 * PS! consider dropping the 'offset' argument to pfnWrite/pfnRead as 1992 * nobody seems to be using it and it just add complexity when reading1992 * nobody seems to be using it and it just adds complexity when reading 1993 1993 * the code. 1994 1994 * … … 2009 2009 case 4: 2010 2010 case 8: 2011 /* 18.2 of ICH6 datasheet defines wideness of the accesses byte, wordand double word */2011 /* 18.2 of the ICH6 datasheet defines the valid access widths as byte, word, and double word */ 2012 2012 u32NewValue = *(uint32_t const *)pv; 2013 2013 mask = 0xffffffff; … … 2017 2017 AssertFailedReturn(VERR_INTERNAL_ERROR_4); /* shall not happen. */ 2018 2018 } 2019 /* cross 2019 /* cross-register access, see corresponding comment in hdaMMIORead */ 2020 2020 #if 0 2021 2021 if (cb > s_ichIntelHDRegMap[idxReg].size - (offReg - s_ichIntelHDRegMap[idxReg].offset)) … … 2079 2079 2080 2080 /** 2081 * Saves astate of the HDA device.2081 * Saves the state of the HDA device. 2082 2082 * 2083 2083 * @returns VBox status code. 2084 2084 * @param pDevIns The device instance. 2085 * @param pSSM The handle to save the state to.2085 * @param pSSM The handle to save the state to. 2086 2086 */ 2087 2087 static DECLCALLBACK(int) hdaSaveExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSM) … … 2108 2108 * @returns VBox status code. 2109 2109 * @param pDevIns The device instance. 2110 * @param pSSM The handle to the saved state.2110 * @param pSSM The handle to the saved state. 2111 2111 * @param uVersion The data unit version number. 2112 2112 * @param uPass The data pass. … … 2133 2133 case HDA_SSM_VERSION_1: 2134 2134 /* Starting with r71199, we would save 112 instead of 113 2135 registers due to some code cleanups. This only affect strunk2135 registers due to some code cleanups. This only affected trunk 2136 2136 builds in the 4.1 development period. */ 2137 2137 cRegs = 113; … … 2250 2250 } 2251 2251 hdaInitTransferDescriptor(&pThis->hda, pBdle, u8Strm, &stStreamDesc); 2252 /* hdaStreamReset prevents changing SRST bit, so we zerro it here forcely. */2252 /* hdaStreamReset prevents changing the SRST bit, so we force it to zero here. */ 2253 2253 HDA_STREAM_REG2(&pThis->hda, CTL, u8Strm) = 0; 2254 2254 hdaStreamReset(&pThis->hda, pBdle, &stStreamDesc, u8Strm); 2255 2255 } 2256 2256 2257 /* emulat eion of codec "wake up" HDA spec (5.5.1 and 6.5)*/2257 /* emulation of codec "wake up" (HDA spec 5.5.1 and 6.5)*/ 2258 2258 STATESTS(&pThis->hda) = 0x1; 2259 2259 … … 2306 2306 && iHdaStrmIndex >= 0 2307 2307 && iHdaStrmIndex < 7); 2308 pHlp->pfnPrintf(pHlp, "Dump of %d H daStream:\n", iHdaStrmIndex);2308 pHlp->pfnPrintf(pHlp, "Dump of %d HDA Stream:\n", iHdaStrmIndex); 2309 2309 pHlp->pfnPrintf(pHlp, "SD%dCTL: %R[sdctl]\n", iHdaStrmIndex, HDA_STREAM_REG2(pState, CTL, iHdaStrmIndex)); 2310 2310 pHlp->pfnPrintf(pHlp, "SD%dCTS: %R[sdsts]\n", iHdaStrmIndex, HDA_STREAM_REG2(pState, STS, iHdaStrmIndex)); … … 2501 2501 if (!CFGMR3AreValuesValid (pCfgHandle, "\0")) 2502 2502 return PDMDEV_SET_ERROR (pDevIns, VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES, 2503 N_ ("Invalid configuration for the I NTELHDdevice"));2503 N_ ("Invalid configuration for the Intel HDA device")); 2504 2504 2505 2505 // ** @todo r=michaln: This device may need R0/RC enabling, especially if guests … … 2513 2513 s->IBase.pfnQueryInterface = hdaQueryInterface; 2514 2514 2515 /* PCI Device (the assertions will be removed later)*/2515 /* PCI Device */ 2516 2516 PCIDevSetVendorId (&pThis->dev, HDA_PCI_VENDOR_ID); /* nVidia */ 2517 2517 PCIDevSetDeviceId (&pThis->dev, HDA_PCI_DEICE_ID); /* HDA */ … … 2631 2631 else if (RT_FAILURE (rc)) 2632 2632 { 2633 AssertMsgFailed (("Failed to attach I NTELHDLUN #0! rc=%Rrc\n", rc));2633 AssertMsgFailed (("Failed to attach Intel HDA LUN #0! rc=%Rrc\n", rc)); 2634 2634 return rc; 2635 2635 } … … 2694 2694 "", 2695 2695 /* pszDescription */ 2696 "I CH IntelHD Audio Controller",2696 "Intel HD Audio Controller", 2697 2697 /* fFlags */ 2698 2698 PDM_DEVREG_FLAGS_DEFAULT_BITS,
Note:
See TracChangeset
for help on using the changeset viewer.