Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 325419
b: refs/heads/master
c: 63ad597
h: refs/heads/master
i:
  325417: acbd20e
  325415: 5ba4786
v: v3
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Sep 19, 2012
1 parent 8f16a6f commit 3957f8a
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ad375f775836d481acd663e64eeab08c1a948974
refs/heads/master: 63ad597e2d1da6472f381f9709bc87eecbe30328
41 changes: 25 additions & 16 deletions trunk/drivers/staging/comedi/drivers/daqboard2000.c
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,12 @@ Configuration options:

#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/firmware.h>

#include "8255.h"

#define DAQBOARD2000_FIRMWARE "daqboard2000_firmware.bin"

#define PCI_VENDOR_ID_IOTECH 0x1616

#define DAQBOARD2000_SUBSYSTEM_IDS2 0x0002 /* Daqboard/2000 - 2 Dacs */
Expand Down Expand Up @@ -547,14 +550,14 @@ static int daqboard2000_writeCPLD(struct comedi_device *dev, int data)
}

static int initialize_daqboard2000(struct comedi_device *dev,
unsigned char *cpld_array, int len)
const u8 *cpld_array, size_t len)
{
struct daqboard2000_private *devpriv = dev->private;
int result = -EIO;
/* Read the serial EEPROM control register */
int secr;
int retry;
int i;
size_t i;

/* Check to make sure the serial eeprom is present on the board */
secr = readl(devpriv->plx + 0x6c);
Expand Down Expand Up @@ -604,6 +607,22 @@ static int initialize_daqboard2000(struct comedi_device *dev,
return result;
}

static int daqboard2000_upload_firmware(struct comedi_device *dev)
{
struct pci_dev *pcidev = comedi_to_pci_dev(dev);
const struct firmware *fw;
int ret;

ret = request_firmware(&fw, DAQBOARD2000_FIRMWARE, &pcidev->dev);
if (ret)
return ret;

ret = initialize_daqboard2000(dev, fw->data, fw->size);
release_firmware(fw);

return ret;
}

static void daqboard2000_adcStopDmaTransfer(struct comedi_device *dev)
{
/* printk("Implement: daqboard2000_adcStopDmaTransfer\n");*/
Expand Down Expand Up @@ -747,8 +766,6 @@ static int daqboard2000_attach(struct comedi_device *dev,
struct pci_dev *pcidev;
struct comedi_subdevice *s;
resource_size_t pci_base;
void *aux_data;
unsigned int aux_len;
int result;

result = alloc_private(dev, sizeof(*devpriv));
Expand Down Expand Up @@ -790,18 +807,10 @@ static int daqboard2000_attach(struct comedi_device *dev,
printk("Interrupt before is: %x\n", interrupt);
*/

aux_data = comedi_aux_data(it->options, 0);
aux_len = it->options[COMEDI_DEVCONF_AUX_DATA_LENGTH];

if (aux_data && aux_len) {
result = initialize_daqboard2000(dev, aux_data, aux_len);
} else {
dev_dbg(dev->class_dev,
"no FPGA initialization code, aborting\n");
result = -EIO;
}
result = daqboard2000_upload_firmware(dev);
if (result < 0)
goto out;
return result;

daqboard2000_initializeAdc(dev);
daqboard2000_initializeDac(dev);
/*
Expand Down Expand Up @@ -835,7 +844,6 @@ static int daqboard2000_attach(struct comedi_device *dev,
result = subdev_8255_init(dev, s, daqboard2000_8255_cb,
(unsigned long)(devpriv->daq + dioP2ExpansionIO8Bit));

out:
return result;
}

Expand Down Expand Up @@ -896,3 +904,4 @@ module_comedi_pci_driver(daqboard2000_driver, daqboard2000_pci_driver);
MODULE_AUTHOR("Comedi http://www.comedi.org");
MODULE_DESCRIPTION("Comedi low-level driver");
MODULE_LICENSE("GPL");
MODULE_FIRMWARE(DAQBOARD2000_FIRMWARE);

0 comments on commit 3957f8a

Please sign in to comment.