VirtualBox

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


Ignore:
Timestamp:
Jun 2, 2017 12:50:42 PM (8 years ago)
Author:
vboxsync
Message:

HDA: Fewer macros.

File:
1 edited

Legend:

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

    r67058 r67238  
    198198#define HDA_INTCTL_GIE_SHIFT        31
    199199#define HDA_INTCTL_CIE_SHIFT        30
    200 #define HDA_INTCTL_S0_SHIFT         0
    201 #define HDA_INTCTL_S1_SHIFT         1
    202 #define HDA_INTCTL_S2_SHIFT         2
    203 #define HDA_INTCTL_S3_SHIFT         3
    204 #define HDA_INTCTL_S4_SHIFT         4
    205 #define HDA_INTCTL_S5_SHIFT         5
    206 #define HDA_INTCTL_S6_SHIFT         6
    207 #define HDA_INTCTL_S7_SHIFT         7
    208 #define INTCTL_SX(pThis, X)         (HDA_REG_FLAG_VALUE((pThis), INTCTL, S##X))
     200/* Bits 0-29 correspond to streams 0-29. */
    209201#define HDA_INTCTL_GIE_MASK         RT_BIT(31) /* Global Interrupt Enable (3.3.14). */
    210202
     
    213205#define HDA_INTSTS_GIS_SHIFT        31
    214206#define HDA_INTSTS_CIS_SHIFT        30
    215 #define HDA_INTSTS_S0_SHIFT         0
    216 #define HDA_INTSTS_S1_SHIFT         1
    217 #define HDA_INTSTS_S2_SHIFT         2
    218 #define HDA_INTSTS_S3_SHIFT         3
    219 #define HDA_INTSTS_S4_SHIFT         4
    220 #define HDA_INTSTS_S5_SHIFT         5
    221 #define HDA_INTSTS_S6_SHIFT         6
    222 #define HDA_INTSTS_S7_SHIFT         7
    223 #define HDA_INTSTS_S_MASK(num)      RT_BIT(HDA_REG_FIELD_SHIFT(S##num))
     207/* Bits 0-29 correspond to streams 0-29. */
    224208
    225209#define HDA_REG_WALCLK              13 /* 0x30 */
     
    379363
    380364#define SDSTS(pThis, num)           HDA_REG((pThis), SD(STS, num))
    381 #define HDA_SDSTS_FIFORDY_SHIFT     5
    382 #define HDA_SDSTS_DE_SHIFT          4
    383 #define HDA_SDSTS_FE_SHIFT          3
    384 #define HDA_SDSTS_BCIS_SHIFT        2
     365#define HDA_SDSTS_FIFORDY           RT_BIT(5)   /* FIFO Ready */
     366#define HDA_SDSTS_DESE              RT_BIT(4)   /* Descriptor Error */
     367#define HDA_SDSTS_FIFOE             RT_BIT(3)   /* FIFO Error */
     368#define HDA_SDSTS_BCIS              RT_BIT(2)   /* Buffer Completion Interrupt Status */
    385369
    386370#define HDA_REG_SD0LPIB             36 /* 0x84 */
     
    14651449
    14661450#define HDA_MARK_STREAM(x)                                                  \
    1467         if (   (INTCTL_SX(pThis, x))                                        \
    1468             && (   (SDSTS(pThis, x) & HDA_REG_FIELD_FLAG_MASK(SDSTS, DE))   \
    1469                 || (SDSTS(pThis, x) & HDA_REG_FIELD_FLAG_MASK(SDSTS, FE))   \
    1470                 || (SDSTS(pThis, x) & HDA_REG_FIELD_FLAG_MASK(SDSTS, BCIS)) \
    1471                )                                                            \
     1451        if (   (HDA_REG(pThis, INTCTL) & RT_BIT(x))                         \
     1452            && ((SDSTS(pThis, x) & (HDA_SDSTS_DESE | HDA_SDSTS_FIFOE | HDA_SDSTS_BCIS))) \
    14721453           )                                                                \
    14731454    {                                                                       \
     
    18601841     * Second, initialize the registers.
    18611842     */
    1862     HDA_STREAM_REG(pThis, STS,   uSD) = HDA_REG_FIELD_FLAG_MASK(SDSTS, FIFORDY);
     1843    HDA_STREAM_REG(pThis, STS,   uSD) = HDA_SDSTS_FIFORDY;
    18631844    /* According to the ICH6 datasheet, 0x40000 is the default value for stream descriptor register 23:20
    18641845     * bits are reserved for stream number 18.2.33, resets SDnCTL except SRST bit. */
     
    22082189    else
    22092190    {
    2210         /** @todo Clear INTSTS's individual stream status bits as well? */
    2211 
    22122191        /* Make sure to lower interrupt line, as Global Interrupt Enable (GIE) is disabled. */
    22132192        PDMDevHlpPCISetIrq(pThis->CTX_SUFF(pDevIns), 0, 0 /* iLevel */);
     
    41084087        fProceed = false;
    41094088    /* Is the BCIS (Buffer Completion Interrupt Status) flag set? Then we have to wait and skip. */
    4110     else if ((HDA_STREAM_REG(pThis, STS, pStream->u8SD) & HDA_REG_FIELD_FLAG_MASK(SDSTS, BCIS)))
     4089    else if ((HDA_STREAM_REG(pThis, STS, pStream->u8SD) & HDA_SDSTS_BCIS))
    41114090        fProceed = false;
    41124091
     
    42454224         * This must be set in *any* case.
    42464225         */
    4247         HDA_STREAM_REG(pThis, STS, pStream->u8SD) |= HDA_REG_FIELD_FLAG_MASK(SDSTS, BCIS);
     4226        HDA_STREAM_REG(pThis, STS, pStream->u8SD) |= HDA_SDSTS_BCIS;
    42484227        Log3Func(("[SD%RU8]: BCIS set\n", pStream->u8SD));
    42494228
     
    55845563                       "SDSTS(raw:%#0x, fifordy:%RTbool, dese:%RTbool, fifoe:%RTbool, bcis:%RTbool)",
    55855564                       uSdSts,
    5586                        RT_BOOL(uSdSts & HDA_REG_FIELD_FLAG_MASK(SDSTS, FIFORDY)),
    5587                        RT_BOOL(uSdSts & HDA_REG_FIELD_FLAG_MASK(SDSTS, DE)),
    5588                        RT_BOOL(uSdSts & HDA_REG_FIELD_FLAG_MASK(SDSTS, FE)),
    5589                        RT_BOOL(uSdSts & HDA_REG_FIELD_FLAG_MASK(SDSTS, BCIS)));
     5565                       RT_BOOL(uSdSts & HDA_SDSTS_FIFORDY),
     5566                       RT_BOOL(uSdSts & HDA_SDSTS_DESE),
     5567                       RT_BOOL(uSdSts & HDA_SDSTS_FIFOE),
     5568                       RT_BOOL(uSdSts & HDA_SDSTS_BCIS));
    55905569}
    55915570
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