VirtualBox

Changeset 33721 in vbox for trunk/src/VBox/Devices/Audio


Ignore:
Timestamp:
Nov 3, 2010 11:59:33 AM (14 years ago)
Author:
vboxsync
Message:

Audio/HDA: VerbID: F00[0xC] clarification and clean up.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DevCodec.cpp

    r33719 r33721  
    123123#define CODEC_F00_09_CAP_IN_AMP_PRESENT     RT_BIT(1)
    124124#define CODEC_F00_09_CAP_LSB                RT_BIT(0)
     125
     126/* Pin Capabilities (7.3.4.9)*/
     127#define CODEC_MAKE_F00_0C(vref_ctrl) (((vref_ctrl) & 0xFF) << 8)
     128#define CODEC_F00_0C_CAP_HBR                    RT_BIT(27)
     129#define CODEC_F00_0C_CAP_DP                     RT_BIT(24)
     130#define CODEC_F00_0C_CAP_EAPD                   RT_BIT(16)
     131#define CODEC_F00_0C_CAP_HDMI                   RT_BIT(7)
     132#define CODEC_F00_0C_CAP_BALANCED_IO            RT_BIT(6)
     133#define CODEC_F00_0C_CAP_INPUT                  RT_BIT(5)
     134#define CODEC_F00_0C_CAP_OUTPUT                 RT_BIT(4)
     135#define CODEC_F00_0C_CAP_HP                     RT_BIT(3)
     136#define CODEC_F00_0C_CAP_PRESENSE_DETECT        RT_BIT(2)
     137#define CODEC_F00_0C_CAP_TRIGGER_REQUIRED       RT_BIT(1)
     138#define CODEC_F00_0C_CAP_IMPENDANCE_SENSE       RT_BIT(0)
    125139
    126140/* HDA spec 7.3.3.31 defines layout of configuration registers/verbs (0xF1C) */
     
    298312            pNode->afg.node.name = "AFG";
    299313            pNode->node.au32F00_param[8] = CODEC_MAKE_F00_08(CODEC_F00_08_BEEP_GEN, 0xd, 0xd);
    300             pNode->node.au32F00_param[0xC] = (17 << 8)|RT_BIT(6)|RT_BIT(5)|RT_BIT(2)|RT_BIT(1)|RT_BIT(0);
     314            pNode->node.au32F00_param[0xC] =   CODEC_MAKE_F00_0C(0x17)
     315                                             | CODEC_F00_0C_CAP_BALANCED_IO
     316                                             | CODEC_F00_0C_CAP_INPUT
     317                                             | CODEC_F00_0C_CAP_PRESENSE_DETECT
     318                                             | CODEC_F00_0C_CAP_TRIGGER_REQUIRED
     319                                             | CODEC_F00_0C_CAP_IMPENDANCE_SENSE;//(17 << 8)|RT_BIT(6)|RT_BIT(5)|RT_BIT(2)|RT_BIT(1)|RT_BIT(0);
    301320            pNode->node.au32F00_param[0xB] = RT_BIT(0);
    302321            pNode->node.au32F00_param[0xD] = RT_BIT(31)|(0x5 << 16)|(0xE)<<8;
     
    383402        case 0xA:
    384403            pNode->node.name = "PortA";
    385             pNode->node.au32F00_param[0xC] = 0x173f;
     404            pNode->node.au32F00_param[0xC] =   CODEC_MAKE_F00_0C(0x17)
     405                                             | CODEC_F00_0C_CAP_BALANCED_IO
     406                                             | CODEC_F00_0C_CAP_INPUT
     407                                             | CODEC_F00_0C_CAP_OUTPUT
     408                                             | CODEC_F00_0C_CAP_HP
     409                                             | CODEC_F00_0C_CAP_PRESENSE_DETECT
     410                                             | CODEC_F00_0C_CAP_TRIGGER_REQUIRED
     411                                             | CODEC_F00_0C_CAP_IMPENDANCE_SENSE;//0x173f;
    386412            pNode->node.au32F02_param[0] = 0x2;
    387413            pNode->port.u32F07_param = 0xc0;//RT_BIT(6);
     
    398424        case 0xB:
    399425            pNode->node.name = "PortB";
    400             pNode->node.au32F00_param[0xC] = 0x1737;
     426            pNode->node.au32F00_param[0xC] =   CODEC_MAKE_F00_0C(0x17)
     427                                             | CODEC_F00_0C_CAP_INPUT
     428                                             | CODEC_F00_0C_CAP_OUTPUT
     429                                             | CODEC_F00_0C_CAP_PRESENSE_DETECT
     430                                             | CODEC_F00_0C_CAP_TRIGGER_REQUIRED
     431                                             | CODEC_F00_0C_CAP_IMPENDANCE_SENSE;//0x1737;
    401432            pNode->node.au32F02_param[0] = 0x4;
    402433            pNode->port.u32F07_param = RT_BIT(5);
     
    413444            pNode->node.name = "PortC";
    414445            pNode->node.au32F02_param[0] = 0x3;
    415             pNode->node.au32F00_param[0xC] = 0x1737;
     446            pNode->node.au32F00_param[0xC] =   CODEC_MAKE_F00_0C(0x17)
     447                                             | CODEC_F00_0C_CAP_INPUT
     448                                             | CODEC_F00_0C_CAP_OUTPUT
     449                                             | CODEC_F00_0C_CAP_PRESENSE_DETECT
     450                                             | CODEC_F00_0C_CAP_TRIGGER_REQUIRED
     451                                             | CODEC_F00_0C_CAP_IMPENDANCE_SENSE;//0x1737;
    416452            pNode->port.u32F07_param = RT_BIT(5);
    417453            if (!pState->fInReset)
     
    425461        case 0xD:
    426462            pNode->node.name = "PortD";
    427             pNode->node.au32F00_param[0xC] = 0x1737;
     463            pNode->node.au32F00_param[0xC] =   CODEC_MAKE_F00_0C(0x17)
     464                                             | CODEC_F00_0C_CAP_INPUT
     465                                             | CODEC_F00_0C_CAP_OUTPUT
     466                                             | CODEC_F00_0C_CAP_PRESENSE_DETECT
     467                                             | CODEC_F00_0C_CAP_TRIGGER_REQUIRED
     468                                             | CODEC_F00_0C_CAP_IMPENDANCE_SENSE;//0x1737;
    428469            pNode->port.u32F07_param = RT_BIT(5);
    429470            pNode->node.au32F02_param[0] = 0x2;
     
    450491                                           | CODEC_F00_09_CAP_LSB;//(4 << 20)|RT_BIT(7)|RT_BIT(0);
    451492            pNode->port.u32F08_param = 0;
    452             pNode->node.au32F00_param[0xC] = 0x34;
     493            pNode->node.au32F00_param[0xC] =   CODEC_F00_0C_CAP_INPUT
     494                                             | CODEC_F00_0C_CAP_OUTPUT
     495                                             | CODEC_F00_0C_CAP_PRESENSE_DETECT;//0x34;
    453496            pNode->port.u32F07_param = RT_BIT(5);
    454497            pNode->port.u32F09_param = 0x7fffffff;
     
    468511                                           | CODEC_F00_09_CAP_OUT_AMP_PRESENT
    469512                                           | CODEC_F00_09_CAP_LSB;//(4 << 20)|RT_BIT(8)|RT_BIT(7)|RT_BIT(2)|RT_BIT(0);
    470             pNode->node.au32F00_param[0xC] = 0x37;
     513            pNode->node.au32F00_param[0xC] =   CODEC_F00_0C_CAP_INPUT
     514                                             | CODEC_F00_0C_CAP_OUTPUT
     515                                             | CODEC_F00_0C_CAP_PRESENSE_DETECT
     516                                             | CODEC_F00_0C_CAP_TRIGGER_REQUIRED
     517                                             | CODEC_F00_0C_CAP_IMPENDANCE_SENSE;//0x37;
    471518            pNode->node.au32F00_param[0xE] = 0x1;
    472519            pNode->port.u32F08_param = 0;
     
    488535                                           | CODEC_F00_09_CAP_CONNECTION_LIST
    489536                                           | CODEC_F00_09_CAP_LSB;//(4<<20)|RT_BIT(9)|RT_BIT(8)|RT_BIT(0);
    490             pNode->node.au32F00_param[0xC] = RT_BIT(4);
     537            pNode->node.au32F00_param[0xC] = CODEC_F00_0C_CAP_OUTPUT;//RT_BIT(4);
    491538            pNode->node.au32F00_param[0xE] = 0x3;
    492539            pNode->digout.u32F01_param = 0;
     
    504551            pNode->node.name = "DigIn_0";
    505552            pNode->node.au32F00_param[9] = (4 << 20)|(3<<16)|RT_BIT(10)|RT_BIT(9)|RT_BIT(7)|RT_BIT(0);
    506             pNode->node.au32F00_param[0xC] = RT_BIT(16)| RT_BIT(5)|RT_BIT(2);
     553            pNode->node.au32F00_param[0xC] =   CODEC_F00_0C_CAP_EAPD
     554                                             | CODEC_F00_0C_CAP_INPUT
     555                                             | CODEC_F00_0C_CAP_PRESENSE_DETECT;//RT_BIT(16)| RT_BIT(5)|RT_BIT(2);
    507556            pNode->digin.u32F05_param = 0x3 << 4 | 0x3; /* PS-Act: D3 -> D3 */
    508557            pNode->digin.u32F07_param = 0;
     
    551600            pNode->node.au32F00_param[0x9] =   CODEC_MAKE_F00_09(CODEC_F00_09_TYPE_PIN_COMPLEX, 0, 0)
    552601                                             | CODEC_F00_09_CAP_LSB;//(4 << 20)|RT_BIT(0);
    553             pNode->node.au32F00_param[0xc] = RT_BIT(5);
     602            pNode->node.au32F00_param[0xc] = CODEC_F00_0C_CAP_INPUT;//RT_BIT(5);
    554603            pNode->cdnode.u32F07_param = 0;
    555604            if (!pState->fInReset)
     
    609658                                             | CODEC_F00_09_CAP_LSB;//(0x4 << 20)|RT_BIT(9)|RT_BIT(8)|RT_BIT(0);
    610659            pNode->node.au32F00_param[0xE] = 0x1;
    611             pNode->node.au32F00_param[0xC] = 0x10;
     660            pNode->node.au32F00_param[0xC] = CODEC_F00_0C_CAP_OUTPUT;//0x10;
    612661            pNode->node.au32F02_param[0] = 0x1a;
    613662            pNode->reserved.u32F07_param = 0;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette