int mpu_irq,
                      int dma8,
                      unsigned short hardware);
-int snd_es1688_pcm(struct snd_card *card, struct snd_es1688 *chip, int device,
-                  struct snd_pcm **rpcm);
+int snd_es1688_pcm(struct snd_card *card, struct snd_es1688 *chip, int device);
 int snd_es1688_mixer(struct snd_card *card, struct snd_es1688 *chip);
 int snd_es1688_reset(struct snd_es1688 *chip);
 
 
 {
        struct snd_es1688 *chip = card->private_data;
        struct snd_opl3 *opl3;
-       struct snd_pcm *pcm;
        int error;
 
-       error = snd_es1688_pcm(card, chip, 0, &pcm);
+       error = snd_es1688_pcm(card, chip, 0);
        if (error < 0)
                return error;
 
                return error;
 
        strlcpy(card->driver, "ES1688", sizeof(card->driver));
-       strlcpy(card->shortname, pcm->name, sizeof(card->shortname));
+       strlcpy(card->shortname, chip->pcm->name, sizeof(card->shortname));
        snprintf(card->longname, sizeof(card->longname),
-               "%s at 0x%lx, irq %i, dma %i", pcm->name, chip->port,
+               "%s at 0x%lx, irq %i, dma %i", chip->pcm->name, chip->port,
                 chip->irq, chip->dma8);
 
        if (fm_port[n] == SNDRV_AUTO_PORT)
 
        .pointer =              snd_es1688_capture_pointer,
 };
 
-int snd_es1688_pcm(struct snd_card *card, struct snd_es1688 *chip,
-                  int device, struct snd_pcm **rpcm)
+int snd_es1688_pcm(struct snd_card *card, struct snd_es1688 *chip, int device)
 {
        struct snd_pcm *pcm;
        int err;
        snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
                                              snd_dma_isa_data(),
                                              64*1024, 64*1024);
-
-       if (rpcm)
-               *rpcm = pcm;
        return 0;
 }
 
 
        }
        gus->codec_flag = 1;
 
-       error = snd_es1688_pcm(card, es1688, 0, NULL);
+       error = snd_es1688_pcm(card, es1688, 0);
        if (error < 0)
                goto out;