Changeset 36692 in vbox
- Timestamp:
- Apr 18, 2011 3:06:05 AM (13 years ago)
- File:
-
- 1 edited
-
trunk/src/VBox/Devices/Audio/DevCodec.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevCodec.cpp
r36691 r36692 638 638 } 639 639 640 /* ALC885 */641 const static uint8_t au8Alc885Ports[] = { 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0};642 const static uint8_t au8Alc885Dacs[] = { 0x2, 0x3, 0x4, 0x5, 0x25, 0};643 const static uint8_t au8Alc885Adcs[] = { 0x7, 0x8, 0x9, 0};644 const static uint8_t au8Alc885SpdifOuts[] = { 0x6, 0 };645 const static uint8_t au8Alc885SpdifIns[] = { 0xA, 0 };646 const static uint8_t au8Alc885DigOutPins[] = { 0x1E, 0 };647 const static uint8_t au8Alc885DigInPins[] = { 0x1F, 0 };648 const static uint8_t au8Alc885AdcVols[] = { 0xE, 0xF, 0xD, 0xC, 0x26, 0xB, 0};649 const static uint8_t au8Alc885AdcMuxs[] = { 0x22, 0x23, 0x24, 0};650 const static uint8_t au8Alc885Pcbeeps[] = { 0x1D, 0 };651 const static uint8_t au8Alc885Cds[] = { 0x1C, 0 };652 const static uint8_t au8Alc885VolKnobs[] = { 0x21, 0 };653 const static uint8_t au8Alc885Reserveds[] = { 0x10, 0x11, 0x12, 0x13, 0 };654 655 656 static int alc885ResetNode(struct CODECState *pState, uint8_t nodenum, PCODECNODE pNode);657 658 static int alc885Construct(CODECState *pState)659 {660 unconst(pState->cTotalNodes) = 0x27;661 pState->u16VendorId = 0x10ec;662 pState->u16DeviceId = 0x0885;663 pState->u8BSKU = 0x08;664 pState->u8AssemblyId = 0x85;665 pState->pfnCodecNodeReset = alc885ResetNode;666 pState->pNodes = (PCODECNODE)RTMemAllocZ(sizeof(CODECNODE) * pState->cTotalNodes);667 pState->fInReset = false;668 #define ALC885WIDGET(type) pState->au8##type##s = au8Alc885##type##s669 ALC885WIDGET(Port);670 ALC885WIDGET(Dac);671 ALC885WIDGET(Adc);672 ALC885WIDGET(AdcVol);673 ALC885WIDGET(AdcMux);674 ALC885WIDGET(Pcbeep);675 ALC885WIDGET(SpdifIn);676 ALC885WIDGET(SpdifOut);677 ALC885WIDGET(DigInPin);678 ALC885WIDGET(DigOutPin);679 ALC885WIDGET(Cd);680 ALC885WIDGET(VolKnob);681 ALC885WIDGET(Reserved);682 #undef ALC885WIDGET683 /* @todo: test more */684 unconst(pState->u8AdcVolsLineIn) = 0x1a;685 unconst(pState->u8DacLineOut) = 0x0d;686 687 return VINF_SUCCESS;688 }689 690 static int alc885ResetNode(struct CODECState *pState, uint8_t nodenum, PCODECNODE pNode)691 {692 pNode->node.id = nodenum;693 switch (nodenum)694 {695 case 0: /* Root */696 pNode->node.au32F00_param[2] = CODEC_MAKE_F00_02(0x1, 0x0, 0x0, 0x0); /* Realtek 889 (8.1.9)*/697 pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];698 699 break;700 case 0x1: /* AFG */701 pNode->node.au32F00_param[0xB] = CODEC_F00_0B_PCM;702 pNode->node.au32F00_param[0x11] = RT_BIT(30)|0x2;703 break;704 /* DACs */705 case 0x2:706 pNode->node.name = "DAC-0";707 goto dac_init;708 case 0x3:709 pNode->node.name = "DAC-1";710 goto dac_init;711 case 0x4:712 pNode->node.name = "DAC-2";713 goto dac_init;714 case 0x5:715 pNode->node.name = "DAC-3";716 goto dac_init;717 case 0x25:718 pNode->node.name = "DAC-4";719 dac_init:720 pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];721 pNode->node.au32F00_param[0x9] = 0x11;722 pNode->node.au32F00_param[0xB] = CODEC_F00_0B_PCM;723 pNode->dac.u32A_param = CODEC_MAKE_A(0, 1, CODEC_A_MULT_1X, CODEC_A_DIV_1X, CODEC_A_16_BIT, 1);//(1<<14)|(0x1<<4) | 0x1;724 break;725 /* SPDIFs */726 case 0x6:727 pNode->node.name = "SPDIFOUT-0";728 pNode->node.au32F00_param[0x9] = 0x211;729 pNode->node.au32F00_param[0xB] = 0x1;730 pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];731 pNode->spdifout.u32A_param = CODEC_MAKE_A(0, 1, CODEC_A_MULT_1X, CODEC_A_DIV_1X, CODEC_A_16_BIT, 1);//(1<<14)|(0x1<<4) | 0x1;732 break;733 case 0xA:734 pNode->node.name = "SPDIFIN-0";735 pNode->node.au32F00_param[0x9] = 0x100391;736 pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];737 pNode->node.au32F00_param[0xB] = 0x1;738 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x1F, 0, 0, 0);739 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x1F, 0, 0, 0);740 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x1F, 0, 0, 0);741 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x1F, 0, 0, 0);742 pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];743 pNode->spdifin.u32A_param = CODEC_MAKE_A(0, 1, CODEC_A_MULT_1X, CODEC_A_DIV_1X, CODEC_A_16_BIT, 1);//(1<<14)|(0x1<<4) | 0x1;744 break;745 /* VENDOR DEFINE */746 case 0x10:747 pNode->node.name = "VENDEF-0";748 goto vendor_define_init;749 case 0x11:750 pNode->node.name = "VENDEF-1";751 goto vendor_define_init;752 case 0x12:753 pNode->node.name = "VENDEF-2";754 goto vendor_define_init;755 case 0x13:756 pNode->node.name = "VENDEF-3";757 goto vendor_define_init;758 case 0x20:759 pNode->node.name = "VENDEF-4";760 vendor_define_init:761 pNode->node.au32F00_param[0x9] = 0xf00000;762 break;763 764 /* DIGPIN */765 case 0x1E:766 pNode->node.name = "DIGOUT-1";767 pNode->node.au32F00_param[0x9] = 0x400300;768 pNode->node.au32F00_param[0xE] = 0x1;769 pNode->port.u32F1c_param = 0x14be060;770 pNode->node.au32F00_param[0xC] = RT_BIT(4);771 /* N = 0~3 */772 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x6, 0x0, 0x0, 0x0);773 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x6, 0x0, 0x0, 0x0);774 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x6, 0x0, 0x0, 0x0);775 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x6, 0x0, 0x0, 0x0);776 break;777 case 0x1F:778 pNode->node.name = "DIGIN-0";779 pNode->node.au32F00_param[9] = 0x400200;780 /* N = 0~3 */781 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0xA, 0x0, 0x0, 0x0);782 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0xA, 0x0, 0x0, 0x0);783 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0xA, 0x0, 0x0, 0x0);784 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0xA, 0x0, 0x0, 0x0);785 break;786 /* ADCs */787 case 0x7:788 pNode->node.name = "ADC-0";789 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x23, 0, 0, 0);790 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x23, 0, 0, 0);791 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x23, 0, 0, 0);792 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x23, 0, 0, 0);793 goto adc_init;794 break;795 case 0x8:796 pNode->node.name = "ADC-1";797 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x24, 0, 0, 0);798 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x24, 0, 0, 0);799 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x24, 0, 0, 0);800 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x24, 0, 0, 0);801 goto adc_init;802 break;803 case 0x9:804 pNode->node.name = "ADC-2";805 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x22, 0, 0, 0);806 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x22, 0, 0, 0);807 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x22, 0, 0, 0);808 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x22, 0, 0, 0);809 adc_init:810 pNode->node.au32F00_param[0xB] = 0x1;811 pNode->node.au32F00_param[0x9] = 0x10011b;812 pNode->node.au32F00_param[0xD] = 0x80032e10;813 pNode->node.au32F00_param[0xE] = 0x1;814 pNode->node.au32F00_param[0xA] = pState->pNodes[1].node.au32F00_param[0xA];815 pNode->adc.u32A_param = CODEC_MAKE_A(0, 1, CODEC_A_MULT_1X, CODEC_A_DIV_1X, CODEC_A_16_BIT, 1);//(1<<14)|(0x1<<4) | 0x1;816 break;817 /* Ports */818 case 0x14:819 pNode->node.name = "PORT-D";820 pNode->port.u32F1c_param = 0x12b4050;821 pNode->node.au32F00_param[0xC] = RT_BIT(13)|RT_BIT(12)|RT_BIT(11)|RT_BIT(10)|RT_BIT(9)|RT_BIT(8)|RT_BIT(5)|RT_BIT(4)|RT_BIT(3)|RT_BIT(2);822 goto port_init;823 break;824 case 0x15:825 pNode->node.name = "PORT-A";826 pNode->port.u32F1c_param = 0x18b3020;827 pNode->node.au32F00_param[0xC] = RT_BIT(13)|RT_BIT(12)|RT_BIT(11)|RT_BIT(10)|RT_BIT(9)|RT_BIT(8)|RT_BIT(5)|RT_BIT(4)|RT_BIT(3)|RT_BIT(2);828 goto port_init;829 break;830 case 0x16:831 pNode->node.name = "PORT-G";832 pNode->port.u32F1c_param = 0x400000f0;833 pNode->node.au32F00_param[0xC] = RT_BIT(4)|RT_BIT(3)|RT_BIT(2);834 goto port_init;835 break;836 case 0x17:837 pNode->node.name = "PORT-H";838 pNode->port.u32F1c_param = 0x400000f0;839 pNode->node.au32F00_param[0xC] = RT_BIT(4)|RT_BIT(3)|RT_BIT(2);840 goto port_init;841 break;842 case 0x18:843 pNode->node.name = "PORT-B";844 pNode->port.u32F1c_param = 0x90100140;845 pNode->node.au32F00_param[0xC] = RT_BIT(13)|RT_BIT(12)|RT_BIT(11)|RT_BIT(10)|RT_BIT(9)|RT_BIT(8)|RT_BIT(5)|RT_BIT(4)|RT_BIT(3)|RT_BIT(2);846 goto port_init;847 break;848 case 0x19:849 pNode->node.name = "PORT-F";850 pNode->port.u32F1c_param = 0x90a00110;851 pNode->node.au32F00_param[0xC] = RT_BIT(13)|RT_BIT(12)|RT_BIT(11)|RT_BIT(10)|RT_BIT(9)|RT_BIT(8)|RT_BIT(5)|RT_BIT(4)|RT_BIT(3)|RT_BIT(2);852 goto port_init;853 break;854 case 0x1A:855 pNode->node.name = "PORT-C";856 pNode->port.u32F1c_param = 0x90100141;857 pNode->node.au32F00_param[0xC] = RT_BIT(13)|RT_BIT(12)|RT_BIT(11)|RT_BIT(10)|RT_BIT(9)|RT_BIT(8)|RT_BIT(5)|RT_BIT(4)|RT_BIT(3)|RT_BIT(2);858 goto port_init;859 break;860 case 0x1B:861 pNode->node.name = "PORT-E";862 pNode->port.u32F1c_param = 0x400000f0;863 pNode->node.au32F00_param[0xC] = RT_BIT(13)|RT_BIT(12)|RT_BIT(11)|RT_BIT(10)|RT_BIT(9)|RT_BIT(8)|RT_BIT(5)|RT_BIT(4)|RT_BIT(3)|RT_BIT(2);864 port_init:865 pNode->node.au32F00_param[0x9] = 0x40018f;866 pNode->node.au32F00_param[0xD] = 0x270300;867 pNode->node.au32F00_param[0xE] = 0x5;868 /* N = 0~3 */869 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0xC, 0xD, 0xE, 0xF);870 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0xC, 0xD, 0xE, 0xF);871 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0xC, 0xD, 0xE, 0xF);872 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0xC, 0xD, 0xE, 0xF);873 /* N = 4~7 */874 pNode->node.au32F02_param[4] = RT_MAKE_U32_FROM_U8(0x26, 0, 0, 0);875 pNode->node.au32F02_param[5] = RT_MAKE_U32_FROM_U8(0x26, 0, 0, 0);876 pNode->node.au32F02_param[6] = RT_MAKE_U32_FROM_U8(0x26, 0, 0, 0);877 pNode->node.au32F02_param[7] = RT_MAKE_U32_FROM_U8(0x26, 0, 0, 0);878 break;879 /* ADCVols */880 case 0x26:881 pNode->node.name = "AdcVol-0";882 pNode->node.au32F00_param[0x9] = 0x20010f;883 pNode->node.au32F00_param[0xD] = 0x80000000;884 pNode->node.au32F00_param[0xE] = 0x2;885 pNode->node.au32F00_param[0x12] = 0x34040;886 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x25, 0xB, 0, 0);887 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x25, 0xB, 0, 0);888 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x25, 0xB, 0, 0);889 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x25, 0xB, 0, 0);890 break;891 case 0xF:892 pNode->node.name = "AdcVol-1";893 pNode->node.au32F00_param[0x9] = 0x20010f;894 pNode->node.au32F00_param[0xE] = 0x2;895 pNode->node.au32F00_param[0x12] = 0x34040;896 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x5, 0xB, 0, 0);897 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x5, 0xB, 0, 0);898 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x5, 0xB, 0, 0);899 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x5, 0xB, 0, 0);900 break;901 case 0xE:902 pNode->node.name = "AdcVol-2";903 pNode->node.au32F00_param[0x9] = 0x20010f;904 pNode->node.au32F00_param[0xE] = 0x2;905 pNode->node.au32F00_param[0xD] = 0x80000000;906 pNode->node.au32F00_param[0x12] = 0x34040;907 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x4, 0xB, 0, 0);908 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x4, 0xB, 0, 0);909 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x4, 0xB, 0, 0);910 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x4, 0xB, 0, 0);911 break;912 case 0xD:913 pNode->node.name = "AdcVol-3";914 pNode->node.au32F00_param[0x9] = 0x20010f;915 pNode->node.au32F00_param[0xE] = 0x2;916 pNode->node.au32F00_param[0xD] = 0x80000000;917 pNode->node.au32F00_param[0x12] = 0x34040;918 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x3, 0xB, 0, 0);919 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x3, 0xB, 0, 0);920 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x3, 0xB, 0, 0);921 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x3, 0xB, 0, 0);922 break;923 case 0xC:924 pNode->node.name = "AdcVol-4";925 pNode->node.au32F00_param[0x9] = 0x20010f;926 pNode->node.au32F00_param[0xE] = 0x2;927 pNode->node.au32F00_param[0xD] = 0x80000000;928 pNode->node.au32F00_param[0x12] = 0x34040;929 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x2, 0xB, 0, 0);930 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x2, 0xB, 0, 0);931 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x2, 0xB, 0, 0);932 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x2, 0xB, 0, 0);933 break;934 case 0xB:935 pNode->node.name = "AdcVol-5";936 pNode->node.au32F00_param[0x9] = 0x20010b;937 pNode->node.au32F00_param[0xD] = 0x80051f17;938 /* N = 0~3 */939 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);940 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);941 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);942 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);943 /* N = 4~7 */944 pNode->node.au32F02_param[4] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);945 pNode->node.au32F02_param[5] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);946 pNode->node.au32F02_param[6] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);947 pNode->node.au32F02_param[7] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);948 /* N = 8~11 */949 pNode->node.au32F02_param[8] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0, 0);950 pNode->node.au32F02_param[9] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0, 0);951 pNode->node.au32F02_param[10] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0, 0);952 pNode->node.au32F02_param[11] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0, 0);953 break;954 /* AdcMuxs */955 case 0x22:956 pNode->node.name = "AdcMux-0";957 pNode->node.au32F00_param[0x9] = 0x20010b;958 pNode->node.au32F00_param[0xD] = 0x80000000;959 pNode->node.au32F00_param[0xE] = 0xb;960 goto adc_mux_init;961 case 0x23:962 pNode->node.name = "AdcMux-1";963 pNode->node.au32F00_param[0x9] = 0x20010b;964 pNode->node.au32F00_param[0xD] = 0x80000000;965 pNode->node.au32F00_param[0xE] = 0xb;966 adc_mux_init:967 /* N = 0~3 */968 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);969 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);970 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);971 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);972 /* N = 4~7 */973 pNode->node.au32F02_param[4] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);974 pNode->node.au32F02_param[5] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);975 pNode->node.au32F02_param[6] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);976 pNode->node.au32F02_param[7] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);977 /* N = 8~11 */978 pNode->node.au32F02_param[8] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0xB, 0);979 pNode->node.au32F02_param[9] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0xB, 0);980 pNode->node.au32F02_param[10] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0xB, 0);981 pNode->node.au32F02_param[11] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0xB, 0);982 break;983 case 0x24:984 pNode->node.name = "AdcMux-2";985 pNode->node.au32F00_param[0x9] = 0x20010b;986 pNode->node.au32F00_param[0xD] = 0x80000000;987 pNode->node.au32F00_param[0xE] = 0xb;988 /* N = 0~3 */989 pNode->node.au32F02_param[0] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);990 pNode->node.au32F02_param[1] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);991 pNode->node.au32F02_param[2] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);992 pNode->node.au32F02_param[3] = RT_MAKE_U32_FROM_U8(0x18, 0x19, 0x1A, 0x1B);993 /* N = 4~7 */994 pNode->node.au32F02_param[4] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);995 pNode->node.au32F02_param[5] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);996 pNode->node.au32F02_param[6] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);997 pNode->node.au32F02_param[7] = RT_MAKE_U32_FROM_U8(0x1C, 0x1D, 0x14, 0x15);998 /* N = 8~11 */999 pNode->node.au32F02_param[8] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0xB, 0x12);1000 pNode->node.au32F02_param[9] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0xB, 0x12);1001 pNode->node.au32F02_param[10] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0xB, 0x12);1002 pNode->node.au32F02_param[11] = RT_MAKE_U32_FROM_U8(0x16, 0x17, 0xB, 0x12);1003 break;1004 /* PCBEEP */1005 case 0x1D:1006 pNode->node.name = "PCBEEP";1007 pNode->node.au32F00_param[0x9] = 0x400000;1008 pNode->port.u32F1c_param = 0x400000f0;1009 pNode->node.au32F00_param[0xC] = RT_BIT(5);1010 break;1011 /* CD */1012 case 0x1C:1013 pNode->node.name = "CD";1014 pNode->node.au32F00_param[0x9] = 0x400001;1015 pNode->port.u32F1c_param = 0x400000f0;1016 pNode->node.au32F00_param[0xC] = RT_BIT(5);1017 break;1018 case 0x21:1019 pNode->node.name = "VolumeKnob";1020 pNode->node.au32F00_param[0x9] = (0x6 << 20)|RT_BIT(7);1021 break;1022 default:1023 AssertMsgFailed(("Unsupported Node"));1024 }1025 return VINF_SUCCESS;1026 }1027 1028 1029 640 /* generic */ 1030 641
Note:
See TracChangeset
for help on using the changeset viewer.

