Merge tag 'sound-5.6-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai...
[sfrench/cifs-2.6.git] / sound / isa / gus / gus_pcm.c
index 6385b61aa09401b748e7299768078c6318c1018d..aca4ab90e5bc5a06cf966616ac1de91e386984f1 100644 (file)
@@ -423,11 +423,8 @@ static int snd_gf1_pcm_playback_hw_params(struct snd_pcm_substream *substream,
        struct snd_gus_card *gus = snd_pcm_substream_chip(substream);
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct gus_pcm_private *pcmp = runtime->private_data;
-       int err;
-       
-       if ((err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params))) < 0)
-               return err;
-       if (err > 0) {  /* change */
+
+       if (runtime->buffer_changed) {
                struct snd_gf1_mem_block *block;
                if (pcmp->memory > 0) {
                        snd_gf1_mem_free(&gus->gf1.mem_alloc, pcmp->memory);
@@ -471,7 +468,6 @@ static int snd_gf1_pcm_playback_hw_free(struct snd_pcm_substream *substream)
        struct snd_pcm_runtime *runtime = substream->runtime;
        struct gus_pcm_private *pcmp = runtime->private_data;
 
-       snd_pcm_lib_free_pages(substream);
        if (pcmp->pvoices[0]) {
                snd_gf1_free_voice(pcmp->gus, pcmp->pvoices[0]);
                pcmp->pvoices[0] = NULL;
@@ -574,12 +570,7 @@ static int snd_gf1_pcm_capture_hw_params(struct snd_pcm_substream *substream,
                gus->gf1.pcm_rcntrl_reg |= 4;
        if (snd_pcm_format_unsigned(params_format(hw_params)))
                gus->gf1.pcm_rcntrl_reg |= 0x80;
-       return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
-}
-
-static int snd_gf1_pcm_capture_hw_free(struct snd_pcm_substream *substream)
-{
-       return snd_pcm_lib_free_pages(substream);
+       return 0;
 }
 
 static int snd_gf1_pcm_capture_prepare(struct snd_pcm_substream *substream)
@@ -830,7 +821,6 @@ static const struct snd_kcontrol_new snd_gf1_pcm_volume_control1 =
 static const struct snd_pcm_ops snd_gf1_pcm_playback_ops = {
        .open =         snd_gf1_pcm_playback_open,
        .close =        snd_gf1_pcm_playback_close,
-       .ioctl =        snd_pcm_lib_ioctl,
        .hw_params =    snd_gf1_pcm_playback_hw_params,
        .hw_free =      snd_gf1_pcm_playback_hw_free,
        .prepare =      snd_gf1_pcm_playback_prepare,
@@ -844,9 +834,7 @@ static const struct snd_pcm_ops snd_gf1_pcm_playback_ops = {
 static const struct snd_pcm_ops snd_gf1_pcm_capture_ops = {
        .open =         snd_gf1_pcm_capture_open,
        .close =        snd_gf1_pcm_capture_close,
-       .ioctl =        snd_pcm_lib_ioctl,
        .hw_params =    snd_gf1_pcm_capture_hw_params,
-       .hw_free =      snd_gf1_pcm_capture_hw_free,
        .prepare =      snd_gf1_pcm_capture_prepare,
        .trigger =      snd_gf1_pcm_capture_trigger,
        .pointer =      snd_gf1_pcm_capture_pointer,
@@ -875,9 +863,9 @@ int snd_gf1_pcm_new(struct snd_gus_card *gus, int pcm_dev, int control_index)
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_gf1_pcm_playback_ops);
 
        for (substream = pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream; substream; substream = substream->next)
-               snd_pcm_lib_preallocate_pages(substream, SNDRV_DMA_TYPE_DEV,
-                                             card->dev,
-                                             64*1024, gus->gf1.dma1 > 3 ? 128*1024 : 64*1024);
+               snd_pcm_set_managed_buffer(substream, SNDRV_DMA_TYPE_DEV,
+                                          card->dev,
+                                          64*1024, gus->gf1.dma1 > 3 ? 128*1024 : 64*1024);
        
        pcm->info_flags = 0;
        pcm->dev_subclass = SNDRV_PCM_SUBCLASS_GENERIC_MIX;
@@ -885,9 +873,9 @@ int snd_gf1_pcm_new(struct snd_gus_card *gus, int pcm_dev, int control_index)
                snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_gf1_pcm_capture_ops);
                if (gus->gf1.dma2 == gus->gf1.dma1)
                        pcm->info_flags |= SNDRV_PCM_INFO_HALF_DUPLEX;
-               snd_pcm_lib_preallocate_pages(pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream,
-                                             SNDRV_DMA_TYPE_DEV, card->dev,
-                                             64*1024, gus->gf1.dma2 > 3 ? 128*1024 : 64*1024);
+               snd_pcm_set_managed_buffer(pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream,
+                                          SNDRV_DMA_TYPE_DEV, card->dev,
+                                          64*1024, gus->gf1.dma2 > 3 ? 128*1024 : 64*1024);
        }
        strcpy(pcm->name, pcm->id);
        if (gus->interwave) {