VirtualBox

Changeset 59190 in vbox


Ignore:
Timestamp:
Dec 18, 2015 3:14:51 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
104811
Message:

Audio: Made timer Hertz rate configurable through CFGM for HDA/AC'97/SB16 devices.

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

Legend:

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

    r59189 r59190  
    22462246        return PDMDEV_SET_ERROR(pDevIns, VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES,
    22472247                                N_("Invalid configuration for the AC'97 device"));
     2248    int rc;
     2249#ifndef VBOX_WITH_AUDIO_CALLBACKS
     2250    uint16_t uTimerHz;
     2251    rc = CFGMR3QueryU16Def(pCfg, "TimerHz", &uTimerHz, 200 /* Hz */);
     2252    if (RT_FAILURE(rc))
     2253        return PDMDEV_SET_ERROR(pDevIns, rc,
     2254                                N_("AC'97 configuration error: failed to read Hertz (Hz) rate as unsigned integer"));
     2255#endif
    22482256
    22492257    /*
     
    22512259     */
    22522260    char szCodec[20];
    2253     int rc = CFGMR3QueryStringDef(pCfg, "Codec", &szCodec[0], sizeof(szCodec), "STAC9700");
     2261    rc = CFGMR3QueryStringDef(pCfg, "Codec", &szCodec[0], sizeof(szCodec), "STAC9700");
    22542262    if (RT_FAILURE(rc))
    22552263        return PDMDEV_SET_ERROR(pDevIns, VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES,
     
    24792487        if (RT_SUCCESS(rc))
    24802488        {
    2481             pThis->cTimerTicks = TMTimerGetFreq(pThis->pTimer) / 200; /** @todo Make this configurable! */
     2489            pThis->cTimerTicks = TMTimerGetFreq(pThis->pTimer) / uTimerHz;
    24822490            pThis->uTimerTS    = TMTimerGet(pThis->pTimer);
    2483             LogFunc(("Timer ticks=%RU64\n", pThis->cTimerTicks));
     2491            LogFunc(("Timer ticks=%RU64 (%RU16 Hz)\n", pThis->cTimerTicks, uTimerHz));
    24842492
    24852493            /* Fire off timer. */
  • trunk/src/VBox/Devices/Audio/DevIchHda.cpp

    r59187 r59190  
    43094309        return PDMDEV_SET_ERROR(pDevIns, rc,
    43104310                                N_("HDA configuration error: failed to read R0Enabled as boolean"));
     4311#ifndef VBOX_WITH_AUDIO_CALLBACKS
     4312    uint16_t uTimerHz;
     4313    rc = CFGMR3QueryU16Def(pCfgHandle, "TimerHz", &uTimerHz, 500 /* Hz */);
     4314    if (RT_FAILURE(rc))
     4315        return PDMDEV_SET_ERROR(pDevIns, rc,
     4316                                N_("HDA configuration error: failed to read Hertz (Hz) rate as unsigned integer"));
     4317#endif
    43114318
    43124319    /*
     
    46154622             *        low, e.g. "PDMDevHlpTMTimeVirtGetFreq / 200".
    46164623             *  Update: Because the guest doesn't prepare enough data at a time. */
    4617             pThis->cTimerTicks = TMTimerGetFreq(pThis->pTimer) / 500; /** @todo Make this configurable! */
     4624            pThis->cTimerTicks = TMTimerGetFreq(pThis->pTimer) / uTimerHz;
    46184625            pThis->uTimerTS    = TMTimerGet(pThis->pTimer);
    4619             LogFunc(("Timer ticks=%RU64\n", pThis->cTimerTicks));
     4626            LogFunc(("Timer ticks=%RU64 (%RU16 Hz)\n", pThis->cTimerTicks, uTimerHz));
    46204627
    46214628            /* Fire off timer. */
  • trunk/src/VBox/Devices/Audio/DevSB16.cpp

    r59188 r59190  
    20482048{
    20492049    PSB16STATE pThis = PDMINS_2_DATA(pDevIns, PSB16STATE);
    2050     int rc;
    20512050
    20522051    /*
     
    20622061                              "Version\0"))
    20632062        return PDMDEV_SET_ERROR(pDevIns, VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES,
    2064                                 N_("Invalid configuration for sb16 device"));
     2063                                N_("Invalid configuration for SB16 device"));
    20652064
    20662065    /*
    20672066     * Read config data.
    20682067     */
    2069     rc = CFGMR3QuerySIntDef(pCfgHandle, "IRQ", &pThis->irq, 5);
     2068    int rc = CFGMR3QuerySIntDef(pCfgHandle, "IRQ", &pThis->irq, 5);
    20702069    if (RT_FAILURE(rc))
    20712070        return PDMDEV_SET_ERROR(pDevIns, rc,
    2072                                 N_("Configuration error: Failed to get the \"IRQ\" value"));
     2071                                N_("SB16 configuration error: Failed to get the \"IRQ\" value"));
    20732072    pThis->irqCfg  = pThis->irq;
    20742073
     
    20762075    if (RT_FAILURE(rc))
    20772076        return PDMDEV_SET_ERROR(pDevIns, rc,
    2078                                 N_("Configuration error: Failed to get the \"DMA\" value"));
     2077                                N_("SB16 configuration error: Failed to get the \"DMA\" value"));
    20792078    pThis->dmaCfg  = pThis->dma;
    20802079
     
    20822081    if (RT_FAILURE(rc))
    20832082        return PDMDEV_SET_ERROR(pDevIns, rc,
    2084                                 N_("Configuration error: Failed to get the \"DMA16\" value"));
     2083                                N_("SB16 configuration error: Failed to get the \"DMA16\" value"));
    20852084    pThis->hdmaCfg = pThis->hdma;
    20862085
     
    20892088    if (RT_FAILURE(rc))
    20902089        return PDMDEV_SET_ERROR(pDevIns, rc,
    2091                                 N_("Configuration error: Failed to get the \"Port\" value"));
     2090                                N_("SB16 configuration error: Failed to get the \"Port\" value"));
    20922091    pThis->port    = Port;
    20932092    pThis->portCfg = Port;
     
    20972096    if (RT_FAILURE(rc))
    20982097        return PDMDEV_SET_ERROR(pDevIns, rc,
    2099                                 N_("Configuration error: Failed to get the \"Version\" value"));
     2098                                N_("SB16 configuration error: Failed to get the \"Version\" value"));
     2099
     2100#ifndef VBOX_WITH_AUDIO_CALLBACKS
     2101    uint16_t uTimerHz;
     2102    rc = CFGMR3QueryU16Def(pCfgHandle, "TimerHz", &uTimerHz, 200 /* Hz */);
     2103    if (RT_FAILURE(rc))
     2104        return PDMDEV_SET_ERROR(pDevIns, rc,
     2105                                N_("SB16 configuration error: failed to read Hertz (Hz) rate as unsigned integer"));
     2106#endif
     2107
    21002108    pThis->ver     = u16Version;
    21012109    pThis->verCfg  = u16Version;
     
    21802188        else
    21812189        {
    2182             pThis->cTimerTicksIO = TMTimerGetFreq(pThis->pTimerIO) / 200; /** @todo Make this configurable! */
     2190            pThis->cTimerTicksIO = TMTimerGetFreq(pThis->pTimerIO) / uTimerHz;
    21832191            pThis->uTimerTSIO    = TMTimerGet(pThis->pTimerIO);
    2184             LogFunc(("Timer ticks=%RU64\n", pThis->cTimerTicksIO));
     2192            LogFunc(("Timer ticks=%RU64 (%RU16 Hz)\n", pThis->cTimerTicksIO, uTimerHz));
    21852193
    21862194            /* Fire off timer. */
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