staging: comedi: me4000: remove program_regbase from private data
authorH Hartley Sweeten <hartleys@visionengravers.com>
Sat, 8 Sep 2012 00:48:09 +0000 (17:48 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 8 Sep 2012 04:54:42 +0000 (21:54 -0700)
The program_regbase variable in the private data is only used
when the board is first attached. This variable holds the pci
base address used to read/write the xilinx part to upload the
firmware.

Use a local variable in the xilinx_download() function to hold
this address and remove program_regbase from the private data.

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

index 12b3cf8a7ec6d84ae75f5c264d8e55a6f8fe1096..f2c8d040f1f8c867a104072c48702f073bd952d6 100644 (file)
@@ -223,12 +223,17 @@ extern unsigned char *xilinx_firm;
 
 static int xilinx_download(struct comedi_device *dev)
 {
+       struct pci_dev *pcidev = comedi_to_pci_dev(dev);
        struct me4000_info *info = dev->private;
+       unsigned long xilinx_iobase = pci_resource_start(pcidev, 5);
        u32 value = 0;
        wait_queue_head_t queue;
        int idx = 0;
        int size = 0;
 
+       if (!xilinx_iobase)
+               return -ENODEV;
+
        init_waitqueue_head(&queue);
 
        /*
@@ -243,7 +248,7 @@ static int xilinx_download(struct comedi_device *dev)
        outl(value, info->plx_regbase + PLX_ICR);
 
        /* Init Xilinx with CS1 */
-       inb(info->program_regbase + 0xC8);
+       inb(xilinx_iobase + 0xC8);
 
        /* Wait until /INIT pin is set */
        udelay(20);
@@ -269,7 +274,7 @@ static int xilinx_download(struct comedi_device *dev)
                udelay(10);
 
                for (idx = 0; idx < size; idx++) {
-                       outb(xilinx_firm[16 + idx], info->program_regbase);
+                       outb(xilinx_firm[16 + idx], xilinx_iobase);
                        udelay(10);
 
                        /* Check if BUSY flag is low */
@@ -1782,10 +1787,6 @@ static int me4000_attach_pci(struct comedi_device *dev,
        if (!info->timer_regbase)
                return -ENODEV;
 
-       info->program_regbase = pci_resource_start(pcidev, 5);
-       if (!info->program_regbase)
-               return -ENODEV;
-
        dev->irq = pcidev->irq;
 
        result = xilinx_download(dev);
index b6d8e3bdcb21421be31672abe6f7e0dd4e0da37e..7feb574eb7183b6c86010a19a062522f809de4df 100644 (file)
 struct me4000_info {
        unsigned long plx_regbase;      /*  PLX configuration space base address */
        unsigned long timer_regbase;    /*  Base address of the timer circuit */
-       unsigned long program_regbase;  /*  Base address to set the program pin for the xilinx */
 
        unsigned int ao_readback[4];
 };