diff options
Diffstat (limited to 'sound/core/pcm_native.c')
-rw-r--r-- | sound/core/pcm_native.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 872887624030..605c86df71c5 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c | |||
@@ -481,11 +481,13 @@ static int snd_pcm_hw_params(struct snd_pcm_substream *substream, | |||
481 | snd_pcm_timer_resolution_change(substream); | 481 | snd_pcm_timer_resolution_change(substream); |
482 | runtime->status->state = SNDRV_PCM_STATE_SETUP; | 482 | runtime->status->state = SNDRV_PCM_STATE_SETUP; |
483 | 483 | ||
484 | pm_qos_remove_requirement(PM_QOS_CPU_DMA_LATENCY, | 484 | if (substream->latency_pm_qos_req) { |
485 | substream->latency_id); | 485 | pm_qos_remove_request(substream->latency_pm_qos_req); |
486 | substream->latency_pm_qos_req = NULL; | ||
487 | } | ||
486 | if ((usecs = period_to_usecs(runtime)) >= 0) | 488 | if ((usecs = period_to_usecs(runtime)) >= 0) |
487 | pm_qos_add_requirement(PM_QOS_CPU_DMA_LATENCY, | 489 | substream->latency_pm_qos_req = pm_qos_add_request( |
488 | substream->latency_id, usecs); | 490 | PM_QOS_CPU_DMA_LATENCY, usecs); |
489 | return 0; | 491 | return 0; |
490 | _error: | 492 | _error: |
491 | /* hardware might be unuseable from this time, | 493 | /* hardware might be unuseable from this time, |
@@ -540,8 +542,8 @@ static int snd_pcm_hw_free(struct snd_pcm_substream *substream) | |||
540 | if (substream->ops->hw_free) | 542 | if (substream->ops->hw_free) |
541 | result = substream->ops->hw_free(substream); | 543 | result = substream->ops->hw_free(substream); |
542 | runtime->status->state = SNDRV_PCM_STATE_OPEN; | 544 | runtime->status->state = SNDRV_PCM_STATE_OPEN; |
543 | pm_qos_remove_requirement(PM_QOS_CPU_DMA_LATENCY, | 545 | pm_qos_remove_request(substream->latency_pm_qos_req); |
544 | substream->latency_id); | 546 | substream->latency_pm_qos_req = NULL; |
545 | return result; | 547 | return result; |
546 | } | 548 | } |
547 | 549 | ||