|
@@ -1546,16 +1546,10 @@ static int snd_pcm_drop(struct snd_pcm_substream *substream)
|
|
|
card = substream->pcm->card;
|
|
|
|
|
|
if (runtime->status->state == SNDRV_PCM_STATE_OPEN ||
|
|
|
- runtime->status->state == SNDRV_PCM_STATE_DISCONNECTED)
|
|
|
+ runtime->status->state == SNDRV_PCM_STATE_DISCONNECTED ||
|
|
|
+ runtime->status->state == SNDRV_PCM_STATE_SUSPENDED)
|
|
|
return -EBADFD;
|
|
|
|
|
|
- snd_power_lock(card);
|
|
|
- if (runtime->status->state == SNDRV_PCM_STATE_SUSPENDED) {
|
|
|
- result = snd_power_wait(card, SNDRV_CTL_POWER_D0);
|
|
|
- if (result < 0)
|
|
|
- goto _unlock;
|
|
|
- }
|
|
|
-
|
|
|
snd_pcm_stream_lock_irq(substream);
|
|
|
/* resume pause */
|
|
|
if (runtime->status->state == SNDRV_PCM_STATE_PAUSED)
|
|
@@ -1564,8 +1558,7 @@ static int snd_pcm_drop(struct snd_pcm_substream *substream)
|
|
|
snd_pcm_stop(substream, SNDRV_PCM_STATE_SETUP);
|
|
|
/* runtime->control->appl_ptr = runtime->status->hw_ptr; */
|
|
|
snd_pcm_stream_unlock_irq(substream);
|
|
|
- _unlock:
|
|
|
- snd_power_unlock(card);
|
|
|
+
|
|
|
return result;
|
|
|
}
|
|
|
|