#define NI_SIZE 0x20
-#define MAX_N_CALDACS 32
-
static const struct ni_board_struct ni_boards[] = {
{.device_id = 44,
.isapnp_id = 0x0000, /* XXX unknown */
#define NI_E_IRQ_FLAGS 0
-struct ni_private {
- struct pnp_dev *isapnp_dev;
- NI_PRIVATE_COMMON
+/* How we access registers */
-};
+static uint8_t ni_atmio_inb(struct comedi_device *dev, int reg)
+{
+ return inb(dev->iobase + reg);
+}
-/* How we access registers */
+static uint16_t ni_atmio_inw(struct comedi_device *dev, int reg)
+{
+ return inw(dev->iobase + reg);
+}
+
+static uint32_t ni_atmio_inl(struct comedi_device *dev, int reg)
+{
+ return inl(dev->iobase + reg);
+}
-#define ni_writel(a, b) (outl((a), (b)+dev->iobase))
-#define ni_readl(a) (inl((a)+dev->iobase))
-#define ni_writew(a, b) (outw((a), (b)+dev->iobase))
-#define ni_readw(a) (inw((a)+dev->iobase))
-#define ni_writeb(a, b) (outb((a), (b)+dev->iobase))
-#define ni_readb(a) (inb((a)+dev->iobase))
+static void ni_atmio_outb(struct comedi_device *dev, uint8_t val, int reg)
+{
+ outb(val, dev->iobase + reg);
+}
+
+static void ni_atmio_outw(struct comedi_device *dev, uint16_t val, int reg)
+{
+ outw(val, dev->iobase + reg);
+}
+
+static void ni_atmio_outl(struct comedi_device *dev, uint32_t val, int reg)
+{
+ outl(val, dev->iobase + reg);
+}
/* How we access windowed registers */
spin_lock_irqsave(&devpriv->window_lock, flags);
if ((addr) < 8) {
- ni_writew(data, addr * 2);
+ devpriv->writew(dev, data, addr * 2);
} else {
- ni_writew(addr, Window_Address);
- ni_writew(data, Window_Data);
+ devpriv->writew(dev, addr, Window_Address);
+ devpriv->writew(dev, data, Window_Data);
}
spin_unlock_irqrestore(&devpriv->window_lock, flags);
}
spin_lock_irqsave(&devpriv->window_lock, flags);
if (addr < 8) {
- ret = ni_readw(addr * 2);
+ ret = devpriv->readw(dev, addr * 2);
} else {
- ni_writew(addr, Window_Address);
- ret = ni_readw(Window_Data);
+ devpriv->writew(dev, addr, Window_Address);
+ ret = devpriv->readw(dev, Window_Data);
}
spin_unlock_irqrestore(&devpriv->window_lock, flags);
return ret;
devpriv = dev->private;
- devpriv->stc_writew = &ni_atmio_win_out;
- devpriv->stc_readw = &ni_atmio_win_in;
- devpriv->stc_writel = &win_out2;
- devpriv->stc_readl = &win_in2;
+ devpriv->readb = ni_atmio_inb;
+ devpriv->readw = ni_atmio_inw;
+ devpriv->readl = ni_atmio_inl;
+ devpriv->writeb = ni_atmio_outb;
+ devpriv->writew = ni_atmio_outw;
+ devpriv->writel = ni_atmio_outl;
+
+ devpriv->stc_writew = ni_atmio_win_out;
+ devpriv->stc_readw = ni_atmio_win_in;
+ devpriv->stc_writel = win_out2;
+ devpriv->stc_readl = win_in2;
iobase = it->options[0];
irq = it->options[1];
iobase = pnp_port_start(isapnp_dev, 0);
irq = pnp_irq(isapnp_dev, 0);
- devpriv->isapnp_dev = isapnp_dev;
+ comedi_set_hw_dev(dev, &isapnp_dev->dev);
}
ret = comedi_request_region(dev, iobase, NI_SIZE);
static void ni_atmio_detach(struct comedi_device *dev)
{
- struct ni_private *devpriv = dev->private;
+ struct pnp_dev *isapnp_dev;
mio_common_detach(dev);
comedi_legacy_detach(dev);
- if (devpriv->isapnp_dev)
- pnp_device_detach(devpriv->isapnp_dev);
+
+ isapnp_dev = dev->hw_dev ? to_pnp_dev(dev->hw_dev) : NULL;
+ if (isapnp_dev)
+ pnp_device_detach(isapnp_dev);
}
static struct comedi_driver ni_atmio_driver = {