const struct addi_board *this_board;
struct addi_private *devpriv;
struct comedi_subdevice *s;
- int ret, pages, i, n_subdevices;
+ int ret, n_subdevices;
unsigned int dw_Dummy;
this_board = addi_find_boardinfo(dev, pcidev);
ret = comedi_pci_enable(pcidev, dev->board_name);
if (ret)
return ret;
- if (this_board->i_Dma)
- pci_set_master(pcidev);
if (!this_board->pc_EepromChip ||
!strcmp(this_board->pc_EepromChip, ADDIDATA_9054)) {
addi_eeprom_read_info(dev, pci_resource_start(pcidev, 0));
}
- devpriv->us_UseDma = ADDI_ENABLE;
-
- if (devpriv->s_EeParameters.i_Dma) {
- if (devpriv->us_UseDma == ADDI_ENABLE) {
- /* alloc DMA buffers */
- devpriv->b_DmaDoubleBuffer = 0;
- for (i = 0; i < 2; i++) {
- for (pages = 4; pages >= 0; pages--) {
- devpriv->ul_DmaBufferVirtual[i] =
- (void *) __get_free_pages(GFP_KERNEL, pages);
-
- if (devpriv->ul_DmaBufferVirtual[i])
- break;
- }
- if (devpriv->ul_DmaBufferVirtual[i]) {
- devpriv->ui_DmaBufferPages[i] = pages;
- devpriv->ui_DmaBufferSize[i] =
- PAGE_SIZE * pages;
- devpriv->ui_DmaBufferSamples[i] =
- devpriv->
- ui_DmaBufferSize[i] >> 1;
- devpriv->ul_DmaBufferHw[i] =
- virt_to_bus((void *)devpriv->
- ul_DmaBufferVirtual[i]);
- }
- }
- if (!devpriv->ul_DmaBufferVirtual[0])
- devpriv->us_UseDma = ADDI_DISABLE;
-
- if (devpriv->ul_DmaBufferVirtual[1])
- devpriv->b_DmaDoubleBuffer = 1;
- }
- }
-
n_subdevices = 7;
ret = comedi_alloc_subdevices(dev, n_subdevices);
if (ret)
static void i_ADDI_Detach(struct comedi_device *dev)
{
- const struct addi_board *this_board = comedi_board(dev);
struct pci_dev *pcidev = comedi_to_pci_dev(dev);
struct addi_private *devpriv = dev->private;
i_ADDI_Reset(dev);
if (dev->irq)
free_irq(dev->irq, dev);
- if ((this_board->pc_EepromChip == NULL) ||
- (strcmp(this_board->pc_EepromChip, ADDIDATA_9054) != 0)) {
- if (devpriv->ul_DmaBufferVirtual[0]) {
- free_pages((unsigned long)devpriv->
- ul_DmaBufferVirtual[0],
- devpriv->ui_DmaBufferPages[0]);
- }
- if (devpriv->ul_DmaBufferVirtual[1]) {
- free_pages((unsigned long)devpriv->
- ul_DmaBufferVirtual[1],
- devpriv->ui_DmaBufferPages[1]);
- }
- } else {
+ if (devpriv->dw_AiBase)
iounmap(devpriv->dw_AiBase);
- }
}
if (pcidev) {
if (dev->iobase)