* Configuration macros
  */
 
-#define MAX_PCM_DEVICES                1
-#define MAX_PCM_SUBSTREAMS     1
-
 /* defaults */
 #define MAX_BUFFER_SIZE                (256*1024)
 #define USE_FORMATS            SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE | SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_U16_LE | SNDRV_PCM_FMTBIT_U16_BE
                                break;
                }
 
+               break;
           case PCI_DEVICE_ID_PHILIPS_SAA7133:
           case PCI_DEVICE_ID_PHILIPS_SAA7135:
                xbarin = 0x03; // adc
                  saa_dsp_writel(dev, SAA7133_DIGITAL_INPUT_XBAR1, 0);
                  saa_writel(SAA7133_ANALOG_IO_SELECT, 0);
                }
+               break;
          }
        }
 
  *
  */
 
-int alsa_card_saa7134_create(struct saa7134_dev *saadev)
+int alsa_card_saa7134_create(struct saa7134_dev *saadev, unsigned int devicenum)
 {
        static int dev;
        snd_card_t *card;
        if (!enable[dev])
                return -ENODEV;
 
-       card = snd_card_new(index[dev], id[dev], THIS_MODULE,
-                           0);
+       if (devicenum) {
+               card = snd_card_new(devicenum, id[dev], THIS_MODULE, 0);
+       } else {
+               card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
+       }
        if (card == NULL)
                return -ENOMEM;
 
 
        strcpy(card->shortname, "SAA7134");
         sprintf(card->longname, "%s at 0x%lx irq %d",
-                card->shortname, chip->iobase, chip->irq);
+                chip->saadev->name, chip->iobase, chip->irq);
 
        if ((err = snd_card_register(card)) == 0) {
                snd_saa7134_cards[dev] = card;
 
                        printk(KERN_INFO "%s: registered device mixer%d\n",
                               dev->name,dev->oss.minor_mixer >> 4);
                } else if (alsa) {
-                       alsa_card_saa7134_create(dev);
+                       alsa_card_saa7134_create(dev,dsp_nr[dev->nr]);
                        printk(KERN_INFO "%s: registered ALSA devices\n",
                               dev->name);
                }
 
 void saa7134_input_fini(struct saa7134_dev *dev);
 void saa7134_input_irq(struct saa7134_dev *dev);
 
-int alsa_card_saa7134_create(struct saa7134_dev *saadev);
+int alsa_card_saa7134_create(struct saa7134_dev *saadev, unsigned int devnum);
 void alsa_card_saa7134_exit(void);
 void saa7134_irq_alsa_done(struct saa7134_dev *dev, unsigned long status);