Changeset 90141 in vbox
- Timestamp:
- Jul 9, 2021 10:41:57 PM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 145643
- Location:
- trunk/src/VBox/Devices/Audio
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/VBox/Devices/Audio/DevHdaCodec.cpp ¶
r90139 r90141 798 798 pThis->fInReset = false; 799 799 800 #define STAC9220WIDGET(type) memcpy(&pThis->au8##type##s, &g_abStac9220##type##s, sizeof(uint8_t) * RT_ELEMENTS(g_abStac9220##type##s)); 800 #define STAC9220WIDGET(a_Type) do { \ 801 AssertCompile(RT_ELEMENTS(g_abStac9220##a_Type##s) <= RT_ELEMENTS(pThis->ab##a_Type##s)); \ 802 memcpy(&pThis->ab##a_Type##s, &g_abStac9220##a_Type##s, sizeof(uint8_t) * RT_ELEMENTS(g_abStac9220##a_Type##s)); \ 803 } while (0) 801 804 STAC9220WIDGET(Port); 802 805 STAC9220WIDGET(Dac); … … 849 852 850 853 /* 851 * Some generic predicate functions. 852 */ 854 * Some generic predicate functions. 855 */ 856 /** @todo r=bird: we could use memchr here if we knew the array always ended with zeros */ 853 857 #define HDA_CODEC_IS_NODE_OF_TYPE_FUNC(a_Type) \ 854 858 DECLINLINE(bool) hdaCodecIs##a_Type##Node(PHDACODECR3 pThis, uint8_t idNode) \ 855 859 { \ 856 Assert(pThis->a u8##a_Type##s); \857 for (uintptr_t i = 0; i < RT_ELEMENTS(pThis->a u8##a_Type##s) && pThis->au8##a_Type##s[i] != 0; i++) \858 if (pThis->a u8##a_Type##s[i] == idNode) \860 Assert(pThis->ab##a_Type##s); \ 861 for (uintptr_t i = 0; i < RT_ELEMENTS(pThis->ab##a_Type##s) && pThis->ab##a_Type##s[i] != 0; i++) \ 862 if (pThis->ab##a_Type##s[i] == idNode) \ 859 863 return true; \ 860 864 return false; \ … … 1564 1568 } while (0) 1565 1569 1566 PROPAGATE_PWR_STATE(pThis->a u8Dacs, dac);1567 PROPAGATE_PWR_STATE(pThis->a u8Adcs, adc);1568 PROPAGATE_PWR_STATE(pThis->a u8DigInPins, digin);1569 PROPAGATE_PWR_STATE(pThis->a u8DigOutPins, digout);1570 PROPAGATE_PWR_STATE(pThis->a u8SpdifIns, spdifin);1571 PROPAGATE_PWR_STATE(pThis->a u8SpdifOuts, spdifout);1572 PROPAGATE_PWR_STATE(pThis->a u8Reserveds, reserved);1570 PROPAGATE_PWR_STATE(pThis->abDacs, dac); 1571 PROPAGATE_PWR_STATE(pThis->abAdcs, adc); 1572 PROPAGATE_PWR_STATE(pThis->abDigInPins, digin); 1573 PROPAGATE_PWR_STATE(pThis->abDigOutPins, digout); 1574 PROPAGATE_PWR_STATE(pThis->abSpdifIns, spdifin); 1575 PROPAGATE_PWR_STATE(pThis->abSpdifOuts, spdifout); 1576 PROPAGATE_PWR_STATE(pThis->abReserveds, reserved); 1573 1577 1574 1578 #undef PROPAGATE_PWR_STATE … … 1659 1663 { 1660 1664 /* now we're powered on AFG and may propogate power states on nodes */ 1661 const uint8_t *pu8NodeIndex = &pThis->a u8Dacs[0];1665 const uint8_t *pu8NodeIndex = &pThis->abDacs[0]; 1662 1666 while (*(++pu8NodeIndex)) 1663 1667 codecPropogatePowerState(&pThis->aNodes[*pu8NodeIndex].dac.u32F05_param); 1664 1668 1665 pu8NodeIndex = &pThis->a u8Adcs[0];1669 pu8NodeIndex = &pThis->abAdcs[0]; 1666 1670 while (*(++pu8NodeIndex)) 1667 1671 codecPropogatePowerState(&pThis->aNodes[*pu8NodeIndex].adc.u32F05_param); 1668 1672 1669 pu8NodeIndex = &pThis->a u8DigInPins[0];1673 pu8NodeIndex = &pThis->abDigInPins[0]; 1670 1674 while (*(++pu8NodeIndex)) 1671 1675 codecPropogatePowerState(&pThis->aNodes[*pu8NodeIndex].digin.u32F05_param); … … 2329 2333 uint8_t uLevel; 2330 2334 /** Pointer to codec state. */ 2331 PHDACODECR3 2335 PHDACODECR3 pThis; 2332 2336 } CODECDEBUG; 2333 2337 /** Pointer to the debug info item printing state for the codec. */ -
TabularUnified trunk/src/VBox/Devices/Audio/DevHdaCodec.h ¶
r90140 r90141 816 816 uint8_t abPadding1[CODEC_NODES_MAX - 20]; 817 817 818 uint8_t a u8Ports[CODEC_NODES_MAX];819 uint8_t a u8Dacs[CODEC_NODES_MAX];820 uint8_t a u8AdcVols[CODEC_NODES_MAX];821 uint8_t a u8Adcs[CODEC_NODES_MAX];822 uint8_t a u8AdcMuxs[CODEC_NODES_MAX];823 uint8_t a u8Pcbeeps[CODEC_NODES_MAX];824 uint8_t a u8SpdifIns[CODEC_NODES_MAX];825 uint8_t a u8SpdifOuts[CODEC_NODES_MAX];826 uint8_t a u8DigInPins[CODEC_NODES_MAX];827 uint8_t a u8DigOutPins[CODEC_NODES_MAX];828 uint8_t a u8Cds[CODEC_NODES_MAX];829 uint8_t a u8VolKnobs[CODEC_NODES_MAX];830 uint8_t a u8Reserveds[CODEC_NODES_MAX];818 uint8_t abPorts[CODEC_NODES_MAX]; 819 uint8_t abDacs[CODEC_NODES_MAX]; 820 uint8_t abAdcVols[CODEC_NODES_MAX]; 821 uint8_t abAdcs[CODEC_NODES_MAX]; 822 uint8_t abAdcMuxs[CODEC_NODES_MAX]; 823 uint8_t abPcbeeps[CODEC_NODES_MAX]; 824 uint8_t abSpdifIns[CODEC_NODES_MAX]; 825 uint8_t abSpdifOuts[CODEC_NODES_MAX]; 826 uint8_t abDigInPins[CODEC_NODES_MAX]; 827 uint8_t abDigOutPins[CODEC_NODES_MAX]; 828 uint8_t abCds[CODEC_NODES_MAX]; 829 uint8_t abVolKnobs[CODEC_NODES_MAX]; 830 uint8_t abReserveds[CODEC_NODES_MAX]; 831 831 832 832 /** Safty zero padding before the nodes start. */ … … 839 839 } HDACODECR3; 840 840 AssertCompile(RT_IS_POWER_OF_TWO(CODEC_NODES_MAX)); 841 AssertCompileMemberAlignment(HDACODECR3, a u8Ports, CODEC_NODES_MAX);841 AssertCompileMemberAlignment(HDACODECR3, abPorts, CODEC_NODES_MAX); 842 842 AssertCompileMemberAlignment(HDACODECR3, aNodes, 64); 843 843 AssertCompileSizeAlignment(HDACODECR3, 8);
Note:
See TracChangeset
for help on using the changeset viewer.