Skip to content

Commit

Permalink
staging: comedi: addi_apci_1564: absorb apci1564_reset()
Browse files Browse the repository at this point in the history
This is the only reset fuction used by this driver.  We can remove it from
the boardinfo and absorb the code from hwdrv_apci1564.c into the driver.

Signed-off-by: Chase Southwood <chase.southwood@gmail.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Reviewed-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Chase Southwood authored and Greg Kroah-Hartman committed May 23, 2014
1 parent 9f2dbef commit aed3f9d
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 38 deletions.
32 changes: 0 additions & 32 deletions drivers/staging/comedi/drivers/addi-data/hwdrv_apci1564.c
Original file line number Diff line number Diff line change
Expand Up @@ -578,35 +578,3 @@ static void apci1564_interrupt(int irq, void *d)
}
return;
}

static int apci1564_reset(struct comedi_device *dev)
{
struct addi_private *devpriv = dev->private;

ui_Type = 0;

/* Disable the input interrupts and reset status register */
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DI_IRQ_REG);
inl(devpriv->i_IobaseAmcc + APCI1564_DI_INT_STATUS_REG);
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DI_INT_MODE1_REG);
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DI_INT_MODE2_REG);

/* Reset the output channels and disable interrupts */
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DO_REG);
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DO_INT_CTRL_REG);

/* Reset the watchdog registers */
addi_watchdog_reset(devpriv->i_IobaseAmcc + APCI1564_WDOG_REG);

/* Reset the timer registers */
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_TIMER_CTRL_REG);
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_TIMER_RELOAD_REG);

/* Reset the counter registers */
outl(0x0, dev->iobase + APCI1564_TCW_CTRL_REG(APCI1564_COUNTER1));
outl(0x0, dev->iobase + APCI1564_TCW_CTRL_REG(APCI1564_COUNTER2));
outl(0x0, dev->iobase + APCI1564_TCW_CTRL_REG(APCI1564_COUNTER3));
outl(0x0, dev->iobase + APCI1564_TCW_CTRL_REG(APCI1564_COUNTER4));

return 0;
}
36 changes: 30 additions & 6 deletions drivers/staging/comedi/drivers/addi_apci_1564.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ static const struct addi_board apci1564_boardtypes[] = {
.i_DoMaxdata = 0xffffffff,
.i_Timer = 1,
.interrupt = apci1564_interrupt,
.reset = apci1564_reset,
.timer_config = apci1564_timer_config,
.timer_write = apci1564_timer_write,
.timer_read = apci1564_timer_read,
Expand All @@ -32,11 +31,35 @@ static irqreturn_t v_ADDI_Interrupt(int irq, void *d)
return IRQ_RETVAL(1);
}

static int i_ADDI_Reset(struct comedi_device *dev)
static int apci1564_reset(struct comedi_device *dev)
{
const struct addi_board *this_board = comedi_board(dev);
struct addi_private *devpriv = dev->private;

ui_Type = 0;

/* Disable the input interrupts and reset status register */
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DI_IRQ_REG);
inl(devpriv->i_IobaseAmcc + APCI1564_DI_INT_STATUS_REG);
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DI_INT_MODE1_REG);
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DI_INT_MODE2_REG);

/* Reset the output channels and disable interrupts */
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DO_REG);
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_DO_INT_CTRL_REG);

/* Reset the watchdog registers */
addi_watchdog_reset(devpriv->i_IobaseAmcc + APCI1564_WDOG_REG);

/* Reset the timer registers */
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_TIMER_CTRL_REG);
outl(0x0, devpriv->i_IobaseAmcc + APCI1564_TIMER_RELOAD_REG);

/* Reset the counter registers */
outl(0x0, dev->iobase + APCI1564_TCW_CTRL_REG(APCI1564_COUNTER1));
outl(0x0, dev->iobase + APCI1564_TCW_CTRL_REG(APCI1564_COUNTER2));
outl(0x0, dev->iobase + APCI1564_TCW_CTRL_REG(APCI1564_COUNTER3));
outl(0x0, dev->iobase + APCI1564_TCW_CTRL_REG(APCI1564_COUNTER4));

this_board->reset(dev);
return 0;
}

Expand All @@ -62,6 +85,8 @@ static int apci1564_auto_attach(struct comedi_device *dev,
dev->iobase = pci_resource_start(pcidev, 1);
devpriv->i_IobaseAmcc = pci_resource_start(pcidev, 0);

apci1564_reset(dev);

if (pcidev->irq > 0) {
ret = request_irq(pcidev->irq, v_ADDI_Interrupt, IRQF_SHARED,
dev->board_name, dev);
Expand Down Expand Up @@ -114,7 +139,6 @@ static int apci1564_auto_attach(struct comedi_device *dev,
s->type = COMEDI_SUBD_UNUSED;
}

i_ADDI_Reset(dev);
return 0;
}

Expand All @@ -124,7 +148,7 @@ static void apci1564_detach(struct comedi_device *dev)

if (devpriv) {
if (dev->iobase)
i_ADDI_Reset(dev);
apci1564_reset(dev);
if (dev->irq)
free_irq(dev->irq, dev);
}
Expand Down

0 comments on commit aed3f9d

Please sign in to comment.