chip->alsa_stream[idx] = alsa_stream;
 
        chip->opened |= (1 << idx);
-       alsa_stream->draining = 1;
 
 out:
        mutex_unlock(&chip->audio_mutex);
        alsa_stream->buffer_size = snd_pcm_lib_buffer_bytes(substream);
        alsa_stream->period_size = snd_pcm_lib_period_bytes(substream);
        alsa_stream->pos = 0;
+       alsa_stream->draining = false;
 
        audio_debug("buffer_size=%d, period_size=%d pos=%d frame_bits=%d\n",
                alsa_stream->buffer_size, alsa_stream->period_size,
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
                err = bcm2835_audio_start(alsa_stream);
-               if (!err)
-                       alsa_stream->draining = 1;
-               else
+               if (err)
                        audio_error(" Failed to START alsa device (%d)\n", err);
                break;
+       case SNDRV_PCM_TRIGGER_DRAIN:
+               alsa_stream->draining = true;
+               break;
        case SNDRV_PCM_TRIGGER_STOP:
-               if (runtime->status->state == SNDRV_PCM_STATE_DRAINING) {
-                       audio_info("DRAINING\n");
-                       alsa_stream->draining = 1;
-               } else {
-                       audio_info("DROPPING\n");
-                       alsa_stream->draining = 0;
-               }
                err = bcm2835_audio_stop(alsa_stream);
-               if (err != 0)
+               if (err)
                        audio_error(" Failed to STOP alsa device (%d)\n", err);
                break;
        default: