Remove superflous pcm_free callbacks.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
        .pointer =      snd_ad1816a_capture_pointer,
 };
 
-static void snd_ad1816a_pcm_free(snd_pcm_t *pcm)
-{
-       ad1816a_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int snd_ad1816a_pcm(ad1816a_t *chip, int device, snd_pcm_t **rpcm)
 {
        int error;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_ad1816a_capture_ops);
 
        pcm->private_data = chip;
-       pcm->private_free = snd_ad1816a_pcm_free;
        pcm->info_flags = (chip->dma1 == chip->dma2 ) ? SNDRV_PCM_INFO_JOINT_DUPLEX : 0;
 
        strcpy(pcm->name, snd_ad1816a_chip_id(chip));
 
        .pointer =      snd_ad1848_capture_pointer,
 };
 
-static void snd_ad1848_pcm_free(snd_pcm_t *pcm)
-{
-       ad1848_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int snd_ad1848_pcm(ad1848_t *chip, int device, snd_pcm_t **rpcm)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_ad1848_playback_ops);
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_ad1848_capture_ops);
 
-       pcm->private_free = snd_ad1848_pcm_free;
        pcm->private_data = chip;
        pcm->info_flags = SNDRV_PCM_INFO_HALF_DUPLEX;
        strcpy(pcm->name, snd_ad1848_chip_id(chip));
 
        return chip->streams[SNDRV_PCM_STREAM_CAPTURE].open(substream);
 }
 
-static void snd_cmi8330_pcm_free(snd_pcm_t *pcm)
-{
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_cmi8330_pcm(snd_card_t *card, struct snd_cmi8330 *chip)
 {
        snd_pcm_t *pcm;
                return err;
        strcpy(pcm->name, "CMI8330");
        pcm->private_data = chip;
-       pcm->private_free = snd_cmi8330_pcm_free;
        
        /* SB16 */
        ops = snd_sb16dsp_get_pcm_ops(CMI_SB_STREAM);
 
        .pointer =      snd_cs4231_capture_pointer,
 };
 
-static void snd_cs4231_pcm_free(snd_pcm_t *pcm)
-{
-       cs4231_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int snd_cs4231_pcm(cs4231_t *chip, int device, snd_pcm_t **rpcm)
 {
        snd_pcm_t *pcm;
        
        /* global setup */
        pcm->private_data = chip;
-       pcm->private_free = snd_cs4231_pcm_free;
        pcm->info_flags = 0;
        if (chip->single_dma)
                pcm->info_flags |= SNDRV_PCM_INFO_HALF_DUPLEX;
 
        .pointer =              snd_es1688_capture_pointer,
 };
 
-static void snd_es1688_pcm_free(snd_pcm_t *pcm)
-{
-       es1688_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int snd_es1688_pcm(es1688_t * chip, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_es1688_capture_ops);
 
        pcm->private_data = chip;
-       pcm->private_free = snd_es1688_pcm_free;
        pcm->info_flags = SNDRV_PCM_INFO_HALF_DUPLEX;
        sprintf(pcm->name, snd_es1688_chip_id(chip));
        chip->pcm = pcm;
 
        .pointer =      snd_es18xx_capture_pointer,
 };
 
-static void snd_es18xx_pcm_free(snd_pcm_t *pcm)
-{
-       es18xx_t *codec = pcm->private_data;
-       codec->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_es18xx_pcm(es18xx_t *chip, int device, snd_pcm_t ** rpcm)
 {
         snd_pcm_t *pcm;
 
        /* global setup */
         pcm->private_data = chip;
-       pcm->private_free = snd_es18xx_pcm_free;
         pcm->info_flags = 0;
        if (chip->caps & ES18XX_DUPLEX_SAME)
                pcm->info_flags |= SNDRV_PCM_INFO_JOINT_DUPLEX;
 
        return 0;
 }
 
-static void snd_gf1_pcm_free(snd_pcm_t *pcm)
-{
-       snd_gus_card_t *gus = pcm->private_data;
-       gus->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int snd_gf1_pcm_volume_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
 {
        uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
        if (err < 0)
                return err;
        pcm->private_data = gus;
-       pcm->private_free = snd_gf1_pcm_free;
        /* playback setup */
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_gf1_pcm_playback_ops);
 
 
        .pointer =      snd_opti93x_capture_pointer,
 };
 
-static void snd_opti93x_pcm_free(snd_pcm_t *pcm)
-{
-       opti93x_t *codec = pcm->private_data;
-       codec->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int snd_opti93x_pcm(opti93x_t *codec, int device, snd_pcm_t **rpcm)
 {
        int error;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_opti93x_capture_ops);
 
        pcm->private_data = codec;
-       pcm->private_free = snd_opti93x_pcm_free;
        pcm->info_flags = SNDRV_PCM_INFO_JOINT_DUPLEX;
 
        strcpy(pcm->name, snd_opti93x_chip_id(codec));
 
        .pointer =      snd_sb16_capture_pointer,
 };
 
-static void snd_sb16dsp_pcm_free(snd_pcm_t *pcm)
-{
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int snd_sb16dsp_pcm(sb_t * chip, int device, snd_pcm_t ** rpcm)
 {
        snd_card_t *card = chip->card;
        sprintf(pcm->name, "DSP v%i.%i", chip->version >> 8, chip->version & 0xff);
        pcm->info_flags = SNDRV_PCM_INFO_JOINT_DUPLEX;
        pcm->private_data = chip;
-       pcm->private_free = snd_sb16dsp_pcm_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_sb16_playback_ops);
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_sb16_capture_ops);
 
        .pointer =              snd_sb8_capture_pointer,
 };
 
-static void snd_sb8dsp_pcm_free(snd_pcm_t *pcm)
-{
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int snd_sb8dsp_pcm(sb_t *chip, int device, snd_pcm_t ** rpcm)
 {
        snd_card_t *card = chip->card;
        sprintf(pcm->name, "DSP v%i.%i", chip->version >> 8, chip->version & 0xff);
        pcm->info_flags = SNDRV_PCM_INFO_HALF_DUPLEX;
        pcm->private_data = chip;
-       pcm->private_free = snd_sb8dsp_pcm_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_sb8_playback_ops);
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_sb8_capture_ops);
 
        return IRQ_HANDLED;
 }
 
-static void 
-snd_ad1889_pcm_free(snd_pcm_t *pcm)
-{
-       struct snd_ad1889 *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit
 snd_ad1889_pcm_init(struct snd_ad1889 *chip, int device, snd_pcm_t **rpcm)
 {
                        &snd_ad1889_capture_ops);
 
        pcm->private_data = chip;
-       pcm->private_free = snd_ad1889_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, chip->card->shortname);
        
 
        .pointer =      snd_als4000_capture_pointer
 };
 
-static void snd_als4000_pcm_free(snd_pcm_t *pcm)
-{
-       sb_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_als4000_pcm(sb_t *chip, int device)
 {
        snd_pcm_t *pcm;
 
        if ((err = snd_pcm_new(chip->card, "ALS4000 DSP", device, 1, 1, &pcm)) < 0)
                return err;
-       pcm->private_free = snd_als4000_pcm_free;
        pcm->private_data = chip;
        pcm->info_flags = SNDRV_PCM_INFO_JOINT_DUPLEX;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_als4000_playback_ops);
 
        .pointer =      snd_azf3328_capture_pointer
 };
 
-static void
-snd_azf3328_pcm_free(snd_pcm_t *pcm)
-{
-       azf3328_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit
 snd_azf3328_pcm(azf3328_t *chip, int device)
 {
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_azf3328_capture_ops);
 
        pcm->private_data = chip;
-       pcm->private_free = snd_azf3328_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, chip->card->shortname);
        chip->pcm = pcm;
 
        return IRQ_HANDLED;
 }
 
-static void snd_ca0106_pcm_free(snd_pcm_t *pcm)
-{
-       ca0106_t *emu = pcm->private_data;
-       emu->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_ca0106_pcm(ca0106_t *emu, int device, snd_pcm_t **rpcm)
 {
        snd_pcm_t *pcm;
                return err;
   
        pcm->private_data = emu;
-       pcm->private_free = snd_ca0106_pcm_free;
 
        switch (device) {
        case 0:
 
 /*
  */
 
-static void snd_cmipci_pcm_free(snd_pcm_t *pcm)
-{
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_cmipci_pcm_new(cmipci_t *cm, int device)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_cmipci_capture_ops);
 
        pcm->private_data = cm;
-       pcm->private_free = snd_cmipci_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, "C-Media PCI DAC/ADC");
        cm->pcm = pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_cmipci_playback2_ops);
 
        pcm->private_data = cm;
-       pcm->private_free = snd_cmipci_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, "C-Media PCI 2nd DAC");
        cm->pcm2 = pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_cmipci_capture_spdif_ops);
 
        pcm->private_data = cm;
-       pcm->private_free = snd_cmipci_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, "C-Media PCI IEC958");
        cm->pcm_spdif = pcm;
 
        .pointer =      snd_cs4281_pointer,
 };
 
-static void snd_cs4281_pcm_free(snd_pcm_t *pcm)
-{
-       cs4281_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_cs4281_pcm(cs4281_t * chip, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_cs4281_capture_ops);
 
        pcm->private_data = chip;
-       pcm->private_free = snd_cs4281_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, "CS4281");
        chip->pcm = pcm;
 
        .ack =                  snd_cs46xx_capture_transfer,
 };
 
-static void snd_cs46xx_pcm_free(snd_pcm_t *pcm)
-{
-       cs46xx_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 #ifdef CONFIG_SND_CS46XX_NEW_DSP
-static void snd_cs46xx_pcm_rear_free(snd_pcm_t *pcm)
-{
-       cs46xx_t *chip = pcm->private_data;
-       chip->pcm_rear = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
-static void snd_cs46xx_pcm_center_lfe_free(snd_pcm_t *pcm)
-{
-       cs46xx_t *chip = pcm->private_data;
-       chip->pcm_center_lfe = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
-static void snd_cs46xx_pcm_iec958_free(snd_pcm_t *pcm)
-{
-       cs46xx_t *chip = pcm->private_data;
-       chip->pcm_iec958 = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 #define MAX_PLAYBACK_CHANNELS  (DSP_MAX_PCM_CHANNELS - 1)
 #else
 #define MAX_PLAYBACK_CHANNELS  1
                return err;
 
        pcm->private_data = chip;
-       pcm->private_free = snd_cs46xx_pcm_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_cs46xx_playback_ops);
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_cs46xx_capture_ops);
                return err;
 
        pcm->private_data = chip;
-       pcm->private_free = snd_cs46xx_pcm_rear_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_cs46xx_playback_rear_ops);
 
                return err;
 
        pcm->private_data = chip;
-       pcm->private_free = snd_cs46xx_pcm_center_lfe_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_cs46xx_playback_clfe_ops);
 
                return err;
 
        pcm->private_data = chip;
-       pcm->private_free = snd_cs46xx_pcm_iec958_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_cs46xx_playback_iec958_ops);
 
 
        return IRQ_HANDLED;
 }
 
-static void snd_emu10k1x_pcm_free(snd_pcm_t *pcm)
-{
-       emu10k1x_t *emu = pcm->private_data;
-       emu->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_emu10k1x_pcm(emu10k1x_t *emu, int device, snd_pcm_t **rpcm)
 {
        snd_pcm_t *pcm;
                return err;
   
        pcm->private_data = emu;
-       pcm->private_free = snd_emu10k1x_pcm_free;
        
        switch(device) {
        case 0:
 
        .page =                 snd_pcm_sgbuf_ops_page,
 };
 
-static void snd_emu10k1_pcm_free(snd_pcm_t *pcm)
-{
-       emu10k1_t *emu = pcm->private_data;
-       emu->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int __devinit snd_emu10k1_pcm(emu10k1_t * emu, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
                return err;
 
        pcm->private_data = emu;
-       pcm->private_free = snd_emu10k1_pcm_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_emu10k1_playback_ops);
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_emu10k1_capture_ops);
                return err;
 
        pcm->private_data = emu;
-       pcm->private_free = snd_emu10k1_pcm_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_emu10k1_efx_playback_ops);
 
        .pointer =              snd_emu10k1_capture_pointer,
 };
 
-static void snd_emu10k1_pcm_mic_free(snd_pcm_t *pcm)
-{
-       emu10k1_t *emu = pcm->private_data;
-       emu->pcm_mic = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int __devinit snd_emu10k1_pcm_mic(emu10k1_t * emu, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
                return err;
 
        pcm->private_data = emu;
-       pcm->private_free = snd_emu10k1_pcm_mic_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_emu10k1_capture_mic_ops);
 
        .ack =                  snd_emu10k1_fx8010_playback_transfer,
 };
 
-static void snd_emu10k1_pcm_efx_free(snd_pcm_t *pcm)
-{
-       emu10k1_t *emu = pcm->private_data;
-       emu->pcm_efx = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int __devinit snd_emu10k1_pcm_efx(emu10k1_t * emu, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
                return err;
 
        pcm->private_data = emu;
-       pcm->private_free = snd_emu10k1_pcm_efx_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_emu10k1_fx8010_playback_ops);
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_emu10k1_capture_efx_ops);
 
        return 0;
 }
 
-static void snd_p16v_pcm_free(snd_pcm_t *pcm)
-{
-       emu10k1_t *emu = pcm->private_data;
-       //snd_printk("snd_p16v_pcm_free pcm: called\n");
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-       emu->pcm = NULL;
-}
-
 int snd_p16v_pcm(emu10k1_t *emu, int device, snd_pcm_t **rpcm)
 {
        snd_pcm_t *pcm;
                return err;
   
        pcm->private_data = emu;
-       pcm->private_free = snd_p16v_pcm_free;
        // Single playback 8 channel device.
        // Single capture 2 channel device.
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_p16v_playback_front_ops);
 
        .pointer =      snd_ensoniq_capture_pointer,
 };
 
-static void snd_ensoniq_pcm_free(snd_pcm_t *pcm)
-{
-       ensoniq_t *ensoniq = pcm->private_data;
-       ensoniq->pcm1 = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_ensoniq_pcm(ensoniq_t * ensoniq, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_ensoniq_capture_ops);
 
        pcm->private_data = ensoniq;
-       pcm->private_free = snd_ensoniq_pcm_free;
        pcm->info_flags = 0;
 #ifdef CHIP1370
        strcpy(pcm->name, "ES1370 DAC2/ADC");
        return 0;
 }
 
-static void snd_ensoniq_pcm_free2(snd_pcm_t *pcm)
-{
-       ensoniq_t *ensoniq = pcm->private_data;
-       ensoniq->pcm2 = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_ensoniq_pcm2(ensoniq_t * ensoniq, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_ensoniq_playback2_ops);
 #endif
        pcm->private_data = ensoniq;
-       pcm->private_free = snd_ensoniq_pcm_free2;
        pcm->info_flags = 0;
 #ifdef CHIP1370
        strcpy(pcm->name, "ES1370 DAC1");
 
        .copy =         snd_es1938_capture_copy,
 };
 
-static void snd_es1938_free_pcm(snd_pcm_t *pcm)
-{
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_es1938_new_pcm(es1938_t *chip, int device)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_es1938_capture_ops);
        
        pcm->private_data = chip;
-       pcm->private_free = snd_es1938_free_pcm;
        pcm->info_flags = 0;
        strcpy(pcm->name, "ESS Solo-1");
 
 
        .pointer =      snd_fm801_capture_pointer,
 };
 
-static void snd_fm801_pcm_free(snd_pcm_t *pcm)
-{
-       fm801_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_fm801_pcm(fm801_t *chip, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_fm801_capture_ops);
 
        pcm->private_data = chip;
-       pcm->private_free = snd_fm801_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, "FM801");
        chip->pcm = pcm;
 
        .pointer =      snd_ice1712_capture_pointer,
 };
 
-static void snd_ice1712_pcm_free(snd_pcm_t *pcm)
-{
-       ice1712_t *ice = pcm->private_data;
-       ice->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_ice1712_pcm(ice1712_t * ice, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_ice1712_capture_ops);
 
        pcm->private_data = ice;
-       pcm->private_free = snd_ice1712_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, "ICE1712 consumer");
        ice->pcm = pcm;
        return 0;
 }
 
-static void snd_ice1712_pcm_free_ds(snd_pcm_t *pcm)
-{
-       ice1712_t *ice = pcm->private_data;
-       ice->pcm_ds = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_ice1712_pcm_ds(ice1712_t * ice, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_ice1712_playback_ds_ops);
 
        pcm->private_data = ice;
-       pcm->private_free = snd_ice1712_pcm_free_ds;
        pcm->info_flags = 0;
        strcpy(pcm->name, "ICE1712 consumer (DS)");
        ice->pcm_ds = pcm;
        return 0;
 }
 
-static void snd_ice1712_pcm_profi_free(snd_pcm_t *pcm)
-{
-       ice1712_t *ice = pcm->private_data;
-       ice->pcm_pro = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static snd_pcm_ops_t snd_ice1712_playback_pro_ops = {
        .open =         snd_ice1712_playback_pro_open,
        .close =        snd_ice1712_playback_pro_close,
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_ice1712_capture_pro_ops);
 
        pcm->private_data = ice;
-       pcm->private_free = snd_ice1712_pcm_profi_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, "ICE1712 multi");
 
 
        return 0;
 }
 
-static int snd_hdspm_memory_free(hdspm_t * hdspm)
-{
-       snd_printdd("memory_free_for_all %p\n", hdspm->pcm);
-
-       snd_pcm_lib_preallocate_free_for_all(hdspm->pcm);
-       return 0;
-}
-
-
 static void hdspm_set_sgbuf(hdspm_t * hdspm, struct snd_sg_buf *sgbuf,
                             unsigned int reg, int channels)
 {
        if (hdspm->iobase)
                iounmap(hdspm->iobase);
 
-       snd_hdspm_memory_free(hdspm);
-
        if (hdspm->port)
                pci_release_regions(hdspm->pci);
 
 
        .pointer =      snd_sonicvibes_capture_pointer,
 };
 
-static void snd_sonicvibes_pcm_free(snd_pcm_t *pcm)
-{
-       sonicvibes_t *sonic = pcm->private_data;
-       sonic->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __devinit snd_sonicvibes_pcm(sonicvibes_t * sonic, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_sonicvibes_capture_ops);
 
        pcm->private_data = sonic;
-       pcm->private_free = snd_sonicvibes_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, "S3 SonicVibes");
        sonic->pcm = pcm;
 
        .pointer =      snd_trident_playback_pointer,
 };
 
-/*---------------------------------------------------------------------------
-   snd_trident_pcm_free
-  
-   Description: This routine release the 4DWave private data.
-                
-   Paramters:   private_data - pointer to 4DWave device info.
-
-   Returns:     None
-  
-  ---------------------------------------------------------------------------*/
-static void snd_trident_pcm_free(snd_pcm_t *pcm)
-{
-       trident_t *trident = pcm->private_data;
-       trident->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
-static void snd_trident_foldback_pcm_free(snd_pcm_t *pcm)
-{
-       trident_t *trident = pcm->private_data;
-       trident->foldback = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
-static void snd_trident_spdif_pcm_free(snd_pcm_t *pcm)
-{
-       trident_t *trident = pcm->private_data;
-       trident->spdif = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 /*---------------------------------------------------------------------------
    snd_trident_pcm
   
                return err;
 
        pcm->private_data = trident;
-       pcm->private_free = snd_trident_pcm_free;
 
        if (trident->tlb.entries) {
                snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_trident_nx_playback_ops);
                return err;
 
        foldback->private_data = trident;
-       foldback->private_free = snd_trident_foldback_pcm_free;
        if (trident->tlb.entries)
                snd_pcm_set_ops(foldback, SNDRV_PCM_STREAM_CAPTURE, &snd_trident_nx_foldback_ops);
        else
                return err;
 
        spdif->private_data = trident;
-       spdif->private_free = snd_trident_spdif_pcm_free;
        if (trident->device != TRIDENT_DEVICE_ID_SI7018) {
                snd_pcm_set_ops(spdif, SNDRV_PCM_STREAM_PLAYBACK, &snd_trident_spdif_ops);
        } else {
 
        .pointer =              snd_ymfpci_capture_pointer,
 };
 
-static void snd_ymfpci_pcm_free(snd_pcm_t *pcm)
-{
-       ymfpci_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int __devinit snd_ymfpci_pcm(ymfpci_t *chip, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        if ((err = snd_pcm_new(chip->card, "YMFPCI", device, 32, 1, &pcm)) < 0)
                return err;
        pcm->private_data = chip;
-       pcm->private_free = snd_ymfpci_pcm_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_ymfpci_playback_ops);
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_ymfpci_capture_rec_ops);
        .pointer =              snd_ymfpci_capture_pointer,
 };
 
-static void snd_ymfpci_pcm2_free(snd_pcm_t *pcm)
-{
-       ymfpci_t *chip = pcm->private_data;
-       chip->pcm2 = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int __devinit snd_ymfpci_pcm2(ymfpci_t *chip, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        if ((err = snd_pcm_new(chip->card, "YMFPCI - PCM2", device, 0, 1, &pcm)) < 0)
                return err;
        pcm->private_data = chip;
-       pcm->private_free = snd_ymfpci_pcm2_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_ymfpci_capture_ac97_ops);
 
        .pointer =              snd_ymfpci_playback_pointer,
 };
 
-static void snd_ymfpci_pcm_spdif_free(snd_pcm_t *pcm)
-{
-       ymfpci_t *chip = pcm->private_data;
-       chip->pcm_spdif = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int __devinit snd_ymfpci_pcm_spdif(ymfpci_t *chip, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        if ((err = snd_pcm_new(chip->card, "YMFPCI - IEC958", device, 1, 0, &pcm)) < 0)
                return err;
        pcm->private_data = chip;
-       pcm->private_free = snd_ymfpci_pcm_spdif_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_ymfpci_playback_spdif_ops);
 
        .pointer =              snd_ymfpci_playback_pointer,
 };
 
-static void snd_ymfpci_pcm_4ch_free(snd_pcm_t *pcm)
-{
-       ymfpci_t *chip = pcm->private_data;
-       chip->pcm_4ch = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int __devinit snd_ymfpci_pcm_4ch(ymfpci_t *chip, int device, snd_pcm_t ** rpcm)
 {
        snd_pcm_t *pcm;
        if ((err = snd_pcm_new(chip->card, "YMFPCI - Rear", device, 1, 0, &pcm)) < 0)
                return err;
        pcm->private_data = chip;
-       pcm->private_free = snd_ymfpci_pcm_4ch_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_ymfpci_playback_4ch_ops);
 
 
 };
 
 
-/*
- * free callback for pcm
- */
-static void snd_pdacf_pcm_free(snd_pcm_t *pcm)
-{
-       pdacf_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-}
-
 /*
  * snd_pdacf_pcm_new - create and initialize a pcm
  */
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &pdacf_pcm_capture_ops);
 
        pcm->private_data = chip;
-       pcm->private_free = snd_pdacf_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, chip->card->shortname);
        chip->pcm = pcm;
 
        .pointer =      snd_pmac_capture_pointer,
 };
 
-static void pmac_pcm_free(snd_pcm_t *pcm)
-{
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int __init snd_pmac_pcm_new(pmac_t *chip)
 {
        snd_pcm_t *pcm;
                snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_pmac_capture_ops);
 
        pcm->private_data = chip;
-       pcm->private_free = pmac_pcm_free;
        pcm->info_flags = SNDRV_PCM_INFO_JOINT_DUPLEX;
        strcpy(pcm->name, chip->card->shortname);
        chip->pcm = pcm;
 
        .pointer        =       snd_amd7930_capture_pointer,
 };
 
-static void snd_amd7930_pcm_free(snd_pcm_t *pcm)
-{
-       amd7930_t *amd = pcm->private_data;
-
-       amd->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 static int __init snd_amd7930_pcm(amd7930_t *amd)
 {
        snd_pcm_t *pcm;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_amd7930_capture_ops);
 
        pcm->private_data = amd;
-       pcm->private_free = snd_amd7930_pcm_free;
        pcm->info_flags = 0;
        strcpy(pcm->name, amd->card->shortname);
        amd->pcm = pcm;
 
        .pointer        =       snd_cs4231_capture_pointer,
 };
 
-static void snd_cs4231_pcm_free(snd_pcm_t *pcm)
-{
-       cs4231_t *chip = pcm->private_data;
-       chip->pcm = NULL;
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
 int snd_cs4231_pcm(cs4231_t *chip)
 {
        snd_pcm_t *pcm;
        
        /* global setup */
        pcm->private_data = chip;
-       pcm->private_free = snd_cs4231_pcm_free;
        pcm->info_flags = SNDRV_PCM_INFO_JOINT_DUPLEX;
        strcpy(pcm->name, "CS4231");
 
 
 static void snd_usX2Y_pcm_private_free(snd_pcm_t *pcm)
 {
        snd_usX2Y_substream_t **usX2Y_stream = pcm->private_data;
-       if (usX2Y_stream) {
-               snd_pcm_lib_preallocate_free_for_all(pcm);
+       if (usX2Y_stream)
                usX2Y_audio_stream_free(usX2Y_stream);
-       }
 }
 
 static int usX2Y_audio_stream_new(snd_card_t *card, int playback_endpoint, int capture_endpoint)
 
 }
 
 
-static void snd_usX2Y_usbpcm_private_free(snd_pcm_t *pcm)
-{
-       snd_pcm_lib_preallocate_free_for_all(pcm);
-}
-
-
 int usX2Y_hwdep_pcm_new(snd_card_t* card)
 {
        int err;
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_usX2Y_usbpcm_ops);
 
        pcm->private_data = usX2Y(card)->subs;
-       pcm->private_free = snd_usX2Y_usbpcm_private_free;
        pcm->info_flags = 0;
 
        sprintf(pcm->name, NAME_ALLCAPS" hwdep Audio");
                                                     SNDRV_DMA_TYPE_CONTINUOUS,
                                                     snd_dma_continuous_data(GFP_KERNEL),
                                                     64*1024, 128*1024))) {
-               snd_usX2Y_usbpcm_private_free(pcm);
                return err;
        }