staging: comedi: addi_apci_1500: use amcc_s5933.h defines
authorH Hartley Sweeten <hsweeten@visionengravers.com>
Wed, 3 Dec 2014 18:25:38 +0000 (11:25 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 10 Jan 2015 00:54:35 +0000 (16:54 -0800)
PCI Bar 0 accesses the AMCC S5933 PCI controller used on this board.
Use the defines from amcc_35933.h and remove the "magic" numbers.

Rename the CamelCase private data member 'i_IobaseAmcc' used to hold
the address for PCI Bar 0.

Remove the unnecessary 'ui_Status' local variable in apci1500_do_bits()
that is used to hold the result of some dummy reads. Rename the
CamelCase local variable 'ui_InterruptStatus' that is used to check the
interrupt from the amcc chip.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/addi-data/hwdrv_apci1500.c
drivers/staging/comedi/drivers/addi_apci_1500.c

index ea6d98f..ac51181 100644 (file)
@@ -1422,12 +1422,11 @@ static int apci1500_do_bits(struct comedi_device *dev,
                            unsigned int *data)
 {
        struct apci1500_private *devpriv = dev->private;
-       unsigned int ui_Status;
        int i_RegValue;
        int i_Constant;
 
        devpriv->tsk_Current = current;
-       outl(0x0, devpriv->i_IobaseAmcc + 0x38);
+       outl(0x0, devpriv->amcc + AMCC_OP_REG_INTCSR);
        if (data[0] == 1) {
                i_Constant = 0xC0;
        } else {
@@ -1481,10 +1480,12 @@ static int apci1500_do_bits(struct comedi_device *dev,
        z8536_write(dev, 0xd0, APCI1500_RW_MASTER_INTERRUPT_CONTROL);
 
        /* Enables the PCI interrupt */
-       outl(0x3000, devpriv->i_IobaseAmcc + 0x38);
-       ui_Status = inl(devpriv->i_IobaseAmcc + 0x10);
-       ui_Status = inl(devpriv->i_IobaseAmcc + 0x38);
-       outl(0x23000, devpriv->i_IobaseAmcc + 0x38);
+       outl(0x2000 | INTCSR_INBOX_FULL_INT,
+            devpriv->amcc + AMCC_OP_REG_INTCSR);
+       inl(devpriv->amcc + AMCC_OP_REG_IMB1);
+       inl(devpriv->amcc + AMCC_OP_REG_INTCSR);
+       outl(INTCSR_INBOX_INTR_STATUS | 0x2000 | INTCSR_INBOX_FULL_INT,
+            devpriv->amcc + AMCC_OP_REG_INTCSR);
 
        return insn->n;
 }
@@ -1494,17 +1495,17 @@ static irqreturn_t apci1500_interrupt(int irq, void *d)
 
        struct comedi_device *dev = d;
        struct apci1500_private *devpriv = dev->private;
-       unsigned int ui_InterruptStatus = 0;
+       unsigned int status;
        int i_RegValue = 0;
 
        /* Clear the interrupt mask */
        i_InterruptMask = 0;
 
        /* Read the board interrupt status */
-       ui_InterruptStatus = inl(devpriv->i_IobaseAmcc + 0x38);
+       status = inl(devpriv->amcc + AMCC_OP_REG_INTCSR);
 
        /* Test if board generated a interrupt */
-       if ((ui_InterruptStatus & 0x800000) == 0x800000) {
+       if (status & INTCSR_INTR_ASSERTED) {
                /* Disable all Interrupt */
                /* Selects the master interrupt control register */
                /* Disables  the main interrupt on the board */
@@ -1547,7 +1548,7 @@ static irqreturn_t apci1500_interrupt(int irq, void *d)
                        if (i_RegValue) {
                                /* Disable the interrupt */
                                /* Selects the command and status register of port B */
-                               outl(0x0, devpriv->i_IobaseAmcc + 0x38);
+                               outl(0x0, devpriv->amcc + AMCC_OP_REG_INTCSR);
 
                                if (i_RegValue & 0x80) {
                                        i_InterruptMask =
index 4b2e3fb..9571d50 100644 (file)
@@ -8,6 +8,11 @@
 #include "amcc_s5933.h"
 
 /*
+ * PCI Bar 0 Register map (devpriv->amcc)
+ * see amcc_s5933.h for register and bit defines
+ */
+
+/*
  * PCI Bar 1 Register map (dev->iobase)
  */
 #define APCI1500_Z8536_PORTC_REG       0x00
@@ -16,7 +21,7 @@
 #define APCI1500_Z8536_CTRL_REG                0x03
 
 struct apci1500_private {
-       int i_IobaseAmcc;
+       unsigned long amcc;
        int i_IobaseAddon;
        unsigned char b_OutputMemoryStatus;
        struct task_struct *tsk_Current;
@@ -41,7 +46,7 @@ static int apci1500_auto_attach(struct comedi_device *dev,
                return ret;
 
        dev->iobase = pci_resource_start(pcidev, 1);
-       devpriv->i_IobaseAmcc = pci_resource_start(pcidev, 0);
+       devpriv->amcc = pci_resource_start(pcidev, 0);
        devpriv->i_IobaseAddon = pci_resource_start(pcidev, 2);
 
        if (pcidev->irq > 0) {