]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - sound/firewire/fireworks/fireworks_pcm.c
ALSA: firewire: process packets in 'struct snd_pcm_ops.ack' callback
[karo-tx-linux.git] / sound / firewire / fireworks / fireworks_pcm.c
index 9171702f7d0bed08699aaa274110e9da230f4dbe..346e2647ed1f2d29b1214afe5f2e9a7401531df3 100644 (file)
@@ -257,8 +257,6 @@ static int pcm_capture_hw_params(struct snd_pcm_substream *substream,
                mutex_unlock(&efw->mutex);
        }
 
-       amdtp_am824_set_pcm_format(&efw->tx_stream, params_format(hw_params));
-
        return 0;
 }
 static int pcm_playback_hw_params(struct snd_pcm_substream *substream,
@@ -278,8 +276,6 @@ static int pcm_playback_hw_params(struct snd_pcm_substream *substream,
                mutex_unlock(&efw->mutex);
        }
 
-       amdtp_am824_set_pcm_format(&efw->rx_stream, params_format(hw_params));
-
        return 0;
 }
 
@@ -383,6 +379,20 @@ static snd_pcm_uframes_t pcm_playback_pointer(struct snd_pcm_substream *sbstrm)
        return amdtp_stream_pcm_pointer(&efw->rx_stream);
 }
 
+static int pcm_capture_ack(struct snd_pcm_substream *substream)
+{
+       struct snd_efw *efw = substream->private_data;
+
+       return amdtp_stream_pcm_ack(&efw->tx_stream);
+}
+
+static int pcm_playback_ack(struct snd_pcm_substream *substream)
+{
+       struct snd_efw *efw = substream->private_data;
+
+       return amdtp_stream_pcm_ack(&efw->rx_stream);
+}
+
 int snd_efw_create_pcm_devices(struct snd_efw *efw)
 {
        static const struct snd_pcm_ops capture_ops = {
@@ -394,6 +404,7 @@ int snd_efw_create_pcm_devices(struct snd_efw *efw)
                .prepare        = pcm_capture_prepare,
                .trigger        = pcm_capture_trigger,
                .pointer        = pcm_capture_pointer,
+               .ack            = pcm_capture_ack,
                .page           = snd_pcm_lib_get_vmalloc_page,
        };
        static const struct snd_pcm_ops playback_ops = {
@@ -405,6 +416,7 @@ int snd_efw_create_pcm_devices(struct snd_efw *efw)
                .prepare        = pcm_playback_prepare,
                .trigger        = pcm_playback_trigger,
                .pointer        = pcm_playback_pointer,
+               .ack            = pcm_playback_ack,
                .page           = snd_pcm_lib_get_vmalloc_page,
                .mmap           = snd_pcm_lib_mmap_vmalloc,
        };