VirtualBox

Changeset 67248 in vbox for trunk/src


Ignore:
Timestamp:
Jun 2, 2017 3:24:56 PM (8 years ago)
Author:
vboxsync
Message:

HDA: The War on Macros continues. Again no functional changes intended.

File:
1 edited

Legend:

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

    r67241 r67248  
    307307/** @todo Condense marcos! */
    308308
    309 #define HDA_REG_SD0CTL              HDA_NUM_GENERAL_REGS /* 0x80 */
    310 #define HDA_REG_SD1CTL              (HDA_STREAM_REG_DEF(CTL, 0) + 10)  /* 0xA0 */
    311 #define HDA_REG_SD2CTL              (HDA_STREAM_REG_DEF(CTL, 0) + 20)  /* 0xC0 */
    312 #define HDA_REG_SD3CTL              (HDA_STREAM_REG_DEF(CTL, 0) + 30)  /* 0xE0 */
    313 #define HDA_REG_SD4CTL              (HDA_STREAM_REG_DEF(CTL, 0) + 40)  /* 0x100 */
    314 #define HDA_REG_SD5CTL              (HDA_STREAM_REG_DEF(CTL, 0) + 50)  /* 0x120 */
    315 #define HDA_REG_SD6CTL              (HDA_STREAM_REG_DEF(CTL, 0) + 60)  /* 0x140 */
    316 #define HDA_REG_SD7CTL              (HDA_STREAM_REG_DEF(CTL, 0) + 70)  /* 0x160 */
     309#define HDA_REG_SD0CTL              HDA_NUM_GENERAL_REGS /* 0x80; other streams offset by 0x20 */
    317310#define HDA_RMX_SD0CTL              32
    318311#define HDA_RMX_SD1CTL              (HDA_STREAM_RMX_DEF(CTL, 0) + 10)
     
    326319#define SD(func, num)               SD##num##func
    327320
    328 #define HDA_SDCTL(pThis, num)       HDA_REG((pThis), SD(CTL, num))
    329321#define HDA_SDCTL_NUM_MASK          0xF
    330322#define HDA_SDCTL_NUM_SHIFT         20
     
    339331#define HDA_SDCTL_SRST              RT_BIT(0)   /* Stream Reset */
    340332
    341 #define HDA_REG_SD0STS              35 /* 0x83 */
    342 #define HDA_REG_SD1STS              (HDA_STREAM_REG_DEF(STS, 0) + 10) /* 0xA3 */
    343 #define HDA_REG_SD2STS              (HDA_STREAM_REG_DEF(STS, 0) + 20) /* 0xC3 */
    344 #define HDA_REG_SD3STS              (HDA_STREAM_REG_DEF(STS, 0) + 30) /* 0xE3 */
    345 #define HDA_REG_SD4STS              (HDA_STREAM_REG_DEF(STS, 0) + 40) /* 0x103 */
    346 #define HDA_REG_SD5STS              (HDA_STREAM_REG_DEF(STS, 0) + 50) /* 0x123 */
    347 #define HDA_REG_SD6STS              (HDA_STREAM_REG_DEF(STS, 0) + 60) /* 0x143 */
    348 #define HDA_REG_SD7STS              (HDA_STREAM_REG_DEF(STS, 0) + 70) /* 0x163 */
     333#define HDA_REG_SD0STS              35 /* 0x83; other streams offset by 0x20 */
    349334#define HDA_RMX_SD0STS              33
    350335#define HDA_RMX_SD1STS              (HDA_STREAM_RMX_DEF(STS, 0) + 10)
     
    362347#define HDA_SDSTS_BCIS              RT_BIT(2)   /* Buffer Completion Interrupt Status */
    363348
    364 #define HDA_REG_SD0LPIB             36 /* 0x84 */
     349#define HDA_REG_SD0LPIB             36 /* 0x84; other streams offset by 0x20 */
    365350#define HDA_REG_SD1LPIB             (HDA_STREAM_REG_DEF(LPIB, 0) + 10) /* 0xA4 */
    366351#define HDA_REG_SD2LPIB             (HDA_STREAM_REG_DEF(LPIB, 0) + 20) /* 0xC4 */
     
    379364#define HDA_RMX_SD7LPIB             (HDA_STREAM_RMX_DEF(LPIB, 0) + 70)
    380365
    381 #define HDA_REG_SD0CBL              37 /* 0x88 */
    382 #define HDA_REG_SD1CBL              (HDA_STREAM_REG_DEF(CBL, 0) + 10) /* 0xA8 */
    383 #define HDA_REG_SD2CBL              (HDA_STREAM_REG_DEF(CBL, 0) + 20) /* 0xC8 */
    384 #define HDA_REG_SD3CBL              (HDA_STREAM_REG_DEF(CBL, 0) + 30) /* 0xE8 */
    385 #define HDA_REG_SD4CBL              (HDA_STREAM_REG_DEF(CBL, 0) + 40) /* 0x108 */
    386 #define HDA_REG_SD5CBL              (HDA_STREAM_REG_DEF(CBL, 0) + 50) /* 0x128 */
    387 #define HDA_REG_SD6CBL              (HDA_STREAM_REG_DEF(CBL, 0) + 60) /* 0x148 */
    388 #define HDA_REG_SD7CBL              (HDA_STREAM_REG_DEF(CBL, 0) + 70) /* 0x168 */
     366#define HDA_REG_SD0CBL              37 /* 0x88; other streams offset by 0x20 */
    389367#define HDA_RMX_SD0CBL              35
    390368#define HDA_RMX_SD1CBL              (HDA_STREAM_RMX_DEF(CBL, 0) + 10)
     
    396374#define HDA_RMX_SD7CBL              (HDA_STREAM_RMX_DEF(CBL, 0) + 70)
    397375
    398 #define HDA_REG_SD0LVI              38 /* 0x8C */
    399 #define HDA_REG_SD1LVI              (HDA_STREAM_REG_DEF(LVI, 0) + 10) /* 0xAC */
    400 #define HDA_REG_SD2LVI              (HDA_STREAM_REG_DEF(LVI, 0) + 20) /* 0xCC */
    401 #define HDA_REG_SD3LVI              (HDA_STREAM_REG_DEF(LVI, 0) + 30) /* 0xEC */
    402 #define HDA_REG_SD4LVI              (HDA_STREAM_REG_DEF(LVI, 0) + 40) /* 0x10C */
    403 #define HDA_REG_SD5LVI              (HDA_STREAM_REG_DEF(LVI, 0) + 50) /* 0x12C */
    404 #define HDA_REG_SD6LVI              (HDA_STREAM_REG_DEF(LVI, 0) + 60) /* 0x14C */
    405 #define HDA_REG_SD7LVI              (HDA_STREAM_REG_DEF(LVI, 0) + 70) /* 0x16C */
     376#define HDA_REG_SD0LVI              38 /* 0x8C; other streams offset by 0x20 */
    406377#define HDA_RMX_SD0LVI              36
    407378#define HDA_RMX_SD1LVI              (HDA_STREAM_RMX_DEF(LVI, 0) + 10)
     
    413384#define HDA_RMX_SD7LVI              (HDA_STREAM_RMX_DEF(LVI, 0) + 70)
    414385
    415 #define HDA_REG_SD0FIFOW            39 /* 0x8E */
    416 #define HDA_REG_SD1FIFOW            (HDA_STREAM_REG_DEF(FIFOW, 0) + 10) /* 0xAE */
    417 #define HDA_REG_SD2FIFOW            (HDA_STREAM_REG_DEF(FIFOW, 0) + 20) /* 0xCE */
    418 #define HDA_REG_SD3FIFOW            (HDA_STREAM_REG_DEF(FIFOW, 0) + 30) /* 0xEE */
    419 #define HDA_REG_SD4FIFOW            (HDA_STREAM_REG_DEF(FIFOW, 0) + 40) /* 0x10E */
    420 #define HDA_REG_SD5FIFOW            (HDA_STREAM_REG_DEF(FIFOW, 0) + 50) /* 0x12E */
    421 #define HDA_REG_SD6FIFOW            (HDA_STREAM_REG_DEF(FIFOW, 0) + 60) /* 0x14E */
    422 #define HDA_REG_SD7FIFOW            (HDA_STREAM_REG_DEF(FIFOW, 0) + 70) /* 0x16E */
     386#define HDA_REG_SD0FIFOW            39 /* 0x8E; other streams offset by 0x20 */
    423387#define HDA_RMX_SD0FIFOW            37
    424388#define HDA_RMX_SD1FIFOW            (HDA_STREAM_RMX_DEF(FIFOW, 0) + 10)
     
    437401#define HDA_SDFIFOW_32B             0x4
    438402
    439 #define HDA_REG_SD0FIFOS            40 /* 0x90 */
    440 #define HDA_REG_SD1FIFOS            (HDA_STREAM_REG_DEF(FIFOS, 0) + 10) /* 0xB0 */
    441 #define HDA_REG_SD2FIFOS            (HDA_STREAM_REG_DEF(FIFOS, 0) + 20) /* 0xD0 */
    442 #define HDA_REG_SD3FIFOS            (HDA_STREAM_REG_DEF(FIFOS, 0) + 30) /* 0xF0 */
    443 #define HDA_REG_SD4FIFOS            (HDA_STREAM_REG_DEF(FIFOS, 0) + 40) /* 0x110 */
    444 #define HDA_REG_SD5FIFOS            (HDA_STREAM_REG_DEF(FIFOS, 0) + 50) /* 0x130 */
    445 #define HDA_REG_SD6FIFOS            (HDA_STREAM_REG_DEF(FIFOS, 0) + 60) /* 0x150 */
    446 #define HDA_REG_SD7FIFOS            (HDA_STREAM_REG_DEF(FIFOS, 0) + 70) /* 0x170 */
     403#define HDA_REG_SD0FIFOS            40 /* 0x90; other streams offset by 0x20 */
    447404#define HDA_RMX_SD0FIFOS            38
    448405#define HDA_RMX_SD1FIFOS            (HDA_STREAM_RMX_DEF(FIFOS, 0) + 10)
     
    473430#define SDFIFOS(pThis, num)         HDA_REG((pThis), SD(FIFOS, num))
    474431
    475 #define HDA_REG_SD0FMT              41 /* 0x92 */
    476 #define HDA_REG_SD1FMT              (HDA_STREAM_REG_DEF(FMT, 0) + 10) /* 0xB2 */
    477 #define HDA_REG_SD2FMT              (HDA_STREAM_REG_DEF(FMT, 0) + 20) /* 0xD2 */
    478 #define HDA_REG_SD3FMT              (HDA_STREAM_REG_DEF(FMT, 0) + 30) /* 0xF2 */
    479 #define HDA_REG_SD4FMT              (HDA_STREAM_REG_DEF(FMT, 0) + 40) /* 0x112 */
    480 #define HDA_REG_SD5FMT              (HDA_STREAM_REG_DEF(FMT, 0) + 50) /* 0x132 */
    481 #define HDA_REG_SD6FMT              (HDA_STREAM_REG_DEF(FMT, 0) + 60) /* 0x152 */
    482 #define HDA_REG_SD7FMT              (HDA_STREAM_REG_DEF(FMT, 0) + 70) /* 0x172 */
     432#define HDA_REG_SD0FMT              41 /* 0x92; other streams offset by 0x20 */
    483433#define HDA_RMX_SD0FMT              39
    484434#define HDA_RMX_SD1FMT              (HDA_STREAM_RMX_DEF(FMT, 0) + 10)
     
    492442#define SDFMT(pThis, num)               (HDA_REG((pThis), SD(FMT, num)))
    493443
    494 #define HDA_REG_SD0BDPL             42 /* 0x98 */
    495 #define HDA_REG_SD1BDPL             (HDA_STREAM_REG_DEF(BDPL, 0) + 10) /* 0xB8 */
    496 #define HDA_REG_SD2BDPL             (HDA_STREAM_REG_DEF(BDPL, 0) + 20) /* 0xD8 */
    497 #define HDA_REG_SD3BDPL             (HDA_STREAM_REG_DEF(BDPL, 0) + 30) /* 0xF8 */
    498 #define HDA_REG_SD4BDPL             (HDA_STREAM_REG_DEF(BDPL, 0) + 40) /* 0x118 */
    499 #define HDA_REG_SD5BDPL             (HDA_STREAM_REG_DEF(BDPL, 0) + 50) /* 0x138 */
    500 #define HDA_REG_SD6BDPL             (HDA_STREAM_REG_DEF(BDPL, 0) + 60) /* 0x158 */
    501 #define HDA_REG_SD7BDPL             (HDA_STREAM_REG_DEF(BDPL, 0) + 70) /* 0x178 */
     444#define HDA_REG_SD0BDPL             42 /* 0x98; other streams offset by 0x20 */
    502445#define HDA_RMX_SD0BDPL             40
    503446#define HDA_RMX_SD1BDPL             (HDA_STREAM_RMX_DEF(BDPL, 0) + 10)
     
    509452#define HDA_RMX_SD7BDPL             (HDA_STREAM_RMX_DEF(BDPL, 0) + 70)
    510453
    511 #define HDA_REG_SD0BDPU             43 /* 0x9C */
    512 #define HDA_REG_SD1BDPU             (HDA_STREAM_REG_DEF(BDPU, 0) + 10) /* 0xBC */
    513 #define HDA_REG_SD2BDPU             (HDA_STREAM_REG_DEF(BDPU, 0) + 20) /* 0xDC */
    514 #define HDA_REG_SD3BDPU             (HDA_STREAM_REG_DEF(BDPU, 0) + 30) /* 0xFC */
    515 #define HDA_REG_SD4BDPU             (HDA_STREAM_REG_DEF(BDPU, 0) + 40) /* 0x11C */
    516 #define HDA_REG_SD5BDPU             (HDA_STREAM_REG_DEF(BDPU, 0) + 50) /* 0x13C */
    517 #define HDA_REG_SD6BDPU             (HDA_STREAM_REG_DEF(BDPU, 0) + 60) /* 0x15C */
    518 #define HDA_REG_SD7BDPU             (HDA_STREAM_REG_DEF(BDPU, 0) + 70) /* 0x17C */
     454#define HDA_REG_SD0BDPU             43 /* 0x9C; other streams offset by 0x20 */
    519455#define HDA_RMX_SD0BDPU             41
    520456#define HDA_RMX_SD1BDPU             (HDA_STREAM_RMX_DEF(BDPU, 0) + 10)
     
    14401376    }
    14411377
    1442 #define HDA_MARK_STREAM(x)                                                  \
    1443         if (   (HDA_REG(pThis, INTCTL) & RT_BIT(x))                         \
    1444             && ((SDSTS(pThis, x) & (HDA_SDSTS_DESE | HDA_SDSTS_FIFOE | HDA_SDSTS_BCIS))) \
    1445            )                                                                \
    1446     {                                                                       \
    1447         Log3Func(("[SD%RU8] Marked\n", x));                                 \
    1448         intSts |= RT_BIT(x);                                                \
    1449     }
    1450 
    1451     HDA_MARK_STREAM(0);
    1452     HDA_MARK_STREAM(1);
    1453     HDA_MARK_STREAM(2);
    1454     HDA_MARK_STREAM(3);
    1455     HDA_MARK_STREAM(4);
    1456     HDA_MARK_STREAM(5);
    1457     HDA_MARK_STREAM(6);
    1458     HDA_MARK_STREAM(7);
    1459 
    1460 #undef HDA_MARK_STREAM
     1378    /** @todo r=michaln The logic here ignores enable bits and is generally completely broken. */
     1379    for (int iStrm = 0; iStrm < 8; ++iStrm)
     1380    {
     1381        if (   (HDA_REG(pThis, INTCTL) & RT_BIT(iStrm))
     1382            && (HDA_STREAM_REG(pThis, STS, iStrm) & (HDA_SDSTS_DESE | HDA_SDSTS_FIFOE | HDA_SDSTS_BCIS)))
     1383        {
     1384            Log3Func(("[SD%d] interrupt set\n", iStrm));
     1385            intSts |= RT_BIT(iStrm);
     1386        }
     1387    }
    14611388
    14621389    if (intSts)
     
    14751402
    14761403    /* Global Interrupt Status (GIS) set? */
     1404    /** @todo r=michaln: This is wrong. It is possible to have GIS set when CIS and all stream interrupts are disabled. */
    14771405    if (HDA_REG(pThis, INTSTS) & HDA_INTSTS_GIS)
    14781406        iLevel = 1;
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