]> rtime.felk.cvut.cz Git - mf6xx.git/commitdiff
Fixed all errors. Tested. Works. DIN + DOUT only.
authorRostislav Lisovy <lisovy@gmail.com>
Mon, 18 Apr 2011 21:45:31 +0000 (23:45 +0200)
committerRostislav Lisovy <lisovy@gmail.com>
Mon, 18 Apr 2011 21:45:31 +0000 (23:45 +0200)
src/comedi/mf614_simple_driver/kernel/mf614.c

index 7f571a2eb81816ab324c8061cd98668c680d67e4..73568dd23b6e6b05df07e0acf1c0c99d6cd5991c 100644 (file)
@@ -39,6 +39,8 @@ static const mf614_board mf614_boards[] = {
        }
 };
 
+static int mf614_attach(struct comedi_device *dev, struct comedi_devconfig *it);
+static int mf614_detach(struct comedi_device *dev);
 static struct comedi_driver driver_mf614 = {
        driver_name:    "mf614",
        module:         THIS_MODULE,
@@ -58,12 +60,17 @@ typedef struct {
        //lsampl_t ao_readback[8];
 } mf614_private;
 
-static int mf614_attach(struct comedi_device *dev, struct comedi_devconfig *it);
-static int mf614_detach(struct comedi_device *dev);
 
 /*
 ==============================================================================
 */
+
+
+static int mf614_do_insn_bits(struct comedi_device *dev, struct comedi_subdevice *s, 
+                             struct comedi_insn *insn, unsigned int *data);
+static int mf614_di_insn_bits(struct comedi_device *dev, struct comedi_subdevice *s, 
+                             struct comedi_insn *insn, unsigned int *data);
+
 #define devpriv                ((mf614_private *) dev->private)
 #define thisboard              ((mf614_board *) dev->board_ptr)
 static int mf614_attach(struct comedi_device *dev, struct comedi_devconfig *it)
@@ -71,7 +78,7 @@ static int mf614_attach(struct comedi_device *dev, struct comedi_devconfig *it)
        struct comedi_subdevice *s;
        struct pci_dev* pcidev;
        //unsigned int channel; 
-       unsigned int status;
+       //unsigned int status;
 
        printk("comedi%d: mf614: ", dev->minor);
 
@@ -91,7 +98,7 @@ static int mf614_attach(struct comedi_device *dev, struct comedi_devconfig *it)
                        continue;
                }
 
-               if(mf614_boards.device_id != pcidev->device) {
+               if(mf614_boards[0].device_id != pcidev->device) {
                        continue;
                }
 
@@ -115,7 +122,7 @@ static int mf614_attach(struct comedi_device *dev, struct comedi_devconfig *it)
 
 found:
        printk("Found %s on bus %i, slot %i\n",  
-               mf614_boards.name, pcidev->bus->number, PCI_SLOT(pcidev->devfn));
+               mf614_boards[0].name, pcidev->bus->number, PCI_SLOT(pcidev->devfn));
 
        /* comedi_pci_enable(struct pci_dev *pdev, const char *res_name) */
        if(pci_enable_device(devpriv->pci_dev)) {
@@ -172,7 +179,7 @@ out_unmap:
 out_release:
        pci_release_regions(devpriv->pci_dev);
 out_disable:
-       pci_disable_device(devpriv->pcidev);
+       pci_disable_device(devpriv->pci_dev);
 out_exit:
        return -ENODEV;
 }
@@ -195,7 +202,6 @@ static int mf614_detach(struct comedi_device *dev)
        return 0;
 }
 
-
 /* Write digital data */
 static int mf614_do_insn_bits(struct comedi_device *dev, 
                              struct comedi_subdevice *s, 
@@ -209,13 +215,13 @@ static int mf614_do_insn_bits(struct comedi_device *dev,
                s->state &= ~data[0];
                s->state |= data[0] & data[1];
 
-               iowrite8(s->state, BAR0_io + DOUT_reg);
+               iowrite8(s->state, devpriv->BAR0_io + DOUT_reg);
        }
        return 2;
 }
 
 /* Read digital data */
-static int mf624_di_insn_bits(struct comedi_device *dev, 
+static int mf614_di_insn_bits(struct comedi_device *dev, 
                              struct comedi_subdevice *s, 
                              struct comedi_insn *insn, unsigned int *data)
 {