spin_unlock_irqrestore(&chip->reg_lock, flags);
 }
 
-static int snd_sb16_hw_params(struct snd_pcm_substream *substream,
-                             struct snd_pcm_hw_params *hw_params)
-{
-       return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
-}
-
-static int snd_sb16_hw_free(struct snd_pcm_substream *substream)
-{
-       snd_pcm_lib_free_pages(substream);
-       return 0;
-}
-
 static int snd_sb16_playback_prepare(struct snd_pcm_substream *substream)
 {
        unsigned long flags;
        .open =         snd_sb16_playback_open,
        .close =        snd_sb16_playback_close,
        .ioctl =        snd_pcm_lib_ioctl,
-       .hw_params =    snd_sb16_hw_params,
-       .hw_free =      snd_sb16_hw_free,
        .prepare =      snd_sb16_playback_prepare,
        .trigger =      snd_sb16_playback_trigger,
        .pointer =      snd_sb16_playback_pointer,
        .open =         snd_sb16_capture_open,
        .close =        snd_sb16_capture_close,
        .ioctl =        snd_pcm_lib_ioctl,
-       .hw_params =    snd_sb16_hw_params,
-       .hw_free =      snd_sb16_hw_free,
        .prepare =      snd_sb16_capture_prepare,
        .trigger =      snd_sb16_capture_trigger,
        .pointer =      snd_sb16_capture_pointer,
                pcm->info_flags = SNDRV_PCM_INFO_HALF_DUPLEX;
        }
 
-       snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
-                                             card->dev,
-                                             64*1024, 128*1024);
+       snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV,
+                                      card->dev, 64*1024, 128*1024);
        return 0;
 }
 
 
        return 0;
 }
 
-static int snd_sb8_hw_params(struct snd_pcm_substream *substream,
-                            struct snd_pcm_hw_params *hw_params)
-{
-       return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
-}
-
-static int snd_sb8_hw_free(struct snd_pcm_substream *substream)
-{
-       snd_pcm_lib_free_pages(substream);
-       return 0;
-}
-
 static int snd_sb8_capture_prepare(struct snd_pcm_substream *substream)
 {
        unsigned long flags;
        .open =                 snd_sb8_open,
        .close =                snd_sb8_close,
        .ioctl =                snd_pcm_lib_ioctl,
-       .hw_params =            snd_sb8_hw_params,
-       .hw_free =              snd_sb8_hw_free,
        .prepare =              snd_sb8_playback_prepare,
        .trigger =              snd_sb8_playback_trigger,
        .pointer =              snd_sb8_playback_pointer,
        .open =                 snd_sb8_open,
        .close =                snd_sb8_close,
        .ioctl =                snd_pcm_lib_ioctl,
-       .hw_params =            snd_sb8_hw_params,
-       .hw_free =              snd_sb8_hw_free,
        .prepare =              snd_sb8_capture_prepare,
        .trigger =              snd_sb8_capture_trigger,
        .pointer =              snd_sb8_capture_pointer,
 
        if (chip->dma8 > 3 || chip->dma16 >= 0)
                max_prealloc = 128 * 1024;
-       snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
-                                             card->dev,
-                                             64*1024, max_prealloc);
+       snd_pcm_set_managed_buffer_all(pcm, SNDRV_DMA_TYPE_DEV,
+                                      card->dev, 64*1024, max_prealloc);
 
        return 0;
 }