summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/staging/comedi/drivers/ni_atmio.c53
-rw-r--r--drivers/staging/comedi/drivers/ni_mio_common.c30
-rw-r--r--drivers/staging/comedi/drivers/ni_mio_cs.c53
-rw-r--r--drivers/staging/comedi/drivers/ni_pcimio.c108
-rw-r--r--drivers/staging/comedi/drivers/ni_stc.h7
5 files changed, 63 insertions, 188 deletions
diff --git a/drivers/staging/comedi/drivers/ni_atmio.c b/drivers/staging/comedi/drivers/ni_atmio.c
index ae9ace9..f0fb4a7 100644
--- a/drivers/staging/comedi/drivers/ni_atmio.c
+++ b/drivers/staging/comedi/drivers/ni_atmio.c
@@ -270,37 +270,7 @@ static const int ni_irqpin[] = {
#define NI_E_IRQ_FLAGS 0
-/* How we access registers */
-
-static uint8_t ni_atmio_inb(struct comedi_device *dev, int reg)
-{
- return inb(dev->iobase + reg);
-}
-
-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);
-}
-
-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);
-}
+#include "ni_mio_common.c"
/* How we access windowed registers */
@@ -315,10 +285,10 @@ static void ni_atmio_win_out(struct comedi_device *dev, uint16_t data, int addr)
spin_lock_irqsave(&devpriv->window_lock, flags);
if ((addr) < 8) {
- devpriv->writew(dev, data, addr * 2);
+ ni_writew(dev, data, addr * 2);
} else {
- devpriv->writew(dev, addr, Window_Address);
- devpriv->writew(dev, data, Window_Data);
+ ni_writew(dev, addr, Window_Address);
+ ni_writew(dev, data, Window_Data);
}
spin_unlock_irqrestore(&devpriv->window_lock, flags);
}
@@ -331,10 +301,10 @@ static uint16_t ni_atmio_win_in(struct comedi_device *dev, int addr)
spin_lock_irqsave(&devpriv->window_lock, flags);
if (addr < 8) {
- ret = devpriv->readw(dev, addr * 2);
+ ret = ni_readw(dev, addr * 2);
} else {
- devpriv->writew(dev, addr, Window_Address);
- ret = devpriv->readw(dev, Window_Data);
+ ni_writew(dev, addr, Window_Address);
+ ret = ni_readw(dev, Window_Data);
}
spin_unlock_irqrestore(&devpriv->window_lock, flags);
@@ -352,8 +322,6 @@ static struct pnp_device_id device_ids[] = {
MODULE_DEVICE_TABLE(pnp, device_ids);
-#include "ni_mio_common.c"
-
static int ni_isapnp_find_board(struct pnp_dev **dev)
{
struct pnp_dev *isapnp_dev = NULL;
@@ -428,13 +396,6 @@ static int ni_atmio_attach(struct comedi_device *dev,
return ret;
devpriv = dev->private;
- 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;
diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c b/drivers/staging/comedi/drivers/ni_mio_common.c
index 040afba..5db40ea 100644
--- a/drivers/staging/comedi/drivers/ni_mio_common.c
+++ b/drivers/staging/comedi/drivers/ni_mio_common.c
@@ -250,42 +250,60 @@ static void ni_writel(struct comedi_device *dev, uint32_t data, int reg)
{
struct ni_private *devpriv = dev->private;
- devpriv->writel(dev, data, reg);
+ if (devpriv->mite)
+ writel(data, devpriv->mite->daq_io_addr + reg);
+ else
+ outl(data, dev->iobase + reg);
}
static void ni_writew(struct comedi_device *dev, uint16_t data, int reg)
{
struct ni_private *devpriv = dev->private;
- devpriv->writew(dev, data, reg);
+ if (devpriv->mite)
+ writew(data, devpriv->mite->daq_io_addr + reg);
+ else
+ outw(data, dev->iobase + reg);
}
static void ni_writeb(struct comedi_device *dev, uint8_t data, int reg)
{
struct ni_private *devpriv = dev->private;
- devpriv->writeb(dev, data, reg);
+ if (devpriv->mite)
+ writeb(data, devpriv->mite->daq_io_addr + reg);
+ else
+ outb(data, dev->iobase + reg);
}
static uint32_t ni_readl(struct comedi_device *dev, int reg)
{
struct ni_private *devpriv = dev->private;
- return devpriv->readl(dev, reg);
+ if (devpriv->mite)
+ return readl(devpriv->mite->daq_io_addr + reg);
+ else
+ return inl(dev->iobase + reg);
}
static uint16_t ni_readw(struct comedi_device *dev, int reg)
{
struct ni_private *devpriv = dev->private;
- return devpriv->readw(dev, reg);
+ if (devpriv->mite)
+ return readw(devpriv->mite->daq_io_addr + reg);
+ else
+ return inw(dev->iobase + reg);
}
static uint8_t ni_readb(struct comedi_device *dev, int reg)
{
struct ni_private *devpriv = dev->private;
- return devpriv->readb(dev, reg);
+ if (devpriv->mite)
+ return readb(devpriv->mite->daq_io_addr + reg);
+ else
+ return inb(dev->iobase + reg);
}
static void ni_stc_writel(struct comedi_device *dev, uint32_t data, int reg)
diff --git a/drivers/staging/comedi/drivers/ni_mio_cs.c b/drivers/staging/comedi/drivers/ni_mio_cs.c
index d61baff..775b9d7 100644
--- a/drivers/staging/comedi/drivers/ni_mio_cs.c
+++ b/drivers/staging/comedi/drivers/ni_mio_cs.c
@@ -141,37 +141,7 @@ static const struct ni_board_struct ni_boards[] = {
#define IRQ_POLARITY 1
-/* How we access registers */
-
-static uint8_t mio_cs_inb(struct comedi_device *dev, int reg)
-{
- return inb(dev->iobase + reg);
-}
-
-static uint16_t mio_cs_inw(struct comedi_device *dev, int reg)
-{
- return inw(dev->iobase + reg);
-}
-
-static uint32_t mio_cs_inl(struct comedi_device *dev, int reg)
-{
- return inl(dev->iobase + reg);
-}
-
-static void mio_cs_outb(struct comedi_device *dev, uint8_t val, int reg)
-{
- outb(val, dev->iobase + reg);
-}
-
-static void mio_cs_outw(struct comedi_device *dev, uint16_t val, int reg)
-{
- outw(val, dev->iobase + reg);
-}
-
-static void mio_cs_outl(struct comedi_device *dev, uint32_t val, int reg)
-{
- outl(val, dev->iobase + reg);
-}
+#include "ni_mio_common.c"
/* How we access windowed registers */
@@ -186,10 +156,10 @@ static void mio_cs_win_out(struct comedi_device *dev, uint16_t data, int addr)
spin_lock_irqsave(&devpriv->window_lock, flags);
if (addr < 8) {
- devpriv->writew(dev, data, addr * 2);
+ ni_writew(dev, data, addr * 2);
} else {
- devpriv->writew(dev, addr, Window_Address);
- devpriv->writew(dev, data, Window_Data);
+ ni_writew(dev, addr, Window_Address);
+ ni_writew(dev, data, Window_Data);
}
spin_unlock_irqrestore(&devpriv->window_lock, flags);
}
@@ -202,18 +172,16 @@ static uint16_t mio_cs_win_in(struct comedi_device *dev, int addr)
spin_lock_irqsave(&devpriv->window_lock, flags);
if (addr < 8) {
- ret = devpriv->readw(dev, addr * 2);
+ ret = ni_readw(dev, addr * 2);
} else {
- devpriv->writew(dev, addr, Window_Address);
- ret = devpriv->readw(dev, Window_Data);
+ ni_writew(dev, addr, Window_Address);
+ ret = ni_readw(dev, Window_Data);
}
spin_unlock_irqrestore(&devpriv->window_lock, flags);
return ret;
}
-#include "ni_mio_common.c"
-
static const void *ni_getboardtype(struct comedi_device *dev,
struct pcmcia_device *link)
{
@@ -276,13 +244,6 @@ static int mio_cs_auto_attach(struct comedi_device *dev,
devpriv = dev->private;
- devpriv->readb = mio_cs_inb;
- devpriv->readw = mio_cs_inw;
- devpriv->readl = mio_cs_inl;
- devpriv->writeb = mio_cs_outb;
- devpriv->writew = mio_cs_outw;
- devpriv->writel = mio_cs_outl;
-
devpriv->stc_writew = mio_cs_win_out;
devpriv->stc_readw = mio_cs_win_in;
devpriv->stc_writel = win_out2;
diff --git a/drivers/staging/comedi/drivers/ni_pcimio.c b/drivers/staging/comedi/drivers/ni_pcimio.c
index f152b38..200a805 100644
--- a/drivers/staging/comedi/drivers/ni_pcimio.c
+++ b/drivers/staging/comedi/drivers/ni_pcimio.c
@@ -1042,49 +1042,12 @@ static const struct ni_board_struct ni_boards[] = {
},
};
-/* How we access registers */
-
-static uint8_t pcimio_readb(struct comedi_device *dev, int reg)
-{
- struct ni_private *devpriv = dev->private;
-
- return readb(devpriv->mite->daq_io_addr + reg);
-}
-
-static uint16_t pcimio_readw(struct comedi_device *dev, int reg)
-{
- struct ni_private *devpriv = dev->private;
-
- return readw(devpriv->mite->daq_io_addr + reg);
-}
-
-static uint32_t pcimio_readl(struct comedi_device *dev, int reg)
-{
- struct ni_private *devpriv = dev->private;
-
- return readl(devpriv->mite->daq_io_addr + reg);
-}
-
-static void pcimio_writeb(struct comedi_device *dev, uint8_t val, int reg)
-{
- struct ni_private *devpriv = dev->private;
-
- writeb(val, devpriv->mite->daq_io_addr + reg);
-}
-
-static void pcimio_writew(struct comedi_device *dev, uint16_t val, int reg)
-{
- struct ni_private *devpriv = dev->private;
-
- writew(val, devpriv->mite->daq_io_addr + reg);
-}
+#define interrupt_pin(a) 0
+#define IRQ_POLARITY 1
-static void pcimio_writel(struct comedi_device *dev, uint32_t val, int reg)
-{
- struct ni_private *devpriv = dev->private;
+#define NI_E_IRQ_FLAGS IRQF_SHARED
- writel(val, devpriv->mite->daq_io_addr + reg);
-}
+#include "ni_mio_common.c"
/* How we access STC registers */
@@ -1102,8 +1065,8 @@ static void e_series_win_out(struct comedi_device *dev, uint16_t data, int reg)
unsigned long flags;
spin_lock_irqsave(&devpriv->window_lock, flags);
- devpriv->writew(dev, reg, Window_Address);
- devpriv->writew(dev, data, Window_Data);
+ ni_writew(dev, reg, Window_Address);
+ ni_writew(dev, data, Window_Data);
spin_unlock_irqrestore(&devpriv->window_lock, flags);
}
@@ -1114,8 +1077,8 @@ static uint16_t e_series_win_in(struct comedi_device *dev, int reg)
uint16_t ret;
spin_lock_irqsave(&devpriv->window_lock, flags);
- devpriv->writew(dev, reg, Window_Address);
- ret = devpriv->readw(dev, Window_Data);
+ ni_writew(dev, reg, Window_Address);
+ ret = ni_readw(dev, Window_Data);
spin_unlock_irqrestore(&devpriv->window_lock, flags);
return ret;
@@ -1124,7 +1087,6 @@ static uint16_t e_series_win_in(struct comedi_device *dev, int reg)
static void m_series_stc_writew(struct comedi_device *dev, uint16_t data,
int reg)
{
- struct ni_private *devpriv = dev->private;
unsigned offset;
switch (reg) {
@@ -1154,12 +1116,12 @@ static void m_series_stc_writew(struct comedi_device *dev, uint16_t data,
break;
case AI_SI2_Load_A_Register:
/* this is actually a 32 bit register on m series boards */
- devpriv->writel(dev, data, M_Offset_AI_SI2_Load_A);
+ ni_writel(dev, data, M_Offset_AI_SI2_Load_A);
return;
break;
case AI_SI2_Load_B_Register:
/* this is actually a 32 bit register on m series boards */
- devpriv->writel(dev, data, M_Offset_AI_SI2_Load_B);
+ ni_writel(dev, data, M_Offset_AI_SI2_Load_B);
return;
break;
case AI_START_STOP_Select_Register:
@@ -1277,12 +1239,11 @@ static void m_series_stc_writew(struct comedi_device *dev, uint16_t data,
return;
break;
}
- devpriv->writew(dev, data, offset);
+ ni_writew(dev, data, offset);
}
static uint16_t m_series_stc_readw(struct comedi_device *dev, int reg)
{
- struct ni_private *devpriv = dev->private;
unsigned offset;
switch (reg) {
@@ -1296,7 +1257,7 @@ static uint16_t m_series_stc_readw(struct comedi_device *dev, int reg)
offset = M_Offset_AO_Status_2;
break;
case DIO_Serial_Input_Register:
- return devpriv->readb(dev, M_Offset_SCXI_Serial_Data_In);
+ return ni_readb(dev, M_Offset_SCXI_Serial_Data_In);
break;
case Joint_Status_1_Register:
offset = M_Offset_Joint_Status_1;
@@ -1315,13 +1276,12 @@ static uint16_t m_series_stc_readw(struct comedi_device *dev, int reg)
return 0;
break;
}
- return devpriv->readw(dev, offset);
+ return ni_readw(dev, offset);
}
static void m_series_stc_writel(struct comedi_device *dev, uint32_t data,
int reg)
{
- struct ni_private *devpriv = dev->private;
unsigned offset;
switch (reg) {
@@ -1360,12 +1320,11 @@ static void m_series_stc_writel(struct comedi_device *dev, uint32_t data,
return;
break;
}
- devpriv->writel(dev, data, offset);
+ ni_writel(dev, data, offset);
}
static uint32_t m_series_stc_readl(struct comedi_device *dev, int reg)
{
- struct ni_private *devpriv = dev->private;
unsigned offset;
switch (reg) {
@@ -1389,16 +1348,9 @@ static uint32_t m_series_stc_readl(struct comedi_device *dev, int reg)
return 0;
break;
}
- return devpriv->readl(dev, offset);
+ return ni_readl(dev, offset);
}
-#define interrupt_pin(a) 0
-#define IRQ_POLARITY 1
-
-#define NI_E_IRQ_FLAGS IRQF_SHARED
-
-#include "ni_mio_common.c"
-
static int pcimio_ai_change(struct comedi_device *dev,
struct comedi_subdevice *s, unsigned long new_size);
static int pcimio_ao_change(struct comedi_device *dev,
@@ -1438,14 +1390,12 @@ static void m_series_init_eeprom_buffer(struct comedi_device *dev)
BUG_ON(serial_number_eeprom_length > sizeof(devpriv->serial_number));
for (i = 0; i < serial_number_eeprom_length; ++i) {
char *byte_ptr = (char *)&devpriv->serial_number + i;
- *byte_ptr = devpriv->readb(dev,
- serial_number_eeprom_offset + i);
+ *byte_ptr = ni_readb(dev, serial_number_eeprom_offset + i);
}
devpriv->serial_number = be32_to_cpu(devpriv->serial_number);
for (i = 0; i < M_SERIES_EEPROM_SIZE; ++i)
- devpriv->eeprom_buffer[i] = devpriv->readb(dev,
- Start_Cal_EEPROM + i);
+ devpriv->eeprom_buffer[i] = ni_readb(dev, Start_Cal_EEPROM + i);
writel(old_iodwbsr1_bits, devpriv->mite->mite_io_addr + MITE_IODWBSR_1);
writel(old_iodwbsr_bits, devpriv->mite->mite_io_addr + MITE_IODWBSR);
@@ -1464,22 +1414,21 @@ static void init_6143(struct comedi_device *dev)
/* Initialise 6143 AI specific bits */
/* Set G0,G1 DMA mode to E series version */
- devpriv->writeb(dev, 0x00, Magic_6143);
+ ni_writeb(dev, 0x00, Magic_6143);
/* Set EOCMode, ADCMode and pipelinedelay */
- devpriv->writeb(dev, 0x80, PipelineDelay_6143);
+ ni_writeb(dev, 0x80, PipelineDelay_6143);
/* Set EOC Delay */
- devpriv->writeb(dev, 0x00, EOC_Set_6143);
+ ni_writeb(dev, 0x00, EOC_Set_6143);
/* Set the FIFO half full level */
- devpriv->writel(dev, board->ai_fifo_depth / 2, AIFIFO_Flag_6143);
+ ni_writel(dev, board->ai_fifo_depth / 2, AIFIFO_Flag_6143);
/* Strobe Relay disable bit */
devpriv->ai_calib_source_enabled = 0;
- devpriv->writew(dev, devpriv->ai_calib_source |
- Calibration_Channel_6143_RelayOff,
- Calibration_Channel_6143);
- devpriv->writew(dev, devpriv->ai_calib_source,
- Calibration_Channel_6143);
+ ni_writew(dev, devpriv->ai_calib_source |
+ Calibration_Channel_6143_RelayOff,
+ Calibration_Channel_6143);
+ ni_writew(dev, devpriv->ai_calib_source, Calibration_Channel_6143);
}
static void pcimio_detach(struct comedi_device *dev)
@@ -1532,13 +1481,6 @@ static int pcimio_auto_attach(struct comedi_device *dev,
if (!devpriv->mite)
return -ENOMEM;
- devpriv->readb = pcimio_readb;
- devpriv->readw = pcimio_readw;
- devpriv->readl = pcimio_readl;
- devpriv->writeb = pcimio_writeb;
- devpriv->writew = pcimio_writew;
- devpriv->writel = pcimio_writel;
-
if (board->reg_type & ni_reg_m_series_mask) {
devpriv->is_m_series = 1;
diff --git a/drivers/staging/comedi/drivers/ni_stc.h b/drivers/staging/comedi/drivers/ni_stc.h
index 38ce3ce..82d4e26 100644
--- a/drivers/staging/comedi/drivers/ni_stc.h
+++ b/drivers/staging/comedi/drivers/ni_stc.h
@@ -1421,13 +1421,6 @@ struct ni_board_struct {
#define NUM_GPCT 2
struct ni_private {
- uint8_t (*readb)(struct comedi_device *, int reg);
- uint16_t (*readw)(struct comedi_device *, int reg);
- uint32_t (*readl)(struct comedi_device *, int reg);
- void (*writeb)(struct comedi_device *, uint8_t value, int reg);
- void (*writew)(struct comedi_device *, uint16_t value, int reg);
- void (*writel)(struct comedi_device *, uint32_t value, int reg);
-
uint16_t (*stc_readw)(struct comedi_device *, int reg);
uint32_t (*stc_readl)(struct comedi_device *, int reg);
void (*stc_writew)(struct comedi_device *, uint16_t value, int reg);