VirtualBox

Changeset 82382 in vbox


Ignore:
Timestamp:
Dec 4, 2019 1:12:29 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
135216
Message:

DevHDA: Made register access handlers return VBOXSTRICTRC. bugref:9218

Location:
trunk/src/VBox/Devices/Audio
Files:
2 edited

Legend:

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

    r82345 r82382  
    266266 * @{
    267267 */
    268 static int hdaRegReadUnimpl(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
    269 static int hdaRegWriteUnimpl(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
     268static FNHDAREGREAD  hdaRegReadUnimpl;
     269static FNHDAREGWRITE hdaRegWriteUnimpl;
    270270/** @} */
    271271
     
    273273 * @{
    274274 */
    275 static int hdaRegWriteGCTL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    276 static int hdaRegReadLPIB(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
    277 static int hdaRegReadWALCLK(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
    278 static int hdaRegWriteCORBWP(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    279 static int hdaRegWriteCORBRP(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    280 static int hdaRegWriteCORBCTL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    281 static int hdaRegWriteCORBSIZE(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    282 static int hdaRegWriteCORBSTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    283 static int hdaRegWriteRINTCNT(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    284 static int hdaRegWriteRIRBWP(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    285 static int hdaRegWriteRIRBSTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    286 static int hdaRegWriteSTATESTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    287 static int hdaRegWriteIRS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    288 static int hdaRegReadIRS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
    289 static int hdaRegWriteBase(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
     275static FNHDAREGWRITE hdaRegWriteGCTL;
     276static FNHDAREGREAD  hdaRegReadLPIB;
     277static FNHDAREGREAD  hdaRegReadWALCLK;
     278static FNHDAREGWRITE hdaRegWriteCORBWP;
     279static FNHDAREGWRITE hdaRegWriteCORBRP;
     280static FNHDAREGWRITE hdaRegWriteCORBCTL;
     281static FNHDAREGWRITE hdaRegWriteCORBSIZE;
     282static FNHDAREGWRITE hdaRegWriteCORBSTS;
     283static FNHDAREGWRITE hdaRegWriteRINTCNT;
     284static FNHDAREGWRITE hdaRegWriteRIRBWP;
     285static FNHDAREGWRITE hdaRegWriteRIRBSTS;
     286static FNHDAREGWRITE hdaRegWriteSTATESTS;
     287static FNHDAREGWRITE hdaRegWriteIRS;
     288static FNHDAREGREAD  hdaRegReadIRS;
     289static FNHDAREGWRITE hdaRegWriteBase;
    290290/** @} */
    291291
     
    293293 * @{
    294294 */
    295 static int hdaRegWriteSDCBL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    296 static int hdaRegWriteSDCTL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    297 static int hdaRegWriteSDSTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    298 static int hdaRegWriteSDLVI(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    299 static int hdaRegWriteSDFIFOW(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    300 static int hdaRegWriteSDFIFOS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    301 static int hdaRegWriteSDFMT(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    302 static int hdaRegWriteSDBDPL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    303 static int hdaRegWriteSDBDPU(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
     295static FNHDAREGWRITE hdaRegWriteSDCBL;
     296static FNHDAREGWRITE hdaRegWriteSDCTL;
     297static FNHDAREGWRITE hdaRegWriteSDSTS;
     298static FNHDAREGWRITE hdaRegWriteSDLVI;
     299static FNHDAREGWRITE hdaRegWriteSDFIFOW;
     300static FNHDAREGWRITE hdaRegWriteSDFIFOS;
     301static FNHDAREGWRITE hdaRegWriteSDFMT;
     302static FNHDAREGWRITE hdaRegWriteSDBDPL;
     303static FNHDAREGWRITE hdaRegWriteSDBDPU;
    304304/** @} */
    305305
     
    307307 * @{
    308308 */
    309 static int hdaRegReadU32(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
    310 static int hdaRegWriteU32(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    311 static int hdaRegReadU24(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
     309static FNHDAREGREAD  hdaRegReadU32;
     310static FNHDAREGWRITE hdaRegWriteU32;
     311static FNHDAREGREAD  hdaRegReadU24;
    312312#ifdef IN_RING3
    313 static int hdaRegWriteU24(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
     313static FNHDAREGWRITE hdaRegWriteU24;
    314314#endif
    315 static int hdaRegReadU16(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
    316 static int hdaRegWriteU16(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
    317 static int hdaRegReadU8(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
    318 static int hdaRegWriteU8(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
     315static FNHDAREGREAD  hdaRegReadU16;
     316static FNHDAREGWRITE hdaRegWriteU16;
     317static FNHDAREGREAD  hdaRegReadU8;
     318static FNHDAREGWRITE hdaRegWriteU8;
    319319/** @} */
    320320
     
    326326static int                        hdaR3RemoveStream(PHDASTATE pThis, PPDMAUDIOSTREAMCFG pCfg);
    327327# ifdef HDA_USE_DMA_ACCESS_HANDLER
    328 static DECLCALLBACK(VBOXSTRICTRC) hdaR3DMAAccessHandler(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, void *pvPhys,
     328static DECLCALLBACK(VBOXSTRICTRC) hdaR3DmaAccessHandler(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, void *pvPhys,
    329329                                                        void *pvBuf, size_t cbBuf,
    330330                                                        PGMACCESSTYPE enmAccessType, PGMACCESSORIGIN enmOrigin, void *pvUser);
     
    386386    HDA_REG_MAP_STRM(HDA_REG_DESC_SD0_BASE + (index * 32 /* 0x20 */), name)
    387387
    388 /* See 302349 p 6.2. */
     388/** See 302349 p 6.2. */
    389389const HDAREGDESC g_aHdaRegMap[HDA_NUM_REGS] =
    390390{
     
    899899/* Register access handlers. */
    900900
    901 static int hdaRegReadUnimpl(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
     901static VBOXSTRICTRC hdaRegReadUnimpl(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    902902{
    903903    RT_NOREF(pDevIns, pThis, iReg);
     
    906906}
    907907
    908 static int hdaRegWriteUnimpl(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     908static VBOXSTRICTRC hdaRegWriteUnimpl(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    909909{
    910910    RT_NOREF(pDevIns, pThis, iReg, u32Value);
     
    913913
    914914/* U8 */
    915 static int hdaRegReadU8(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
     915static VBOXSTRICTRC hdaRegReadU8(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    916916{
    917917    Assert(((pThis->au32Regs[g_aHdaRegMap[iReg].mem_idx] & g_aHdaRegMap[iReg].readable) & 0xffffff00) == 0);
     
    919919}
    920920
    921 static int hdaRegWriteU8(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     921static VBOXSTRICTRC hdaRegWriteU8(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    922922{
    923923    Assert((u32Value & 0xffffff00) == 0);
     
    926926
    927927/* U16 */
    928 static int hdaRegReadU16(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
     928static VBOXSTRICTRC hdaRegReadU16(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    929929{
    930930    Assert(((pThis->au32Regs[g_aHdaRegMap[iReg].mem_idx] & g_aHdaRegMap[iReg].readable) & 0xffff0000) == 0);
     
    932932}
    933933
    934 static int hdaRegWriteU16(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     934static VBOXSTRICTRC hdaRegWriteU16(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    935935{
    936936    Assert((u32Value & 0xffff0000) == 0);
     
    939939
    940940/* U24 */
    941 static int hdaRegReadU24(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
     941static VBOXSTRICTRC hdaRegReadU24(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    942942{
    943943    Assert(((pThis->au32Regs[g_aHdaRegMap[iReg].mem_idx] & g_aHdaRegMap[iReg].readable) & 0xff000000) == 0);
     
    946946
    947947#ifdef IN_RING3
    948 static int hdaRegWriteU24(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     948static VBOXSTRICTRC hdaRegWriteU24(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    949949{
    950950    Assert((u32Value & 0xff000000) == 0);
     
    954954
    955955/* U32 */
    956 static int hdaRegReadU32(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
     956static VBOXSTRICTRC hdaRegReadU32(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    957957{
    958958    uint32_t iRegMem = g_aHdaRegMap[iReg].mem_idx;
     
    966966}
    967967
    968 static int hdaRegWriteU32(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     968static VBOXSTRICTRC hdaRegWriteU32(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    969969{
    970970    uint32_t iRegMem = g_aHdaRegMap[iReg].mem_idx;
     
    978978}
    979979
    980 static int hdaRegWriteGCTL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     980static VBOXSTRICTRC hdaRegWriteGCTL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    981981{
    982982    RT_NOREF_PV(iReg);
     
    10231023}
    10241024
    1025 static int hdaRegWriteSTATESTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1025static VBOXSTRICTRC hdaRegWriteSTATESTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    10261026{
    10271027    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
     
    10361036}
    10371037
    1038 static int hdaRegReadLPIB(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
     1038static VBOXSTRICTRC hdaRegReadLPIB(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    10391039{
    10401040    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_READ);
     
    10941094#endif /* IN_RING3 */
    10951095
    1096 static int hdaRegReadWALCLK(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
     1096static VBOXSTRICTRC hdaRegReadWALCLK(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    10971097{
    10981098#ifdef IN_RING3
     
    11131113}
    11141114
    1115 static int hdaRegWriteCORBRP(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1115static VBOXSTRICTRC hdaRegWriteCORBRP(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    11161116{
    11171117    RT_NOREF(iReg);
     
    11431143}
    11441144
    1145 static int hdaRegWriteCORBCTL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1145static VBOXSTRICTRC hdaRegWriteCORBCTL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    11461146{
    11471147#ifdef IN_RING3
    11481148    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
    11491149
    1150     int rc = hdaRegWriteU8(pDevIns, pThis, iReg, u32Value);
     1150    VBOXSTRICTRC rc = hdaRegWriteU8(pDevIns, pThis, iReg, u32Value);
    11511151    AssertRC(rc);
    11521152
    11531153    if (HDA_REG(pThis, CORBCTL) & HDA_CORBCTL_DMA) /* Start DMA engine. */
    1154     {
    11551154        rc = hdaR3CORBCmdProcess(pThis);
    1156     }
    11571155    else
    11581156        LogFunc(("CORB DMA not running, skipping\n"));
     
    11661164}
    11671165
    1168 static int hdaRegWriteCORBSIZE(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1166static VBOXSTRICTRC hdaRegWriteCORBSIZE(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    11691167{
    11701168#ifdef IN_RING3
     
    12261224}
    12271225
    1228 static int hdaRegWriteCORBSTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1226static VBOXSTRICTRC hdaRegWriteCORBSTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    12291227{
    12301228    RT_NOREF_PV(iReg);
     
    12381236}
    12391237
    1240 static int hdaRegWriteCORBWP(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1238static VBOXSTRICTRC hdaRegWriteCORBWP(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    12411239{
    12421240#ifdef IN_RING3
    12431241    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
    12441242
    1245     int rc = hdaRegWriteU16(pDevIns, pThis, iReg, u32Value);
    1246     AssertRCSuccess(rc);
     1243    VBOXSTRICTRC rc = hdaRegWriteU16(pDevIns, pThis, iReg, u32Value);
     1244    AssertRCSuccess(VBOXSTRICTRC_VAL(rc));
    12471245
    12481246    rc = hdaR3CORBCmdProcess(pThis);
     
    12561254}
    12571255
    1258 static int hdaRegWriteSDCBL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1256static VBOXSTRICTRC hdaRegWriteSDCBL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    12591257{
    12601258    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
    12611259
    1262     int rc = hdaRegWriteU32(pDevIns, pThis, iReg, u32Value);
    1263     AssertRCSuccess(rc);
     1260    VBOXSTRICTRC rc = hdaRegWriteU32(pDevIns, pThis, iReg, u32Value);
     1261    AssertRCSuccess(VBOXSTRICTRC_VAL(rc));
    12641262
    12651263    DEVHDA_UNLOCK(pDevIns, pThis);
     
    12671265}
    12681266
    1269 static int hdaRegWriteSDCTL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1267static VBOXSTRICTRC hdaRegWriteSDCTL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    12701268{
    12711269#ifdef IN_RING3
     
    14541452    }
    14551453
    1456     int rc2 = hdaRegWriteU24(pDevIns, pThis, iReg, u32Value);
    1457     AssertRC(rc2);
     1454    VBOXSTRICTRC rc2 = hdaRegWriteU24(pDevIns, pThis, iReg, u32Value);
     1455    AssertRC(VBOXSTRICTRC_VAL(rc2));
    14581456
    14591457    DEVHDA_UNLOCK_BOTH(pDevIns, pThis, pStream);
     
    14651463}
    14661464
    1467 static int hdaRegWriteSDSTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1465static VBOXSTRICTRC hdaRegWriteSDSTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    14681466{
    14691467#ifdef IN_RING3
     
    15801578}
    15811579
    1582 static int hdaRegWriteSDLVI(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1580static VBOXSTRICTRC hdaRegWriteSDLVI(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    15831581{
    15841582    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
     
    16041602                            ("LVI for stream #%RU8 must not be bigger than %RU8\n", uSD, UINT8_MAX - 1));
    16051603
    1606     int rc2 = hdaRegWriteU16(pDevIns, pThis, iReg, u32Value);
    1607     AssertRC(rc2);
     1604    VBOXSTRICTRC rc2 = hdaRegWriteU16(pDevIns, pThis, iReg, u32Value);
     1605    AssertRC(VBOXSTRICTRC_VAL(rc2));
    16081606
    16091607    DEVHDA_UNLOCK(pDevIns, pThis);
     
    16111609}
    16121610
    1613 static int hdaRegWriteSDFIFOW(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1611static VBOXSTRICTRC hdaRegWriteSDFIFOW(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    16141612{
    16151613    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
     
    16571655        LogFunc(("[SD%RU8] Updating FIFOW to %RU32 bytes\n", uSD, pStream->u16FIFOW));
    16581656
    1659         int rc2 = hdaRegWriteU16(pDevIns, pThis, iReg, u32FIFOW);
    1660         AssertRC(rc2);
     1657        VBOXSTRICTRC rc2 = hdaRegWriteU16(pDevIns, pThis, iReg, u32FIFOW);
     1658        AssertRC(VBOXSTRICTRC_VAL(rc2));
    16611659    }
    16621660
     
    16681666 * @note This method could be called for changing value on Output Streams only (ICH6 datasheet 18.2.39).
    16691667 */
    1670 static int hdaRegWriteSDFIFOS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1668static VBOXSTRICTRC hdaRegWriteSDFIFOS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    16711669{
    16721670    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
     
    17011699    }
    17021700
    1703     int rc2 = hdaRegWriteU16(pDevIns, pThis, iReg, u32FIFOS);
    1704     AssertRC(rc2);
     1701    VBOXSTRICTRC rc2 = hdaRegWriteU16(pDevIns, pThis, iReg, u32FIFOS);
     1702    AssertRC(VBOXSTRICTRC_VAL(rc2));
    17051703
    17061704    DEVHDA_UNLOCK(pDevIns, pThis);
     
    19881986#endif /* IN_RING3 */
    19891987
    1990 static int hdaRegWriteSDFMT(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     1988static VBOXSTRICTRC hdaRegWriteSDFMT(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    19911989{
    19921990    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
     
    19991997     * When ignoring those (invalid) formats, this leads to MacOS thinking that the device is malfunctioning
    20001998     * and therefore disabling the device completely. */
    2001     int rc = hdaRegWriteU16(pDevIns, pThis, iReg, u32Value);
    2002     AssertRC(rc);
     1999    VBOXSTRICTRC rc = hdaRegWriteU16(pDevIns, pThis, iReg, u32Value);
     2000    AssertRC(VBOXSTRICTRC_VAL(rc));
    20032001
    20042002    DEVHDA_UNLOCK(pDevIns, pThis);
    2005     return VINF_SUCCESS; /* Always return success to the MMIO handler. */
     2003    return VINF_SUCCESS; /* Always return success to the MMIO handler. */ /** @todo r=bird: This is non-sense in this context, though due to the double locking not really a problem */
    20062004}
    20072005
     
    20292027# endif
    20302028
    2031     int rc2 = hdaRegWriteU32(pDevIns, pThis, iReg, u32Value);
    2032     AssertRC(rc2);
     2029    VBOXSTRICTRC rc2 = hdaRegWriteU32(pDevIns, pThis, iReg, u32Value);
     2030    AssertRC(VBOXSTRICTRC_VAL(rc2));
    20332031
    20342032    DEVHDA_UNLOCK(pDevIns, pThis);
     
    20402038}
    20412039
    2042 static int hdaRegWriteSDBDPL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     2040static VBOXSTRICTRC hdaRegWriteSDBDPL(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    20432041{
    20442042    return hdaRegWriteSDBDPX(pDevIns, pThis, iReg, u32Value, HDA_SD_NUM_FROM_REG(pThis, BDPL, iReg));
    20452043}
    20462044
    2047 static int hdaRegWriteSDBDPU(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     2045static VBOXSTRICTRC hdaRegWriteSDBDPU(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    20482046{
    20492047    return hdaRegWriteSDBDPX(pDevIns, pThis, iReg, u32Value, HDA_SD_NUM_FROM_REG(pThis, BDPU, iReg));
    20502048}
    20512049
    2052 static int hdaRegReadIRS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
     2050static VBOXSTRICTRC hdaRegReadIRS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value)
    20532051{
    20542052    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_READ);
     
    20612059    }
    20622060
    2063     int rc = hdaRegReadU32(pDevIns, pThis, iReg, pu32Value);
     2061    VBOXSTRICTRC rc = hdaRegReadU32(pDevIns, pThis, iReg, pu32Value);
    20642062    DEVHDA_UNLOCK(pDevIns, pThis);
    20652063
     
    20672065}
    20682066
    2069 static int hdaRegWriteIRS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     2067static VBOXSTRICTRC hdaRegWriteIRS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    20702068{
    20712069    RT_NOREF_PV(iReg);
     
    21232121}
    21242122
    2125 static int hdaRegWriteRIRBWP(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     2123static VBOXSTRICTRC hdaRegWriteRIRBWP(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    21262124{
    21272125    RT_NOREF(iReg);
     
    21562154}
    21572155
    2158 static int hdaRegWriteRINTCNT(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     2156static VBOXSTRICTRC hdaRegWriteRINTCNT(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    21592157{
    21602158    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
     
    21682166    }
    21692167
    2170     int rc = hdaRegWriteU16(pDevIns, pThis, iReg, u32Value);
    2171     AssertRC(rc);
     2168    VBOXSTRICTRC rc = hdaRegWriteU16(pDevIns, pThis, iReg, u32Value);
     2169    AssertRC(VBOXSTRICTRC_VAL(rc));
    21722170
    21732171    LogFunc(("Response interrupt count is now %RU8\n", HDA_REG(pThis, RINTCNT) & 0xFF));
     
    21772175}
    21782176
    2179 static int hdaRegWriteBase(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     2177static VBOXSTRICTRC hdaRegWriteBase(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    21802178{
    21812179    uint32_t iRegMem = g_aHdaRegMap[iReg].mem_idx;
    21822180    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
    21832181
    2184     int rc = hdaRegWriteU32(pDevIns, pThis, iReg, u32Value);
    2185     AssertRCSuccess(rc);
     2182    VBOXSTRICTRC rc = hdaRegWriteU32(pDevIns, pThis, iReg, u32Value);
     2183    AssertRCSuccess(VBOXSTRICTRC_VAL(rc));
    21862184
    21872185    switch (iReg)
     
    22282226}
    22292227
    2230 static int hdaRegWriteRIRBSTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
     2228static VBOXSTRICTRC hdaRegWriteRIRBSTS(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value)
    22312229{
    22322230    RT_NOREF_PV(iReg);
     
    22362234    HDA_REG(pThis, RIRBSTS) &= ~(v & u32Value);
    22372235
    2238     int rc = HDA_PROCESS_INTERRUPT(pDevIns, pThis);
     2236    VBOXSTRICTRC rc = HDA_PROCESS_INTERRUPT(pDevIns, pThis);
    22392237
    22402238    DEVHDA_UNLOCK(pDevIns, pThis);
     
    28852883 * @param   pvUser          User argument.
    28862884 */
    2887 static DECLCALLBACK(VBOXSTRICTRC) hdaR3DMAAccessHandler(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, void *pvPhys,
     2885static DECLCALLBACK(VBOXSTRICTRC) hdaR3DmaAccessHandler(PVM pVM, PVMCPU pVCpu, RTGCPHYS GCPhys, void *pvPhys,
    28882886                                                        void *pvBuf, size_t cbBuf,
    28892887                                                        PGMACCESSTYPE enmAccessType, PGMACCESSORIGIN enmOrigin, void *pvUser)
     
    31213119 *       spec.
    31223120 */
    3123 static DECLCALLBACK(VBOXSTRICTRC) hdaMMIORead(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS off, void *pv, unsigned cb)
    3124 {
    3125     PHDASTATE   pThis  = PDMDEVINS_2_DATA(pDevIns, PHDASTATE);
    3126     int         rc;
     3121static DECLCALLBACK(VBOXSTRICTRC) hdaMmioRead(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS off, void *pv, unsigned cb)
     3122{
     3123    PHDASTATE       pThis  = PDMDEVINS_2_DATA(pDevIns, PHDASTATE);
     3124    VBOXSTRICTRC    rc;
    31273125    RT_NOREF_PV(pvUser);
    31283126    Assert(pThis->uAlignmentCheckMagic == HDASTATE_ALIGNMENT_CHECK_MAGIC);
     
    31603158             */
    31613159            rc = g_aHdaRegMap[idxRegDsc].pfnRead(pDevIns, pThis, idxRegDsc, (uint32_t *)pv);
    3162             Log3Func(("\tRead %s => %x (%Rrc)\n", g_aHdaRegMap[idxRegDsc].abbrev, *(uint32_t *)pv, rc));
     3160            Log3Func(("\tRead %s => %x (%Rrc)\n", g_aHdaRegMap[idxRegDsc].abbrev, *(uint32_t *)pv, VBOXSTRICTRC_VAL(rc)));
    31633161        }
    31643162        else
     
    31773175
    31783176                rc = g_aHdaRegMap[idxRegDsc].pfnRead(pDevIns, pThis, idxRegDsc, &u32Tmp);
    3179                 Log3Func(("\tRead %s[%db] => %x (%Rrc)*\n", g_aHdaRegMap[idxRegDsc].abbrev, cbReg, u32Tmp, rc));
     3177                Log3Func(("\tRead %s[%db] => %x (%Rrc)*\n", g_aHdaRegMap[idxRegDsc].abbrev, cbReg, u32Tmp, VBOXSTRICTRC_VAL(rc)));
    31803178                if (rc != VINF_SUCCESS)
    31813179                    break;
     
    32103208#ifdef LOG_ENABLED
    32113209    if (cbLog == 4)
    3212         Log3Func(("\tReturning @%#05x -> %#010x %Rrc\n", offRegLog, *(uint32_t *)pv, rc));
     3210        Log3Func(("\tReturning @%#05x -> %#010x %Rrc\n", offRegLog, *(uint32_t *)pv, VBOXSTRICTRC_VAL(rc)));
    32133211    else if (cbLog == 2)
    3214         Log3Func(("\tReturning @%#05x -> %#06x %Rrc\n", offRegLog, *(uint16_t *)pv, rc));
     3212        Log3Func(("\tReturning @%#05x -> %#06x %Rrc\n", offRegLog, *(uint16_t *)pv, VBOXSTRICTRC_VAL(rc)));
    32153213    else if (cbLog == 1)
    3216         Log3Func(("\tReturning @%#05x -> %#04x %Rrc\n", offRegLog, *(uint8_t *)pv, rc));
     3214        Log3Func(("\tReturning @%#05x -> %#04x %Rrc\n", offRegLog, *(uint8_t *)pv, VBOXSTRICTRC_VAL(rc)));
    32173215#endif
    32183216    return rc;
     
    32203218
    32213219
    3222 DECLINLINE(int) hdaWriteReg(PPDMDEVINS pDevIns, PHDASTATE pThis, int idxRegDsc, uint32_t u32Value, char const *pszLog)
     3220DECLINLINE(VBOXSTRICTRC) hdaWriteReg(PPDMDEVINS pDevIns, PHDASTATE pThis, int idxRegDsc, uint32_t u32Value, char const *pszLog)
    32233221{
    32243222    DEVHDA_LOCK_RETURN(pDevIns, pThis, VINF_IOM_R3_MMIO_WRITE);
     
    32783276    uint32_t const u32OldValue = pThis->au32Regs[idxRegMem];
    32793277#endif
    3280     int rc = g_aHdaRegMap[idxRegDsc].pfnWrite(pDevIns, pThis, idxRegDsc, u32Value);
     3278    VBOXSTRICTRC rc = g_aHdaRegMap[idxRegDsc].pfnWrite(pDevIns, pThis, idxRegDsc, u32Value);
    32813279    Log3Func(("Written value %#x to %s[%d byte]; %x => %x%s, rc=%d\n", u32Value, g_aHdaRegMap[idxRegDsc].abbrev,
    3282               g_aHdaRegMap[idxRegDsc].size, u32OldValue, pThis->au32Regs[idxRegMem], pszLog, rc));
     3280              g_aHdaRegMap[idxRegDsc].size, u32OldValue, pThis->au32Regs[idxRegMem], pszLog, VBOXSTRICTRC_VAL(rc)));
    32833281    RT_NOREF(pszLog);
    32843282    return rc;
     
    32903288 *      Looks up and calls the appropriate handler.}
    32913289 */
    3292 static DECLCALLBACK(VBOXSTRICTRC) hdaMMIOWrite(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS off, void const *pv, unsigned cb)
     3290static DECLCALLBACK(VBOXSTRICTRC) hdaMmioWrite(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS off, void const *pv, unsigned cb)
    32933291{
    32943292    PHDASTATE pThis  = PDMDEVINS_2_DATA(pDevIns, PHDASTATE);
    3295     int       rc;
    32963293    RT_NOREF_PV(pvUser);
    32973294    Assert(pThis->uAlignmentCheckMagic == HDASTATE_ALIGNMENT_CHECK_MAGIC);
     
    33313328     * Try for a direct hit first.
    33323329     */
     3330    VBOXSTRICTRC rc;
    33333331    if (idxRegDsc >= 0 && g_aHdaRegMap[idxRegDsc].size == cb)
    33343332    {
     
    48304828    AssertRCReturn(rc, rc);
    48314829
    4832     rc = PDMDevHlpPCIIORegionCreateMmio(pDevIns, 0, 0x4000, PCI_ADDRESS_SPACE_MEM, hdaMMIOWrite, hdaMMIORead, NULL /*pvUser*/,
     4830    rc = PDMDevHlpPCIIORegionCreateMmio(pDevIns, 0, 0x4000, PCI_ADDRESS_SPACE_MEM, hdaMmioWrite, hdaMmioRead, NULL /*pvUser*/,
    48334831                                        IOMMMIO_FLAGS_READ_DWORD | IOMMMIO_FLAGS_WRITE_PASSTHRU, "HDA", &pThis->hMmio);
    48344832    AssertRCReturn(rc, rc);
     
    51915189    AssertRCReturn(rc, rc);
    51925190
    5193     rc = PDMDevHlpMmioSetUpContext(pDevIns, pThis->hMmio, hdaMMIOWrite, hdaMMIORead, NULL /*pvUser*/);
     5191    rc = PDMDevHlpMmioSetUpContext(pDevIns, pThis->hMmio, hdaMmioWrite, hdaMmioRead, NULL /*pvUser*/);
    51945192    AssertRCReturn(rc, rc);
    51955193
  • trunk/src/VBox/Devices/Audio/DevHDACommon.h

    r82332 r82382  
    2525#include <VBox/log.h> /* LOG_ENABLED */
    2626
     27    /** Read callback. */
     28typedef VBOXSTRICTRC FNHDAREGREAD(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
     29    /** Write callback. */
     30typedef VBOXSTRICTRC FNHDAREGWRITE(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
     31
    2732/** See 302349 p 6.2. */
    2833typedef struct HDAREGDESC
    2934{
    3035    /** Register offset in the register space. */
    31     uint32_t    offset;
     36    uint32_t        offset;
    3237    /** Size in bytes. Registers of size > 4 are in fact tables. */
    33     uint32_t    size;
     38    uint32_t        size;
    3439    /** Readable bits. */
    35     uint32_t    readable;
     40    uint32_t        readable;
    3641    /** Writable bits. */
    37     uint32_t    writable;
     42    uint32_t        writable;
    3843    /** Register descriptor (RD) flags of type HDA_RD_FLAG_.
    3944     *  These are used to specify the handling (read/write)
    4045     *  policy of the register. */
    41     uint32_t    fFlags;
     46    uint32_t        fFlags;
    4247    /** Read callback. */
    43     int       (*pfnRead)(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t *pu32Value);
     48    FNHDAREGREAD   *pfnRead;
    4449    /** Write callback. */
    45     int       (*pfnWrite)(PPDMDEVINS pDevIns, PHDASTATE pThis, uint32_t iReg, uint32_t u32Value);
     50    FNHDAREGWRITE  *pfnWrite;
    4651    /** Index into the register storage array. */
    47     uint32_t    mem_idx;
     52    uint32_t        mem_idx;
    4853    /** Abbreviated name. */
    49     const char *abbrev;
     54    const char     *abbrev;
    5055    /** Descripton. */
    51     const char *desc;
    52 } HDAREGDESC, *PHDAREGDESC;
     56    const char     *desc;
     57} HDAREGDESC;
    5358
    5459/**
     
    6267    /** The register index. */
    6368    int         idxAlias;
    64 } HDAREGALIAS, *PHDAREGALIAS;
     69} HDAREGALIAS;
    6570
    6671/**
Note: See TracChangeset for help on using the changeset viewer.

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