VirtualBox

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


Ignore:
Timestamp:
Jun 27, 2016 4:02:59 PM (9 years ago)
Author:
vboxsync
Message:

Audio/DevIchAc97.cpp: Some renaming for using prefixes, no code changes.

File:
1 edited

Legend:

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

    r61888 r61903  
    4646*********************************************************************************************************************************/
    4747
    48 #ifdef DEBUG_andy
     48#if 0
    4949/*
    5050 * AC97_DEBUG_DUMP_PCM_DATA enables dumping the raw PCM data
     
    5858#  define AC97_DEBUG_DUMP_PCM_DATA_PATH "/tmp/"
    5959# endif
    60 #endif /* DEBUG_andy */
     60#endif
    6161
    6262/** Current saved state version. */
     
    6767
    6868/** @todo Use AC97_ prefixes! */
    69 #define SR_FIFOE RT_BIT(4)          /* rwc, FIFO error. */
    70 #define SR_BCIS  RT_BIT(3)          /* rwc, Buffer completion interrupt status. */
    71 #define SR_LVBCI RT_BIT(2)          /* rwc, Last valid buffer completion interrupt. */
    72 #define SR_CELV  RT_BIT(1)          /* ro,  Current equals last valid. */
    73 #define SR_DCH   RT_BIT(0)          /* ro,  Controller halted. */
    74 #define SR_VALID_MASK (RT_BIT(5) - 1)
    75 #define SR_WCLEAR_MASK (SR_FIFOE | SR_BCIS | SR_LVBCI)
    76 #define SR_RO_MASK (SR_DCH | SR_CELV)
    77 #define SR_INT_MASK (SR_FIFOE | SR_BCIS | SR_LVBCI)
    78 
    79 #define CR_IOCE  RT_BIT(4)         /* rw,   Interrupt On Completion Enable. */
    80 #define CR_FEIE  RT_BIT(3)         /* rw    FIFO Error Interrupt Enable. */
    81 #define CR_LVBIE RT_BIT(2)         /* rw    Last Valid Buffer Interrupt Enable. */
    82 #define CR_RR    RT_BIT(1)         /* rw    Reset Registers. */
    83 #define CR_RPBM  RT_BIT(0)         /* rw    Run/Pause Bus Master. */
    84 #define CR_VALID_MASK (RT_BIT(5) - 1)
    85 #define CR_DONT_CLEAR_MASK (CR_IOCE | CR_FEIE | CR_LVBIE)
    86 
    87 #define GC_WR    4              /* rw */
    88 #define GC_CR    2              /* rw */
    89 #define GC_VALID_MASK (RT_BIT(6) - 1)
    90 
    91 #define GS_MD3   RT_BIT(17)        /* rw */
    92 #define GS_AD3   RT_BIT(16)        /* rw */
    93 #define GS_RCS   RT_BIT(15)        /* rwc */
    94 #define GS_B3S12 RT_BIT(14)        /* ro */
    95 #define GS_B2S12 RT_BIT(13)        /* ro */
    96 #define GS_B1S12 RT_BIT(12)        /* ro */
    97 #define GS_S1R1  RT_BIT(11)        /* rwc */
    98 #define GS_S0R1  RT_BIT(10)        /* rwc */
    99 #define GS_S1CR  RT_BIT(9)         /* ro */
    100 #define GS_S0CR  RT_BIT(8)         /* ro */
    101 #define GS_MINT  RT_BIT(7)         /* ro */
    102 #define GS_POINT RT_BIT(6)         /* ro */
    103 #define GS_PIINT RT_BIT(5)         /* ro */
    104 #define GS_RSRVD (RT_BIT(4)|RT_BIT(3))
    105 #define GS_MOINT RT_BIT(2)         /* ro */
    106 #define GS_MIINT RT_BIT(1)         /* ro */
    107 #define GS_GSCI  RT_BIT(0)         /* rwc */
    108 #define GS_RO_MASK (GS_B3S12 |                   \
    109                     GS_B2S12 |                   \
    110                     GS_B1S12 |                   \
    111                     GS_S1CR |                    \
    112                     GS_S0CR |                    \
    113                     GS_MINT |                    \
    114                     GS_POINT |                   \
    115                     GS_PIINT |                   \
    116                     GS_RSRVD |                   \
    117                     GS_MOINT |                   \
    118                     GS_MIINT)
    119 #define GS_VALID_MASK (RT_BIT(18) - 1)
    120 #define GS_WCLEAR_MASK (GS_RCS|GS_S1R1|GS_S0R1|GS_GSCI)
     69#define AC97_SR_FIFOE RT_BIT(4)          /* rwc, FIFO error. */
     70#define AC97_SR_BCIS  RT_BIT(3)          /* rwc, Buffer completion interrupt status. */
     71#define AC97_SR_LVBCI RT_BIT(2)          /* rwc, Last valid buffer completion interrupt. */
     72#define AC97_SR_CELV  RT_BIT(1)          /* ro,  Current equals last valid. */
     73#define AC97_SR_DCH   RT_BIT(0)          /* ro,  Controller halted. */
     74#define AC97_SR_VALID_MASK (RT_BIT(5) - 1)
     75#define AC97_SR_WCLEAR_MASK (AC97_SR_FIFOE | AC97_SR_BCIS | AC97_SR_LVBCI)
     76#define AC97_SR_RO_MASK (AC97_SR_DCH | AC97_SR_CELV)
     77#define AC97_SR_INT_MASK (AC97_SR_FIFOE | AC97_SR_BCIS | AC97_SR_LVBCI)
     78
     79#define AC97_CR_IOCE  RT_BIT(4)         /* rw,   Interrupt On Completion Enable. */
     80#define AC97_CR_FEIE  RT_BIT(3)         /* rw    FIFO Error Interrupt Enable. */
     81#define AC97_CR_LVBIE RT_BIT(2)         /* rw    Last Valid Buffer Interrupt Enable. */
     82#define AC97_CR_RR    RT_BIT(1)         /* rw    Reset Registers. */
     83#define AC97_CR_RPBM  RT_BIT(0)         /* rw    Run/Pause Bus Master. */
     84#define AC97_CR_VALID_MASK (RT_BIT(5) - 1)
     85#define AC97_CR_DONT_CLEAR_MASK (AC97_CR_IOCE | AC97_CR_FEIE | AC97_CR_LVBIE)
     86
     87#define AC97_GC_WR    4              /* rw */
     88#define AC97_GC_CR    2              /* rw */
     89#define AC97_GC_VALID_MASK (RT_BIT(6) - 1)
     90
     91#define AC97_GS_MD3   RT_BIT(17)        /* rw */
     92#define AC97_GS_AD3   RT_BIT(16)        /* rw */
     93#define AC97_GS_RCS   RT_BIT(15)        /* rwc */
     94#define AC97_GS_B3S12 RT_BIT(14)        /* ro */
     95#define AC97_GS_B2S12 RT_BIT(13)        /* ro */
     96#define AC97_GS_B1S12 RT_BIT(12)        /* ro */
     97#define AC97_GS_S1R1  RT_BIT(11)        /* rwc */
     98#define AC97_GS_S0R1  RT_BIT(10)        /* rwc */
     99#define AC97_GS_S1CR  RT_BIT(9)         /* ro */
     100#define AC97_GS_S0CR  RT_BIT(8)         /* ro */
     101#define AC97_GS_MINT  RT_BIT(7)         /* ro */
     102#define AC97_GS_POINT RT_BIT(6)         /* ro */
     103#define AC97_GS_PIINT RT_BIT(5)         /* ro */
     104#define AC97_GS_RSRVD (RT_BIT(4)|RT_BIT(3))
     105#define AC97_GS_MOINT RT_BIT(2)         /* ro */
     106#define AC97_GS_MIINT RT_BIT(1)         /* ro */
     107#define AC97_GS_GSCI  RT_BIT(0)         /* rwc */
     108#define AC97_GS_RO_MASK (AC97_GS_B3S12 |                   \
     109                         AC97_GS_B2S12 |                   \
     110                         AC97_GS_B1S12 |                   \
     111                         AC97_GS_S1CR  |                   \
     112                         AC97_GS_S0CR  |                   \
     113                         AC97_GS_MINT  |                   \
     114                         AC97_GS_POINT |                   \
     115                         AC97_GS_PIINT |                   \
     116                         AC97_GS_RSRVD |                   \
     117                         AC97_GS_MOINT |                   \
     118                         AC97_GS_MIINT)
     119#define AC97_GS_VALID_MASK (RT_BIT(18) - 1)
     120#define AC97_GS_WCLEAR_MASK (AC97_GS_RCS|AC97_GS_S1R1|AC97_GS_S0R1|AC97_GS_GSCI)
    121121
    122122/** @name Buffer Descriptor (BD).
    123123 * @{ */
    124 #define BD_IOC RT_BIT(31)          /**< Interrupt on Completion. */
    125 #define BD_BUP RT_BIT(30)          /**< Buffer Underrun Policy. */
    126 
    127 #define BD_MAX_LEN_MASK 0xFFFE
     124#define AC97_BD_IOC RT_BIT(31)          /**< Interrupt on Completion. */
     125#define AC97_BD_BUP RT_BIT(30)          /**< Buffer Underrun Policy. */
     126
     127#define AC97_BD_MAX_LEN_MASK 0xFFFE
    128128/** @} */
    129129
    130130/** @name Extended Audio Status and Control Register (EACS).
    131131 * @{ */
    132 #define EACS_VRA 1                 /**< Variable Rate Audio (4.2.1.1). */
    133 #define EACS_VRM 8                 /**< Variable Rate Mic Audio (4.2.1.1). */
     132#define AC97_EACS_VRA 1                 /**< Variable Rate Audio (4.2.1.1). */
     133#define AC97_EACS_VRM 8                 /**< Variable Rate Mic Audio (4.2.1.1). */
    134134/** @} */
    135135
     
    147147/** @} */
    148148
    149 #define REC_MASK 7
     149#define AC97_REC_MASK 7
    150150enum
    151151{
    152     REC_MIC = 0,
    153     REC_CD,
    154     REC_VIDEO,
    155     REC_AUX,
    156     REC_LINE_IN,
    157     REC_STEREO_MIX,
    158     REC_MONO_MIX,
    159     REC_PHONE
     152    AC97_REC_MIC = 0,
     153    AC97_REC_CD,
     154    AC97_REC_VIDEO,
     155    AC97_REC_AUX,
     156    AC97_REC_LINE_IN,
     157    AC97_REC_STEREO_MIX,
     158    AC97_REC_MONO_MIX,
     159    AC97_REC_PHONE
    160160};
    161161
     
    198198
    199199/* Codec models. */
    200 enum {
    201     Codec_STAC9700 = 0,     /* SigmaTel STAC9700 */
    202     Codec_AD1980,           /* Analog Devices AD1980 */
    203     Codec_AD1981B           /* Analog Devices AD1981B */
    204 };
     200typedef enum
     201{
     202    AC97_CODEC_STAC9700 = 0,     /* SigmaTel STAC9700 */
     203    AC97_CODEC_AD1980,           /* Analog Devices AD1980 */
     204    AC97_CODEC_AD1981B           /* Analog Devices AD1981B */
     205} AC97CODEC;
    205206
    206207/* Analog Devices miscellaneous regiter bits used in AD1980. */
    207 #define AD_MISC_LOSEL       RT_BIT(5)   /* Surround (rear) goes to line out outputs. */
    208 #define AD_MISC_HPSEL       RT_BIT(10)  /* PCM (front) goes to headphone outputs. */
     208#define AC97_AD_MISC_LOSEL       RT_BIT(5)   /* Surround (rear) goes to line out outputs. */
     209#define AC97_AD_MISC_HPSEL       RT_BIT(10)  /* PCM (front) goes to headphone outputs. */
    209210
    210211#define ICHAC97STATE_2_DEVINS(a_pAC97)   ((a_pAC97)->pDevInsR3)
     
    231232typedef enum
    232233{
    233     PI_INDEX = 0, /** PCM in */
    234     PO_INDEX,     /** PCM out */
    235     MC_INDEX,     /** Mic in */
    236     LAST_INDEX
     234    AC97SOUNDSOURCE_PI_INDEX = 0, /** PCM in */
     235    AC97SOUNDSOURCE_PO_INDEX,     /** PCM out */
     236    AC97SOUNDSOURCE_MC_INDEX,     /** Mic in */
     237    AC97SOUNDSOURCE_LAST_INDEX
    237238} AC97SOUNDSOURCE;
    238239
    239 AC97_NABMBAR_REGS(PI, PI_INDEX * 16);
    240 AC97_NABMBAR_REGS(PO, PO_INDEX * 16);
    241 AC97_NABMBAR_REGS(MC, MC_INDEX * 16);
     240AC97_NABMBAR_REGS(PI, AC97SOUNDSOURCE_PI_INDEX * 16);
     241AC97_NABMBAR_REGS(PO, AC97SOUNDSOURCE_PO_INDEX * 16);
     242AC97_NABMBAR_REGS(MC, AC97SOUNDSOURCE_MC_INDEX * 16);
    242243#endif
    243244
     
    245246{
    246247    /** NABMBAR: Global Control Register. */
    247     GLOB_CNT = 0x2c,
     248    AC97_GLOB_CNT = 0x2c,
    248249    /** NABMBAR Global Status. */
    249     GLOB_STA = 0x30,
     250    AC97_GLOB_STA = 0x30,
    250251    /** Codec Access Semaphore Register. */
    251     CAS      = 0x34
     252    AC97_CAS      = 0x34
    252253};
    253254
     
    454455    switch (uIndex)
    455456    {
    456         case PI_INDEX: return pThis->pSinkLineIn; break;
    457         case PO_INDEX: return pThis->pSinkOutput; break;
    458         case MC_INDEX: return pThis->pSinkMicIn;  break;
     457        case AC97SOUNDSOURCE_PI_INDEX: return pThis->pSinkLineIn; break;
     458        case AC97SOUNDSOURCE_PO_INDEX: return pThis->pSinkOutput; break;
     459        case AC97SOUNDSOURCE_MC_INDEX: return pThis->pSinkMicIn;  break;
    459460        default:       break;
    460461    }
     
    480481    pRegs->bd.ctl_len = RT_H2LE_U32(u32[1]);
    481482#endif
    482     pRegs->picb       = pRegs->bd.ctl_len & BD_MAX_LEN_MASK;
     483    pRegs->picb       = pRegs->bd.ctl_len & AC97_BD_MAX_LEN_MASK;
    483484    LogFlowFunc(("bd %2d addr=%#x ctl=%#06x len=%#x(%d bytes)\n",
    484485                  pRegs->civ, pRegs->bd.addr, pRegs->bd.ctl_len >> 16,
    485                   pRegs->bd.ctl_len & BD_MAX_LEN_MASK,
    486                  (pRegs->bd.ctl_len & BD_MAX_LEN_MASK) << 1)); /** @todo r=andy Assumes 16bit samples. */
     486                  pRegs->bd.ctl_len & AC97_BD_MAX_LEN_MASK,
     487                 (pRegs->bd.ctl_len & AC97_BD_MAX_LEN_MASK) << 1)); /** @todo r=andy Assumes 16bit samples. */
    487488}
    488489
     
    498499    int  iIRQL;
    499500
    500     uint32_t new_mask = new_sr & SR_INT_MASK;
    501     uint32_t old_mask = pRegs->sr  & SR_INT_MASK;
    502 
    503     static uint32_t const masks[] = { GS_PIINT, GS_POINT, GS_MINT };
     501    uint32_t new_mask = new_sr & AC97_SR_INT_MASK;
     502    uint32_t old_mask = pRegs->sr  & AC97_SR_INT_MASK;
     503
     504    static uint32_t const masks[] = { AC97_GS_PIINT, AC97_GS_POINT, AC97_GS_MINT };
    504505
    505506    if (new_mask ^ old_mask)
     
    511512            iIRQL   = 0;
    512513        }
    513         else if ((new_mask & SR_LVBCI) && (pRegs->cr & CR_LVBIE))
     514        else if ((new_mask & AC97_SR_LVBCI) && (pRegs->cr & AC97_CR_LVBIE))
    514515        {
    515516            fSignal = true;
    516517            iIRQL   = 1;
    517518        }
    518         else if ((new_mask & SR_BCIS) && (pRegs->cr & CR_IOCE))
     519        else if ((new_mask & AC97_SR_BCIS) && (pRegs->cr & AC97_CR_IOCE))
    519520        {
    520521            fSignal = true;
     
    526527
    527528    LogFlowFunc(("IOC%d, LVB%d, sr=%#x, fSignal=%RTbool, IRQL=%d\n",
    528                  pRegs->sr & SR_BCIS, pRegs->sr & SR_LVBCI, pRegs->sr, fSignal, iIRQL));
     529                 pRegs->sr & AC97_SR_BCIS, pRegs->sr & AC97_SR_LVBCI, pRegs->sr, fSignal, iIRQL));
    529530
    530531    if (fSignal)
     
    596597    pRegs->lvi      = 0;
    597598
    598     ichac97StreamUpdateStatus(pThis, pStream, SR_DCH); /** @todo Do we need to do that? */
     599    ichac97StreamUpdateStatus(pThis, pStream, AC97_SR_DCH); /** @todo Do we need to do that? */
    599600
    600601    pRegs->picb     = 0;
    601602    pRegs->piv      = 0;
    602     pRegs->cr       = pRegs->cr & CR_DONT_CLEAR_MASK;
     603    pRegs->cr       = pRegs->cr & AC97_CR_DONT_CLEAR_MASK;
    603604    pRegs->bd_valid = 0;
    604605
     
    640641    LogFlowFuncEnter();
    641642
    642     ichac97StreamInit(pThis, &pThis->StreamLineIn, PI_INDEX);
    643     ichac97StreamInit(pThis, &pThis->StreamMicIn,  MC_INDEX);
    644     ichac97StreamInit(pThis, &pThis->StreamOut,    PO_INDEX);
     643    ichac97StreamInit(pThis, &pThis->StreamLineIn, AC97SOUNDSOURCE_PI_INDEX);
     644    ichac97StreamInit(pThis, &pThis->StreamMicIn,  AC97SOUNDSOURCE_MC_INDEX);
     645    ichac97StreamInit(pThis, &pThis->StreamOut,    AC97SOUNDSOURCE_PO_INDEX);
    645646
    646647    return VINF_SUCCESS;
     
    845846    AssertPtrReturn(pThis,             VERR_INVALID_POINTER);
    846847    AssertPtrReturn(pStream,           VERR_INVALID_POINTER);
    847     AssertReturn(u8Strm <= LAST_INDEX, VERR_INVALID_PARAMETER);
     848    AssertReturn(u8Strm <= AC97SOUNDSOURCE_LAST_INDEX, VERR_INVALID_PARAMETER);
    848849    AssertPtrReturn(pCfg,              VERR_INVALID_POINTER);
    849850
     
    856857    switch (pStream->u8Strm)
    857858    {
    858         case PI_INDEX:
     859        case AC97SOUNDSOURCE_PI_INDEX:
    859860            rc = ichac97CreateIn(pThis, "ac97.pi", PDMAUDIORECSOURCE_LINE, pCfg);
    860861            break;
    861862
    862         case MC_INDEX:
     863        case AC97SOUNDSOURCE_MC_INDEX:
    863864            rc = ichac97CreateIn(pThis, "ac97.mc", PDMAUDIORECSOURCE_MIC, pCfg);
    864865            break;
    865866
    866         case PO_INDEX:
     867        case AC97SOUNDSOURCE_PO_INDEX:
    867868            rc = ichac97CreateOut(pThis, "ac97.po", pCfg);
    868869            break;
     
    889890    switch (u8Strm)
    890891    {
    891         case PI_INDEX:
     892        case AC97SOUNDSOURCE_PI_INDEX:
    892893            streamCfg.uHz               = ichac97MixerGet(pThis, AC97_PCM_LR_ADC_Rate);
    893894            streamCfg.enmDir            = PDMAUDIODIR_IN;
     
    895896            break;
    896897
    897         case MC_INDEX:
     898        case AC97SOUNDSOURCE_MC_INDEX:
    898899            streamCfg.uHz               = ichac97MixerGet(pThis, AC97_MIC_ADC_Rate);
    899900            streamCfg.enmDir            = PDMAUDIODIR_IN;
     
    901902            break;
    902903
    903         case PO_INDEX:
     904        case AC97SOUNDSOURCE_PO_INDEX:
    904905            streamCfg.uHz               = ichac97MixerGet(pThis, AC97_PCM_Front_DAC_Rate);
    905906            streamCfg.enmDir            = PDMAUDIODIR_OUT;
     
    10861087    switch (i)
    10871088    {
    1088         case REC_MIC:     return PDMAUDIORECSOURCE_MIC;
    1089         case REC_CD:      return PDMAUDIORECSOURCE_CD;
    1090         case REC_VIDEO:   return PDMAUDIORECSOURCE_VIDEO;
    1091         case REC_AUX:     return PDMAUDIORECSOURCE_AUX;
    1092         case REC_LINE_IN: return PDMAUDIORECSOURCE_LINE;
    1093         case REC_PHONE:   return PDMAUDIORECSOURCE_PHONE;
     1089        case AC97_REC_MIC:     return PDMAUDIORECSOURCE_MIC;
     1090        case AC97_REC_CD:      return PDMAUDIORECSOURCE_CD;
     1091        case AC97_REC_VIDEO:   return PDMAUDIORECSOURCE_VIDEO;
     1092        case AC97_REC_AUX:     return PDMAUDIORECSOURCE_AUX;
     1093        case AC97_REC_LINE_IN: return PDMAUDIORECSOURCE_LINE;
     1094        case AC97_REC_PHONE:   return PDMAUDIORECSOURCE_PHONE;
    10941095        default:
    10951096            break;
     
    11041105    switch (rs)
    11051106    {
    1106         case PDMAUDIORECSOURCE_MIC:     return REC_MIC;
    1107         case PDMAUDIORECSOURCE_CD:      return REC_CD;
    1108         case PDMAUDIORECSOURCE_VIDEO:   return REC_VIDEO;
    1109         case PDMAUDIORECSOURCE_AUX:     return REC_AUX;
    1110         case PDMAUDIORECSOURCE_LINE: return REC_LINE_IN;
    1111         case PDMAUDIORECSOURCE_PHONE:   return REC_PHONE;
     1107        case PDMAUDIORECSOURCE_MIC:     return AC97_REC_MIC;
     1108        case PDMAUDIORECSOURCE_CD:      return AC97_REC_CD;
     1109        case PDMAUDIORECSOURCE_VIDEO:   return AC97_REC_VIDEO;
     1110        case PDMAUDIORECSOURCE_AUX:     return AC97_REC_AUX;
     1111        case PDMAUDIORECSOURCE_LINE: return AC97_REC_LINE_IN;
     1112        case PDMAUDIORECSOURCE_PHONE:   return AC97_REC_PHONE;
    11121113        default:
    11131114            break;
     
    11151116
    11161117    LogFlowFunc(("Unknown audio recording source %d using MIC\n", rs));
    1117     return REC_MIC;
     1118    return AC97_REC_MIC;
    11181119}
    11191120
    11201121static void ichac97RecordSelect(PAC97STATE pThis, uint32_t val)
    11211122{
    1122     uint8_t rs = val & REC_MASK;
    1123     uint8_t ls = (val >> 8) & REC_MASK;
     1123    uint8_t rs = val & AC97_REC_MASK;
     1124    uint8_t ls = (val >> 8) & AC97_REC_MASK;
    11241125    PDMAUDIORECSOURCE ars = ichac97IndextoRecSource(rs);
    11251126    PDMAUDIORECSOURCE als = ichac97IndextoRecSource(ls);
     
    11601161    ichac97MixerSet(pThis, AC97_MIC_ADC_Rate            , 0xbb80);
    11611162
    1162     if (pThis->uCodecModel == Codec_AD1980)
     1163    if (pThis->uCodecModel == AC97_CODEC_AD1980)
    11631164    {
    11641165        /* Analog Devices 1980 (AD1980) */
     
    11681169        ichac97MixerSet(pThis, AC97_Headphone_Volume_Mute   , 0x8000);
    11691170    }
    1170     else if (pThis->uCodecModel == Codec_AD1981B)
     1171    else if (pThis->uCodecModel == AC97_CODEC_AD1981B)
    11711172    {
    11721173        /* Analog Devices 1981B (AD1981B) */
     
    13371338
    13381339    /* Select audio sink to process. */
    1339     AssertMsg(pStream->u8Strm != PO_INDEX, ("Can't read from output\n"));
    1340     PAUDMIXSINK pSink = pStream->u8Strm == MC_INDEX ? pThis->pSinkMicIn : pThis->pSinkLineIn;
     1340    AssertMsg(pStream->u8Strm != AC97SOUNDSOURCE_PO_INDEX, ("Can't read from output\n"));
     1341    PAUDMIXSINK pSink = pStream->u8Strm == AC97SOUNDSOURCE_MC_INDEX ? pThis->pSinkMicIn : pThis->pSinkLineIn;
    13411342    AssertPtr(pSink);
    13421343
     
    14941495    PAC97BMREGS pRegs = &pStream->Regs;
    14951496
    1496     if (pRegs->sr & SR_DCH) /* Controller halted? */
    1497     {
    1498         if (pRegs->cr & CR_RPBM) /* Bus master operation starts. */
     1497    if (pRegs->sr & AC97_SR_DCH) /* Controller halted? */
     1498    {
     1499        if (pRegs->cr & AC97_CR_RPBM) /* Bus master operation starts. */
    14991500        {
    15001501            switch (pStream->u8Strm)
    15011502            {
    1502                 case PO_INDEX:
     1503                case AC97SOUNDSOURCE_PO_INDEX:
    15031504                    ichac97WriteBUP(pThis, cbToProcess);
    15041505                    break;
     
    15151516
    15161517    /* BCIS flag still set? Skip iteration. */
    1517     if (pRegs->sr & SR_BCIS)
     1518    if (pRegs->sr & AC97_SR_BCIS)
    15181519    {
    15191520        Log3Func(("[SD%RU8] BCIS set\n", pStream->u8Strm));
     
    15441545            if (pRegs->civ == pRegs->lvi)
    15451546            {
    1546                 pRegs->sr |= SR_DCH; /** @todo r=andy Also set CELV? */
     1547                pRegs->sr |= AC97_SR_DCH; /** @todo r=andy Also set CELV? */
    15471548                pThis->bup_flag = 0;
    15481549
     
    15511552            }
    15521553
    1553             pRegs->sr &= ~SR_CELV;
     1554            pRegs->sr &= ~AC97_SR_CELV;
    15541555            pRegs->civ = pRegs->piv;
    15551556            pRegs->piv = (pRegs->piv + 1) % 32; /** @todo r=andy Define for max BDLEs? */
     
    15621563        switch (pStream->u8Strm)
    15631564        {
    1564             case PO_INDEX:
     1565            case AC97SOUNDSOURCE_PO_INDEX:
    15651566            {
    15661567                cbToTransfer = RT_MIN((uint32_t)(pRegs->picb << 1), cbLeft); /** @todo r=andy Assumes 16bit samples. */
     
    15791580            }
    15801581
    1581             case PI_INDEX:
    1582             case MC_INDEX:
     1582            case AC97SOUNDSOURCE_PI_INDEX:
     1583            case AC97SOUNDSOURCE_MC_INDEX:
    15831584            {
    15841585                cbToTransfer = RT_MIN((uint32_t)(pRegs->picb << 1), cbLeft); /** @todo r=andy Assumes 16bit samples. */
     
    16071608        if (!pRegs->picb)
    16081609        {
    1609             uint32_t new_sr = pRegs->sr & ~SR_CELV;
    1610 
    1611             if (pRegs->bd.ctl_len & BD_IOC)
     1610            uint32_t new_sr = pRegs->sr & ~AC97_SR_CELV;
     1611
     1612            if (pRegs->bd.ctl_len & AC97_BD_IOC)
    16121613            {
    1613                 new_sr |= SR_BCIS;
     1614                new_sr |= AC97_SR_BCIS;
    16141615            }
    16151616
     
    16191620                LogFunc(("Underrun CIV (%RU8) == LVI (%RU8)\n", pRegs->civ, pRegs->lvi));
    16201621
    1621                 new_sr |= SR_LVBCI | SR_DCH | SR_CELV;
    1622                 pThis->bup_flag = (pRegs->bd.ctl_len & BD_BUP) ? BUP_LAST : 0;
     1622                new_sr |= AC97_SR_LVBCI | AC97_SR_DCH | AC97_SR_CELV;
     1623                pThis->bup_flag = (pRegs->bd.ctl_len & AC97_BD_BUP) ? BUP_LAST : 0;
    16231624
    16241625                rc = VINF_EOF;
     
    16681669            switch (uPortIdx)
    16691670            {
    1670                 case CAS:
     1671                case AC97_CAS:
    16711672                    /* Codec Access Semaphore Register */
    16721673                    LogFlowFunc(("CAS %d\n", pThis->cas));
     
    17741775                                 AC97_PORT2IDX(uPortIdx), *pu32Val, pRegs->picb, pRegs->piv, pRegs->cr));
    17751776                    break;
    1776                 case GLOB_CNT:
     1777                case AC97_GLOB_CNT:
    17771778                    /* Global Control */
    17781779                    *pu32Val = pThis->glob_cnt;
    17791780                    LogFlowFunc(("glob_cnt -> %#x\n", *pu32Val));
    17801781                    break;
    1781                 case GLOB_STA:
     1782                case AC97_GLOB_STA:
    17821783                    /* Global Status */
    1783                     *pu32Val = pThis->glob_sta | GS_S0CR;
     1784                    *pu32Val = pThis->glob_sta | AC97_GS_S0CR;
    17841785                    LogFlowFunc(("glob_sta -> %#x\n", *pu32Val));
    17851786                    break;
     
    18221823                case MC_LVI:
    18231824                    /* Last Valid Index */
    1824                     if ((pRegs->cr & CR_RPBM) && (pRegs->sr & SR_DCH))
     1825                    if ((pRegs->cr & AC97_CR_RPBM) && (pRegs->sr & AC97_SR_DCH))
    18251826                    {
    1826                         pRegs->sr &= ~(SR_DCH | SR_CELV);
     1827                        pRegs->sr &= ~(AC97_SR_DCH | AC97_SR_CELV);
    18271828                        pRegs->civ = pRegs->piv;
    18281829                        pRegs->piv = (pRegs->piv + 1) % 32;
     
    18381839                {
    18391840                    /* Control Register */
    1840                     if (u32Val & CR_RR) /* Busmaster reset */
     1841                    if (u32Val & AC97_CR_RR) /* Busmaster reset */
    18411842                    {
    18421843                        ichac97StreamResetBMRegs(pThis, pStream);
     
    18441845                    else
    18451846                    {
    1846                         pRegs->cr = u32Val & CR_VALID_MASK;
    1847                         if (!(pRegs->cr & CR_RPBM))
     1847                        pRegs->cr = u32Val & AC97_CR_VALID_MASK;
     1848                        if (!(pRegs->cr & AC97_CR_RPBM))
    18481849                        {
    18491850                            ichac97StreamSetActive(pThis, pStream, false /* fActive */);
    1850                             pRegs->sr |= SR_DCH;
     1851                            pRegs->sr |= AC97_SR_DCH;
    18511852                        }
    18521853                        else
     
    18571858                            ichac97StreamFetchBDLE(pThis, pStream);
    18581859
    1859                             pRegs->sr &= ~SR_DCH;
     1860                            pRegs->sr &= ~AC97_SR_DCH;
    18601861                            ichac97StreamSetActive(pThis, pStream, true /* fActive */);
    18611862                        }
     
    18681869                case MC_SR:
    18691870                    /* Status Register */
    1870                     pRegs->sr |= u32Val & ~(SR_RO_MASK | SR_WCLEAR_MASK);
    1871                     ichac97StreamUpdateStatus(pThis, pStream, pRegs->sr & ~(u32Val & SR_WCLEAR_MASK));
     1871                    pRegs->sr |= u32Val & ~(AC97_SR_RO_MASK | AC97_SR_WCLEAR_MASK);
     1872                    ichac97StreamUpdateStatus(pThis, pStream, pRegs->sr & ~(u32Val & AC97_SR_WCLEAR_MASK));
    18721873                    LogFlowFunc(("SR[%d] <- %#x (sr %#x)\n", AC97_PORT2IDX(uPortIdx), u32Val, pRegs->sr));
    18731874                    break;
     
    18871888                case MC_SR:
    18881889                    /* Status Register */
    1889                     pRegs->sr |= u32Val & ~(SR_RO_MASK | SR_WCLEAR_MASK);
    1890                     ichac97StreamUpdateStatus(pThis, pStream, pRegs->sr & ~(u32Val & SR_WCLEAR_MASK));
     1890                    pRegs->sr |= u32Val & ~(AC97_SR_RO_MASK | AC97_SR_WCLEAR_MASK);
     1891                    ichac97StreamUpdateStatus(pThis, pStream, pRegs->sr & ~(u32Val & AC97_SR_WCLEAR_MASK));
    18911892                    LogFlowFunc(("SR[%d] <- %#x (sr %#x)\n", AC97_PORT2IDX(uPortIdx), u32Val, pRegs->sr));
    18921893                    break;
     
    19091910                    LogFlowFunc(("BDBAR[%d] <- %#x (bdbar %#x)\n", AC97_PORT2IDX(uPortIdx), u32Val, pRegs->bdbar));
    19101911                    break;
    1911                 case GLOB_CNT:
     1912                case AC97_GLOB_CNT:
    19121913                    /* Global Control */
    1913                     if (u32Val & GC_WR)
     1914                    if (u32Val & AC97_GC_WR)
    19141915                        ichac97WarmReset(pThis);
    1915                     if (u32Val & GC_CR)
     1916                    if (u32Val & AC97_GC_CR)
    19161917                        ichac97ColdReset(pThis);
    1917                     if (!(u32Val & (GC_WR | GC_CR)))
    1918                         pThis->glob_cnt = u32Val & GC_VALID_MASK;
     1918                    if (!(u32Val & (AC97_GC_WR | AC97_GC_CR)))
     1919                        pThis->glob_cnt = u32Val & AC97_GC_VALID_MASK;
    19191920                    LogFlowFunc(("glob_cnt <- %#x (glob_cnt %#x)\n", u32Val, pThis->glob_cnt));
    19201921                    break;
    1921                 case GLOB_STA:
     1922                case AC97_GLOB_STA:
    19221923                    /* Global Status */
    1923                     pThis->glob_sta &= ~(u32Val & GS_WCLEAR_MASK);
    1924                     pThis->glob_sta |= (u32Val & ~(GS_WCLEAR_MASK | GS_RO_MASK)) & GS_VALID_MASK;
     1924                    pThis->glob_sta &= ~(u32Val & AC97_GS_WCLEAR_MASK);
     1925                    pThis->glob_sta |= (u32Val & ~(AC97_GS_WCLEAR_MASK | AC97_GS_RO_MASK)) & AC97_GS_VALID_MASK;
    19251926                    LogFlowFunc(("glob_sta <- %#x (glob_sta %#x)\n", u32Val, pThis->glob_sta));
    19261927                    break;
     
    20172018                    break;
    20182019                case AC97_Master_Volume_Mute:
    2019                     if (pThis->uCodecModel == Codec_AD1980)
     2020                    if (pThis->uCodecModel == AC97_CODEC_AD1980)
    20202021                    {
    2021                         if (ichac97MixerGet(pThis, AC97_AD_Misc) & AD_MISC_LOSEL)
     2022                        if (ichac97MixerGet(pThis, AC97_AD_Misc) & AC97_AD_MISC_LOSEL)
    20222023                            break; /* Register controls surround (rear), do nothing. */
    20232024                    }
     
    20252026                    break;
    20262027                case AC97_Headphone_Volume_Mute:
    2027                     if (pThis->uCodecModel == Codec_AD1980)
     2028                    if (pThis->uCodecModel == AC97_CODEC_AD1980)
    20282029                    {
    2029                         if (ichac97MixerGet(pThis, AC97_AD_Misc) & AD_MISC_HPSEL)
     2030                        if (ichac97MixerGet(pThis, AC97_AD_Misc) & AC97_AD_MISC_HPSEL)
    20302031                        {
    20312032                            /* Register controls PCM (front) outputs. */
     
    20512052                    break;
    20522053                case AC97_Extended_Audio_Ctrl_Stat:
    2053                     if (!(u32Val & EACS_VRA))
     2054                    if (!(u32Val & AC97_EACS_VRA))
    20542055                    {
    20552056                        ichac97MixerSet(pThis, AC97_PCM_Front_DAC_Rate, 48000);
     
    20592060                        ichac97StreamReInit(pThis, &pThis->StreamLineIn);
    20602061                    }
    2061                     if (!(u32Val & EACS_VRM))
     2062                    if (!(u32Val & AC97_EACS_VRM))
    20622063                    {
    20632064                        ichac97MixerSet(pThis, AC97_MIC_ADC_Rate,       48000);
     
    20682069                    break;
    20692070                case AC97_PCM_Front_DAC_Rate:
    2070                     if (ichac97MixerGet(pThis, AC97_Extended_Audio_Ctrl_Stat) & EACS_VRA)
     2071                    if (ichac97MixerGet(pThis, AC97_Extended_Audio_Ctrl_Stat) & AC97_EACS_VRA)
    20712072                    {
    20722073                        ichac97MixerSet(pThis, index, u32Val);
     
    20782079                    break;
    20792080                case AC97_MIC_ADC_Rate:
    2080                     if (ichac97MixerGet(pThis, AC97_Extended_Audio_Ctrl_Stat) & EACS_VRM)
     2081                    if (ichac97MixerGet(pThis, AC97_Extended_Audio_Ctrl_Stat) & AC97_EACS_VRM)
    20812082                    {
    20822083                        ichac97MixerSet(pThis, index, u32Val);
     
    20882089                    break;
    20892090                case AC97_PCM_LR_ADC_Rate:
    2090                     if (ichac97MixerGet(pThis, AC97_Extended_Audio_Ctrl_Stat) & EACS_VRA)
     2091                    if (ichac97MixerGet(pThis, AC97_Extended_Audio_Ctrl_Stat) & AC97_EACS_VRA)
    20912092                    {
    20922093                        ichac97MixerSet(pThis, index, u32Val);
     
    21572158    switch (uID)
    21582159    {
    2159         case PI_INDEX: return &pThis->StreamLineIn;
    2160         case MC_INDEX: return &pThis->StreamMicIn;
    2161         case PO_INDEX: return &pThis->StreamOut;
     2160        case AC97SOUNDSOURCE_PI_INDEX: return &pThis->StreamLineIn;
     2161        case AC97SOUNDSOURCE_MC_INDEX: return &pThis->StreamMicIn;
     2162        case AC97SOUNDSOURCE_PO_INDEX: return &pThis->StreamOut;
    21622163        default:       break;
    21632164    }
     
    22092210    SSMR3PutMem(pSSM, pThis->mixer_data, sizeof(pThis->mixer_data));
    22102211
    2211     uint8_t active[LAST_INDEX];
    2212 
    2213     active[PI_INDEX] = ichac97StreamIsActive(pThis, &pThis->StreamLineIn) ? 1 : 0;
    2214     active[PO_INDEX] = ichac97StreamIsActive(pThis, &pThis->StreamOut)    ? 1 : 0;
    2215     active[MC_INDEX] = ichac97StreamIsActive(pThis, &pThis->StreamMicIn)  ? 1 : 0;
     2212    uint8_t active[AC97SOUNDSOURCE_LAST_INDEX];
     2213
     2214    active[AC97SOUNDSOURCE_PI_INDEX] = ichac97StreamIsActive(pThis, &pThis->StreamLineIn) ? 1 : 0;
     2215    active[AC97SOUNDSOURCE_PO_INDEX] = ichac97StreamIsActive(pThis, &pThis->StreamOut)    ? 1 : 0;
     2216    active[AC97SOUNDSOURCE_MC_INDEX] = ichac97StreamIsActive(pThis, &pThis->StreamMicIn)  ? 1 : 0;
    22162217
    22172218    SSMR3PutMem(pSSM, active, sizeof(active));
     
    22672268
    22682269    /** @todo r=andy Stream IDs are hardcoded to certain streams. */
    2269     uint8_t uaStrmsActive[LAST_INDEX];
     2270    uint8_t uaStrmsActive[AC97SOUNDSOURCE_LAST_INDEX];
    22702271    SSMR3GetMem(pSSM, uaStrmsActive, sizeof(uaStrmsActive));
    22712272
     
    22772278    V_(AC97_Mic_Volume_Mute,     PDMAUDIOMIXERCTL_MIC_IN);
    22782279# undef V_
    2279     if (pThis->uCodecModel == Codec_AD1980)
    2280         if (ichac97MixerGet(pThis, AC97_AD_Misc) & AD_MISC_HPSEL)
     2280    if (pThis->uCodecModel == AC97_CODEC_AD1980)
     2281        if (ichac97MixerGet(pThis, AC97_AD_Misc) & AC97_AD_MISC_HPSEL)
    22812282            ichac97MixerSetVolume(pThis, AC97_Headphone_Volume_Mute, PDMAUDIOMIXERCTL_VOLUME_MASTER,
    22822283                             ichac97MixerGet(pThis, AC97_Headphone_Volume_Mute));
     
    22862287    {
    22872288        /** @todo r=andy Stream IDs are hardcoded to certain streams. */
    2288         rc = ichac97StreamSetActive(pThis, &pThis->StreamLineIn,    RT_BOOL(uaStrmsActive[PI_INDEX]));
     2289        rc = ichac97StreamSetActive(pThis, &pThis->StreamLineIn,    RT_BOOL(uaStrmsActive[AC97SOUNDSOURCE_PI_INDEX]));
    22892290        if (RT_SUCCESS(rc))
    2290             rc = ichac97StreamSetActive(pThis, &pThis->StreamMicIn, RT_BOOL(uaStrmsActive[MC_INDEX]));
     2291            rc = ichac97StreamSetActive(pThis, &pThis->StreamMicIn, RT_BOOL(uaStrmsActive[AC97SOUNDSOURCE_MC_INDEX]));
    22912292        if (RT_SUCCESS(rc))
    2292             rc = ichac97StreamSetActive(pThis, &pThis->StreamOut,   RT_BOOL(uaStrmsActive[PO_INDEX]));
     2293            rc = ichac97StreamSetActive(pThis, &pThis->StreamOut,   RT_BOOL(uaStrmsActive[AC97SOUNDSOURCE_PO_INDEX]));
    22932294    }
    22942295
     
    26152616    bool fChipAD1980 = false;
    26162617    if (!strcmp(szCodec, "STAC9700"))
    2617         pThis->uCodecModel = Codec_STAC9700;
     2618        pThis->uCodecModel = AC97_CODEC_STAC9700;
    26182619    else if (!strcmp(szCodec, "AD1980"))
    2619         pThis->uCodecModel = Codec_AD1980;
     2620        pThis->uCodecModel = AC97_CODEC_AD1980;
    26202621    else if (!strcmp(szCodec, "AD1981B"))
    2621         pThis->uCodecModel = Codec_AD1981B;
     2622        pThis->uCodecModel = AC97_CODEC_AD1981B;
    26222623    else
    26232624    {
     
    26512652    PCIDevSetInterruptPin     (&pThis->PciDev, 0x01);   /* 3d ro - INTA#. */               Assert(pThis->PciDev.config[0x3d] == 0x01);
    26522653
    2653     if (pThis->uCodecModel == Codec_AD1980)
     2654    if (pThis->uCodecModel == AC97_CODEC_AD1980)
    26542655    {
    26552656        PCIDevSetSubSystemVendorId(&pThis->PciDev, 0x1028); /* 2c ro - Dell.) */
    26562657        PCIDevSetSubSystemId      (&pThis->PciDev, 0x0177); /* 2e ro. */
    26572658    }
    2658     else if (pThis->uCodecModel == Codec_AD1981B)
     2659    else if (pThis->uCodecModel == AC97_CODEC_AD1981B)
    26592660    {
    26602661        PCIDevSetSubSystemVendorId(&pThis->PciDev, 0x1028); /* 2c ro - Dell.) */
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