VirtualBox

Changeset 71706 in vbox


Ignore:
Timestamp:
Apr 6, 2018 1:40:08 PM (7 years ago)
Author:
vboxsync
Message:

DevHDA: nits. bugref:9094

File:
1 edited

Legend:

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

    r71704 r71706  
    110110# define VBOX_WITH_HDA_AUDIO_INTERLEAVING_STREAMS_SUPPORT
    111111#endif
     112
     113/**
     114 * Acquires the HDA lock.
     115 */
     116#define DEVHDA_LOCK(a_pThis) \
     117    do { \
     118        int rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, VERR_IGNORED); \
     119        AssertRC(rcLock); \
     120    } while (0)
     121
     122/**
     123 * Acquires the HDA lock or returns.
     124 */
     125# define DEVHDA_LOCK_RETURN(a_pThis, a_rcBusy) \
     126    do { \
     127        int rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, a_rcBusy); \
     128        if (rcLock != VINF_SUCCESS) \
     129        { \
     130            AssertRC(rcLock); \
     131            return rcLock; \
     132        } \
     133    } while (0)
     134
     135/**
     136 * Acquires the HDA lock or returns.
     137 */
     138# define DEVHDA_LOCK_RETURN_VOID(a_pThis) \
     139    do { \
     140        int rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, VERR_IGNORED); \
     141        if (rcLock != VINF_SUCCESS) \
     142        { \
     143            AssertRC(rcLock); \
     144            return; \
     145        } \
     146    } while (0)
     147
     148/**
     149 * Releases the HDA lock.
     150 */
     151#define DEVHDA_UNLOCK(a_pThis) \
     152    do { PDMCritSectLeave(&(a_pThis)->CritSect); } while (0)
     153
     154/**
     155 * Acquires the TM lock and HDA lock, returns on failure.
     156 */
     157#define DEVHDA_LOCK_BOTH_RETURN_VOID(a_pThis, a_SD) \
     158    do { \
     159        int rcLock = TMTimerLock((a_pThis)->pTimer[a_SD], VERR_IGNORED); \
     160        if (rcLock != VINF_SUCCESS) \
     161        { \
     162            AssertRC(rcLock); \
     163            return; \
     164        } \
     165        rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, VERR_IGNORED); \
     166        if (rcLock != VINF_SUCCESS) \
     167        { \
     168            AssertRC(rcLock); \
     169            TMTimerUnlock((a_pThis)->pTimer[a_SD]); \
     170            return; \
     171        } \
     172    } while (0)
     173
     174/**
     175 * Acquires the TM lock and HDA lock, returns on failure.
     176 */
     177#define DEVHDA_LOCK_BOTH_RETURN(a_pThis, a_SD, a_rcBusy) \
     178    do { \
     179        int rcLock = TMTimerLock((a_pThis)->pTimer[a_SD], (a_rcBusy)); \
     180        if (rcLock != VINF_SUCCESS) \
     181            return rcLock; \
     182        rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, (a_rcBusy)); \
     183        if (rcLock != VINF_SUCCESS) \
     184        { \
     185            AssertRC(rcLock); \
     186            TMTimerUnlock((a_pThis)->pTimer[a_SD]); \
     187            return rcLock; \
     188        } \
     189    } while (0)
     190
     191/**
     192 * Releases the HDA lock and TM lock.
     193 */
     194#define DEVHDA_UNLOCK_BOTH(a_pThis, a_SD) \
     195    do { \
     196        PDMCritSectLeave(&(a_pThis)->CritSect); \
     197        TMTimerUnlock((a_pThis)->pTimer[a_SD]); \
     198    } while (0)
    112199
    113200
     
    451538};
    452539
    453 /**
    454  * Acquires the HDA lock.
    455  */
    456 #define DEVHDA_LOCK(a_pThis) \
    457     do { \
    458         int rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, VERR_IGNORED); \
    459         AssertRC(rcLock); \
    460     } while (0)
    461 
    462 /**
    463  * Acquires the HDA lock or returns.
    464  */
    465 # define DEVHDA_LOCK_RETURN(a_pThis, a_rcBusy) \
    466     do { \
    467         int rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, a_rcBusy); \
    468         if (rcLock != VINF_SUCCESS) \
    469         { \
    470             AssertRC(rcLock); \
    471             return rcLock; \
    472         } \
    473     } while (0)
    474 
    475 /**
    476  * Acquires the HDA lock or returns.
    477  */
    478 # define DEVHDA_LOCK_RETURN_VOID(a_pThis) \
    479     do { \
    480         int rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, VERR_IGNORED); \
    481         if (rcLock != VINF_SUCCESS) \
    482         { \
    483             AssertRC(rcLock); \
    484             return; \
    485         } \
    486     } while (0)
    487 
    488 /**
    489  * Releases the HDA lock.
    490  */
    491 #define DEVHDA_UNLOCK(a_pThis) \
    492     do { PDMCritSectLeave(&(a_pThis)->CritSect); } while (0)
    493 
    494 /**
    495  * Acquires the TM lock and HDA lock, returns on failure.
    496  */
    497 #define DEVHDA_LOCK_BOTH_RETURN_VOID(a_pThis, a_SD) \
    498     do { \
    499         int rcLock = TMTimerLock((a_pThis)->pTimer[a_SD], VERR_IGNORED); \
    500         if (rcLock != VINF_SUCCESS) \
    501         { \
    502             AssertRC(rcLock); \
    503             return; \
    504         } \
    505         rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, VERR_IGNORED); \
    506         if (rcLock != VINF_SUCCESS) \
    507         { \
    508             AssertRC(rcLock); \
    509             TMTimerUnlock((a_pThis)->pTimer[a_SD]); \
    510             return; \
    511         } \
    512     } while (0)
    513 
    514 /**
    515  * Acquires the TM lock and HDA lock, returns on failure.
    516  */
    517 #define DEVHDA_LOCK_BOTH_RETURN(a_pThis, a_SD, a_rcBusy) \
    518     do { \
    519         int rcLock = TMTimerLock((a_pThis)->pTimer[a_SD], (a_rcBusy)); \
    520         if (rcLock != VINF_SUCCESS) \
    521             return rcLock; \
    522         rcLock = PDMCritSectEnter(&(a_pThis)->CritSect, (a_rcBusy)); \
    523         if (rcLock != VINF_SUCCESS) \
    524         { \
    525             AssertRC(rcLock); \
    526             TMTimerUnlock((a_pThis)->pTimer[a_SD]); \
    527             return rcLock; \
    528         } \
    529     } while (0)
    530 
    531 /**
    532  * Releases the HDA lock and TM lock.
    533  */
    534 #define DEVHDA_UNLOCK_BOTH(a_pThis, a_SD) \
    535     do { \
    536         PDMCritSectLeave(&(a_pThis)->CritSect); \
    537         TMTimerUnlock((a_pThis)->pTimer[a_SD]); \
    538     } while (0)
     540
    539541
    540542#ifdef IN_RING3
     543
    541544/**
    542545 * Retrieves the number of bytes of a FIFOW register.
     
    586589    LogFunc(("fInterrupt=%RTbool\n", fInterrupt));
    587590
    588 #ifndef DEBUG
     591# ifndef DEBUG
    589592    hdaProcessInterrupt(pThis);
    590 #else
     593# else
    591594    hdaProcessInterrupt(pThis, __FUNCTION__);
    592 #endif
    593 }
    594 #endif
     595# endif
     596}
     597
     598#endif /* IN_RING3 */
    595599
    596600/**
     
    700704
    701705#ifdef IN_RING3
     706
    702707/**
    703708 * Synchronizes the CORB / RIRB buffers between internal <-> device state.
     
    738743    }
    739744
    740 #ifdef DEBUG_CMD_BUFFER
     745# ifdef DEBUG_CMD_BUFFER
    741746        LogFunc(("fLocal=%RTbool\n", fLocal));
    742747
     
    762767        } while(i != 0);
    763768
    764         do {
     769        do
     770        {
    765771            LogFunc(("RIRB%02x: ", i));
    766772            uint8_t j = 0;
    767             do {
     773            do
     774            {
    768775                const char *prefix;
    769776                if ((i + j) == HDA_REG(pThis, RIRBWP))
     
    776783            i += 8;
    777784        } while (i != 0);
    778 #endif
     785# endif
    779786    return rc;
    780787}
     
    782789/**
    783790 * Processes the next CORB buffer command in the queue.
     791 *
    784792 * This will invoke the HDA codec verb dispatcher.
    785793 *
     
    865873                HDA_REG(pThis, RIRBSTS) |= HDA_RIRBSTS_RINTFL;
    866874
    867 #ifndef DEBUG
     875# ifndef DEBUG
    868876                rc = hdaProcessInterrupt(pThis);
    869 #else
     877# else
    870878                rc = hdaProcessInterrupt(pThis, __FUNCTION__);
    871 #endif
     879# endif
    872880            }
    873881        }
     
    888896    return rc;
    889897}
     898
    890899#endif /* IN_RING3 */
    891900
     
    10611070 * @remark  Does not actually set the wall clock counter.
    10621071 */
    1063 uint64_t hdaWalClkGetMax(PHDASTATE pThis)
     1072static uint64_t hdaWalClkGetMax(PHDASTATE pThis)
    10641073{
    10651074    const uint64_t u64WalClkCur       = ASMAtomicReadU64(&pThis->u64WalClk);
     
    23352344
    23362345#ifdef IN_RING3
     2346
    23372347/**
    23382348 * Retrieves a corresponding sink for a given mixer control.
     
    23542364            pSink = &pThis->SinkFront;
    23552365            break;
    2356 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
     2366# ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
    23572367        case PDMAUDIOMIXERCTL_CENTER_LFE:
    23582368            pSink = &pThis->SinkCenterLFE;
     
    23612371            pSink = &pThis->SinkRear;
    23622372            break;
    2363 #endif
     2373# endif
    23642374        case PDMAUDIOMIXERCTL_LINE_IN:
    23652375            pSink = &pThis->SinkLineIn;
    23662376            break;
    2367 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
     2377# ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
    23682378        case PDMAUDIOMIXERCTL_MIC_IN:
    23692379            pSink = &pThis->SinkMicIn;
    23702380            break;
    2371 #endif
     2381# endif
    23722382        default:
    23732383            pSink = NULL;
     
    24212431                pDrvStream = &pDrv->LineIn;
    24222432                break;
    2423 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
     2433# ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
    24242434            case PDMAUDIORECSOURCE_MIC:
    24252435                pDrvStream = &pDrv->MicIn;
    24262436                break;
    2427 #endif
     2437# endif
    24282438            default:
    24292439                rc = VERR_NOT_SUPPORTED;
     
    24402450                pDrvStream = &pDrv->Front;
    24412451                break;
    2442 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
     2452# ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
    24432453            case PDMAUDIOPLAYBACKDEST_CENTER_LFE:
    24442454                pDrvStream = &pDrv->CenterLFE;
     
    24472457                pDrvStream = &pDrv->Rear;
    24482458                break;
    2449 #endif
     2459# endif
    24502460            default:
    24512461                rc = VERR_NOT_SUPPORTED;
     
    25212531
    25222532/**
     2533 * @interface_method_impl{HDACODEC,pfnCbMixerAddStream}
     2534 *
    25232535 * Adds a new audio stream to a specific mixer control.
     2536 *
    25242537 * Depending on the mixer control the stream then gets assigned to one of the internal
    25252538 * mixer sinks, which in turn then handle the mixing of all connected streams to that sink.
     
    25532566
    25542567/**
     2568 * @interface_method_impl{HDACODEC,pfnCbMixerRemoveStream}
     2569 *
    25552570 * Removes a specified mixer control from the HDA's mixer.
    25562571 *
     
    25832598                    pDrv->LineIn.pMixStrm = NULL;
    25842599                    break;
    2585 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
     2600# ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
    25862601                case PDMAUDIOMIXERCTL_MIC_IN:
    25872602                    pMixStream = pDrv->MicIn.pMixStrm;
    25882603                    pDrv->MicIn.pMixStrm = NULL;
    25892604                    break;
    2590 #endif
     2605# endif
    25912606                /*
    25922607                 * Output.
     
    25962611                    pDrv->Front.pMixStrm = NULL;
    25972612                    break;
    2598 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
     2613# ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
    25992614                case PDMAUDIOMIXERCTL_CENTER_LFE:
    26002615                    pMixStream = pDrv->CenterLFE.pMixStrm;
     
    26052620                    pDrv->Rear.pMixStrm = NULL;
    26062621                    break;
    2607 #endif
     2622# endif
    26082623                default:
    26092624                    AssertMsgFailed(("Mixer control %d not implemented\n", enmMixerCtl));
     
    26312646
    26322647/**
     2648 * @interface_method_impl{HDACODEC,pfnCbMixerControl}
     2649 *
    26332650 * Controls an input / output converter widget, that is, which converter is connected
    26342651 * to which stream (and channel).
     
    26572674    uSD--;
    26582675
    2659 #ifndef VBOX_WITH_AUDIO_HDA_MIC_IN
     2676# ifndef VBOX_WITH_AUDIO_HDA_MIC_IN
    26602677    /* Only SDI0 (Line-In) is supported. */
    26612678    if (   hdaGetDirFromSD(uSD) == PDMAUDIODIR_IN
     
    26652682        uSD = 0;
    26662683    }
    2667 #endif
     2684# endif
    26682685
    26692686    int rc = VINF_SUCCESS;
     
    27422759
    27432760/**
     2761 * @interface_method_impl{HDACODEC,pfnCbMixerSetVolume}
     2762 *
    27442763 * Sets the volume of a specified mixer control.
    27452764 *
     
    27812800 * @param   pvUser              Pointer to associated HDASTREAM.
    27822801 */
    2783 DECLCALLBACK(void) hdaTimer(PPDMDEVINS pDevIns, PTMTIMER pTimer, void *pvUser)
     2802static DECLCALLBACK(void) hdaTimer(PPDMDEVINS pDevIns, PTMTIMER pTimer, void *pvUser)
    27842803{
    27852804    RT_NOREF(pDevIns, pTimer);
     
    28132832}
    28142833
    2815 #ifdef HDA_USE_DMA_ACCESS_HANDLER
     2834# ifdef HDA_USE_DMA_ACCESS_HANDLER
    28162835/**
    28172836 * HC access handler for the FIFO.
     
    28562875        case PGMACCESSTYPE_WRITE:
    28572876        {
    2858 # ifdef DEBUG
     2877#  ifdef DEBUG
    28592878            PHDASTREAMDBGINFO pStreamDbg = &pStream->Dbg;
    28602879
     
    28922911                     pStream->u8SD, pStreamDbg->cWritesTotal, pStreamDbg->cbWrittenTotal,
    28932912                     ASMDivU64ByU32RetU32(pStreamDbg->cbWrittenTotal, pStreamDbg->cWritesTotal)));
    2894 # endif
     2913#  endif
    28952914
    28962915            if (pThis->fDebugEnabled)
     
    29032922            }
    29042923
    2905 # ifdef HDA_USE_DMA_ACCESS_HANDLER_WRITING
     2924#  ifdef HDA_USE_DMA_ACCESS_HANDLER_WRITING
    29062925            PRTCIRCBUF pCircBuf = pStream->State.pCircBuf;
    29072926            AssertPtr(pCircBuf);
     
    29332952                RTCircBufReleaseWriteBlock(pCircBuf, cbChunk);
    29342953            }
    2935 # endif /* HDA_USE_DMA_ACCESS_HANDLER_WRITING */
     2954#  endif /* HDA_USE_DMA_ACCESS_HANDLER_WRITING */
    29362955            break;
    29372956        }
     
    29442963    return VINF_PGM_HANDLER_DO_DEFAULT;
    29452964}
    2946 #endif /* HDA_USE_DMA_ACCESS_HANDLER */
     2965# endif /* HDA_USE_DMA_ACCESS_HANDLER */
    29472966
    29482967/**
     
    30113030     * These stream numbers can be changed by the guest dynamically lateron.
    30123031     */
    3013 #ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
     3032# ifdef VBOX_WITH_AUDIO_HDA_MIC_IN
    30143033    hdaMixerControl(pThis, PDMAUDIOMIXERCTL_MIC_IN    , 1 /* SD0 */, 0 /* Channel */);
    3015 #endif
     3034# endif
    30163035    hdaMixerControl(pThis, PDMAUDIOMIXERCTL_LINE_IN   , 1 /* SD0 */, 0 /* Channel */);
    30173036
    30183037    hdaMixerControl(pThis, PDMAUDIOMIXERCTL_FRONT     , 5 /* SD4 */, 0 /* Channel */);
    3019 #ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
     3038# ifdef VBOX_WITH_AUDIO_HDA_51_SURROUND
    30203039    hdaMixerControl(pThis, PDMAUDIOMIXERCTL_CENTER_LFE, 5 /* SD4 */, 0 /* Channel */);
    30213040    hdaMixerControl(pThis, PDMAUDIOMIXERCTL_REAR      , 5 /* SD4 */, 0 /* Channel */);
    3022 #endif
     3041# endif
    30233042
    30243043    pThis->cbCorbBuf = HDA_CORB_SIZE * sizeof(uint32_t);
     
    30583077    LogRel(("HDA: Reset\n"));
    30593078}
    3060 
    3061 #ifdef DEBUG_andy
    3062 # define HDA_DEBUG_DMA
    3063 #endif
    30643079
    30653080#endif /* IN_RING3 */
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