Changeset 67238 in vbox for trunk/src/VBox/Devices/Audio
- Timestamp:
- Jun 2, 2017 12:50:42 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Audio/DevHDA.cpp
r67058 r67238 198 198 #define HDA_INTCTL_GIE_SHIFT 31 199 199 #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. */ 209 201 #define HDA_INTCTL_GIE_MASK RT_BIT(31) /* Global Interrupt Enable (3.3.14). */ 210 202 … … 213 205 #define HDA_INTSTS_GIS_SHIFT 31 214 206 #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. */ 224 208 225 209 #define HDA_REG_WALCLK 13 /* 0x30 */ … … 379 363 380 364 #define SDSTS(pThis, num) HDA_REG((pThis), SD(STS, num)) 381 #define HDA_SDSTS_FIFORDY _SHIFT 5382 #define HDA_SDSTS_DE _SHIFT 4383 #define HDA_SDSTS_F E_SHIFT 3384 #define HDA_SDSTS_BCIS _SHIFT 2365 #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 */ 385 369 386 370 #define HDA_REG_SD0LPIB 36 /* 0x84 */ … … 1465 1449 1466 1450 #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))) \ 1472 1453 ) \ 1473 1454 { \ … … 1860 1841 * Second, initialize the registers. 1861 1842 */ 1862 HDA_STREAM_REG(pThis, STS, uSD) = HDA_ REG_FIELD_FLAG_MASK(SDSTS, FIFORDY);1843 HDA_STREAM_REG(pThis, STS, uSD) = HDA_SDSTS_FIFORDY; 1863 1844 /* According to the ICH6 datasheet, 0x40000 is the default value for stream descriptor register 23:20 1864 1845 * bits are reserved for stream number 18.2.33, resets SDnCTL except SRST bit. */ … … 2208 2189 else 2209 2190 { 2210 /** @todo Clear INTSTS's individual stream status bits as well? */2211 2212 2191 /* Make sure to lower interrupt line, as Global Interrupt Enable (GIE) is disabled. */ 2213 2192 PDMDevHlpPCISetIrq(pThis->CTX_SUFF(pDevIns), 0, 0 /* iLevel */); … … 4108 4087 fProceed = false; 4109 4088 /* 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)) 4111 4090 fProceed = false; 4112 4091 … … 4245 4224 * This must be set in *any* case. 4246 4225 */ 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; 4248 4227 Log3Func(("[SD%RU8]: BCIS set\n", pStream->u8SD)); 4249 4228 … … 5584 5563 "SDSTS(raw:%#0x, fifordy:%RTbool, dese:%RTbool, fifoe:%RTbool, bcis:%RTbool)", 5585 5564 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)); 5590 5569 } 5591 5570
Note:
See TracChangeset
for help on using the changeset viewer.