static int labpc_pci_auto_attach(struct comedi_device *dev, unsigned long context) { struct pci_dev *pcidev = comedi_to_pci_dev(dev); const struct labpc_boardinfo *board = NULL; struct labpc_private *devpriv; int ret; if (context < ARRAY_SIZE(labpc_pci_boards)) board = &labpc_pci_boards[context]; if (!board) return -ENODEV; dev->board_ptr = board; dev->board_name = board->name; ret = comedi_pci_enable(dev); if (ret) return ret; ret = labpc_pci_mite_init(pcidev); if (ret) return ret; dev->mmio = pci_ioremap_bar(pcidev, 1); if (!dev->mmio) return -ENOMEM; devpriv = comedi_alloc_devpriv(dev, sizeof(*devpriv)); if (!devpriv) return -ENOMEM; return labpc_common_attach(dev, pcidev->irq, IRQF_SHARED); }
static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it) { unsigned long iobase = 0; unsigned int irq = 0; struct pcmcia_device *link; /* allocate and initialize dev->private */ if (alloc_private(dev, sizeof(struct labpc_private)) < 0) return -ENOMEM; /* get base address, irq etc. based on bustype */ switch (thisboard->bustype) { case pcmcia_bustype: link = pcmcia_cur_dev; /* XXX hack */ if (!link) return -EIO; iobase = link->io.BasePort1; irq = link->irq.AssignedIRQ; break; default: printk("bug! couldn't determine board type\n"); return -EINVAL; break; } return labpc_common_attach(dev, iobase, irq, 0); }
static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it) { unsigned long iobase = 0; unsigned int irq = 0; struct pcmcia_device *link; /* allocate and initialize dev->private */ if (alloc_private(dev, sizeof(struct labpc_private)) < 0) return -ENOMEM; /* get base address, irq etc. based on bustype */ switch (thisboard->bustype) { case pcmcia_bustype: link = pcmcia_cur_dev; /* XXX hack */ if (!link) return -EIO; iobase = link->resource[0]->start; irq = link->irq; break; default: ; return -EINVAL; break; } return labpc_common_attach(dev, iobase, irq, 0); }
static int labpc_attach(struct comedi_device *dev, struct comedi_devconfig *it) { unsigned long iobase = 0; unsigned int irq = 0; struct pcmcia_device *link; if (alloc_private(dev, sizeof(struct labpc_private)) < 0) return -ENOMEM; switch (thisboard->bustype) { case pcmcia_bustype: link = pcmcia_cur_dev; if (!link) return -EIO; iobase = link->resource[0]->start; irq = link->irq; break; default: pr_err("bug! couldn't determine board type\n"); return -EINVAL; break; } return labpc_common_attach(dev, iobase, irq, 0); }
static int labpc_pci_auto_attach(struct comedi_device *dev, unsigned long context) { struct pci_dev *pcidev = comedi_to_pci_dev(dev); const struct labpc_boardinfo *board = NULL; struct labpc_private *devpriv; int ret; if (context < ARRAY_SIZE(labpc_pci_boards)) board = &labpc_pci_boards[context]; if (!board) return -ENODEV; dev->board_ptr = board; dev->board_name = board->name; ret = comedi_pci_enable(dev); if (ret) return ret; devpriv = comedi_alloc_devpriv(dev, sizeof(*devpriv)); if (!devpriv) return -ENOMEM; devpriv->mite = mite_alloc(pcidev); if (!devpriv->mite) return -ENOMEM; ret = mite_setup(devpriv->mite); if (ret < 0) return ret; dev->iobase = (unsigned long)devpriv->mite->daq_io_addr; return labpc_common_attach(dev, mite_irq(devpriv->mite), IRQF_SHARED); }
static int labpc_cs_auto_attach(struct comedi_device *dev, unsigned long context) { struct pcmcia_device *link = comedi_to_pcmcia_dev(dev); int ret; /* The ni_labpc driver needs the board_ptr */ dev->board_ptr = &labpc_cs_boards[0]; link->config_flags |= CONF_AUTO_SET_IO | CONF_ENABLE_IRQ | CONF_ENABLE_PULSE_IRQ; ret = comedi_pcmcia_enable(dev, NULL); if (ret) return ret; dev->iobase = link->resource[0]->start; if (!link->irq) return -EINVAL; return labpc_common_attach(dev, link->irq, IRQF_SHARED); }