select device based on bus,slot
authorDavid Schleef <ds@schleef.org>
Mon, 8 Jan 2001 22:00:45 +0000 (22:00 +0000)
committerDavid Schleef <ds@schleef.org>
Mon, 8 Jan 2001 22:00:45 +0000 (22:00 +0000)
comedi/drivers/ni_pcidio.c
comedi/drivers/ni_pcimio.c

index 961151e088bac0d8c2d5d1ffb720653794e807d0..ba99d1649f14fdfe3af56322aecdcea9e85209a6 100644 (file)
@@ -221,7 +221,7 @@ typedef struct{
 }nidio96_private;
 #define devpriv ((nidio96_private *)dev->private)
 
-static int nidio_find_device(comedi_device *dev,comedi_devconfig *it);
+static int nidio_find_device(comedi_device *dev,int bus,int slot);
 #if 0
 static int setup_mite(comedi_device *dev);
 #endif
@@ -386,7 +386,7 @@ static int nidio_attach(comedi_device *dev,comedi_devconfig *it)
        if((ret=alloc_private(dev,sizeof(nidio96_private)))<0)
                return ret;
        
-       ret=nidio_find_device(dev,it);
+       ret=nidio_find_device(dev,it->options[0],it->options[1]);
        if(ret<0)return ret;
 
        dev->iobase=mite_setup(devpriv->mite);
@@ -454,13 +454,24 @@ static int nidio_detach(comedi_device *dev)
 }
 
 
-static int nidio_find_device(comedi_device *dev,comedi_devconfig *it)
+static int nidio_find_device(comedi_device *dev,int bus,int slot)
 {
        struct mite_struct *mite;
        int i;
        
        for(mite=mite_devices;mite;mite=mite->next){
                if(mite->used)continue;
+               if(bus || slot){
+#ifdef PCI_SUPPORT_VER1
+                       if(bus!=(mite->pci_bus<<8) ||
+                          slot!=PCI_SLOT(mite->pci_device_fn))
+                               continue;
+#else
+                       if(bus!=(mite->pcidev->bus->number<<8) ||
+                          slot!=PCI_SLOT(mite->pcidev->devfn))
+                               continue;
+#endif
+               }
                for(i=0;i<n_nidio_boards;i++){
                        if(mite_device_id(mite)==nidio_boards[i].dev_id){
                                dev->board=i;
index b36e86010ff792c1f91efa668c478cc6b7bacad8..a4b5d0e0545a1ba9bdfd0d3dca48df4d117da592 100644 (file)
@@ -310,7 +310,7 @@ static ni_board ni_boards[]={
                ao_fifo_depth:  2048,
                caldac:         type4,          /* XXX */
        },
-       {       device_id:      0x0000,         /* unknown */
+       {       device_id:      0x14f0,         /* unknown */
                name:           "pci-6111e",
                n_adchan:       2, 
                adbits:         12,
@@ -415,7 +415,7 @@ typedef struct{
 #include "ni_mio_common.c"
 
 
-static int pcimio_find_device(comedi_device *dev);
+static int pcimio_find_device(comedi_device *dev,int bus,int slot);
 
 
 /* cleans up allocated resources */
@@ -452,7 +452,7 @@ static int pcimio_attach(comedi_device *dev,comedi_devconfig *it)
        ret=alloc_private(dev,sizeof(ni_private));
        if(ret<0)return ret;
 
-       ret=pcimio_find_device(dev);
+       ret=pcimio_find_device(dev,it->options[0],it->options[1]);
        if(ret<0)return ret;
 
        printk(" %s",ni_boards[dev->board].name);
@@ -475,13 +475,25 @@ static int pcimio_attach(comedi_device *dev,comedi_devconfig *it)
 }
 
 
-static int pcimio_find_device(comedi_device *dev)
+static int pcimio_find_device(comedi_device *dev,int bus,int slot)
 {
        struct mite_struct *mite;
        int i;
 
        for(mite=mite_devices;mite;mite=mite->next){
                if(mite->used)continue;
+               if(bus || slot){
+#ifdef PCI_SUPPORT_VER1
+                       if(bus!=mite->pci_bus ||
+                          slot!=PCI_SLOT(mite->pci_device_fn))
+                               continue;
+#else
+                       if(bus!=mite->pcidev->bus->number<<8 ||
+                          slot!=PCI_SLOT(mite->pcidev->devfn))
+                               continue;
+#endif
+               }
+
                for(i=0;i<n_pcimio_boards;i++){
                        if(mite_device_id(mite)==ni_boards[i].device_id){
                                dev->board=i;