diff options
Diffstat (limited to 'drivers/staging/comedi/drivers/ii_pci20kc.c')
-rw-r--r-- | drivers/staging/comedi/drivers/ii_pci20kc.c | 127 |
1 files changed, 76 insertions, 51 deletions
diff --git a/drivers/staging/comedi/drivers/ii_pci20kc.c b/drivers/staging/comedi/drivers/ii_pci20kc.c index a90d65fde31e..24df2453e683 100644 --- a/drivers/staging/comedi/drivers/ii_pci20kc.c +++ b/drivers/staging/comedi/drivers/ii_pci20kc.c @@ -154,11 +154,11 @@ struct pci20xxx_private { union pci20xxx_subdev_private subdev_private[PCI20000_MODULES]; }; - #define devpriv ((struct pci20xxx_private *)dev->private) #define CHAN (CR_CHAN(it->chanlist[0])) -static int pci20xxx_attach(struct comedi_device *dev, struct comedi_devconfig *it); +static int pci20xxx_attach(struct comedi_device *dev, + struct comedi_devconfig *it); static int pci20xxx_detach(struct comedi_device *dev); static struct comedi_driver driver_pci20xxx = { @@ -169,10 +169,11 @@ static struct comedi_driver driver_pci20xxx = { }; static int pci20006_init(struct comedi_device *dev, struct comedi_subdevice *s, - int opt0, int opt1); + int opt0, int opt1); static int pci20341_init(struct comedi_device *dev, struct comedi_subdevice *s, - int opt0, int opt1); -static int pci20xxx_dio_init(struct comedi_device *dev, struct comedi_subdevice *s); + int opt0, int opt1); +static int pci20xxx_dio_init(struct comedi_device *dev, + struct comedi_subdevice *s); /* options[0] Board base address @@ -201,7 +202,8 @@ static int pci20xxx_dio_init(struct comedi_device *dev, struct comedi_subdevice 1 == unipolar 10V (0V -- +10V) 2 == bipolar 5V (-5V -- +5V) */ -static int pci20xxx_attach(struct comedi_device *dev, struct comedi_devconfig *it) +static int pci20xxx_attach(struct comedi_device *dev, + struct comedi_devconfig *it) { unsigned char i; int ret; @@ -223,7 +225,9 @@ static int pci20xxx_attach(struct comedi_device *dev, struct comedi_devconfig *i /* Check PCI-20001 C-2A Carrier Board ID */ if ((readb(devpriv->ioaddr) & PCI20000_ID) != PCI20000_ID) { printk("comedi%d: ii_pci20kc", dev->minor); - printk(" PCI-20001 C-2A Carrier Board at base=0x%p not found !\n", devpriv->ioaddr); + printk + (" PCI-20001 C-2A Carrier Board at base=0x%p not found !\n", + devpriv->ioaddr); return -EINVAL; } printk("comedi%d:\n", dev->minor); @@ -237,22 +241,24 @@ static int pci20xxx_attach(struct comedi_device *dev, struct comedi_devconfig *i switch (id) { case PCI20006_ID: sdp->pci20006.iobase = - devpriv->ioaddr + (i + 1) * PCI20000_OFFSET; + devpriv->ioaddr + (i + 1) * PCI20000_OFFSET; pci20006_init(dev, s, it->options[2 * i + 2], - it->options[2 * i + 3]); + it->options[2 * i + 3]); printk("comedi%d: ii_pci20kc", dev->minor); printk(" PCI-20006 module in slot %d \n", i + 1); break; case PCI20341_ID: sdp->pci20341.iobase = - devpriv->ioaddr + (i + 1) * PCI20000_OFFSET; + devpriv->ioaddr + (i + 1) * PCI20000_OFFSET; pci20341_init(dev, s, it->options[2 * i + 2], - it->options[2 * i + 3]); + it->options[2 * i + 3]); printk("comedi%d: ii_pci20kc", dev->minor); printk(" PCI-20341 module in slot %d \n", i + 1); break; default: - printk("ii_pci20kc: unknown module code 0x%02x in slot %d: module disabled\n", id, i); + printk + ("ii_pci20kc: unknown module code 0x%02x in slot %d: module disabled\n", + id, i); /* fall through */ case PCI20xxx_EMPTY_ID: s->type = COMEDI_SUBD_UNUSED; @@ -275,10 +281,12 @@ static int pci20xxx_detach(struct comedi_device *dev) /* pci20006m */ -static int pci20006_insn_read(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data); -static int pci20006_insn_write(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data); +static int pci20006_insn_read(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, unsigned int *data); +static int pci20006_insn_write(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, unsigned int *data); static const struct comedi_lrange *pci20006_range_list[] = { &range_bipolar10, @@ -287,7 +295,7 @@ static const struct comedi_lrange *pci20006_range_list[] = { }; static int pci20006_init(struct comedi_device *dev, struct comedi_subdevice *s, - int opt0, int opt1) + int opt0, int opt1) { union pci20xxx_subdev_private *sdp = s->private; @@ -311,8 +319,9 @@ static int pci20006_init(struct comedi_device *dev, struct comedi_subdevice *s, return 0; } -static int pci20006_insn_read(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data) +static int pci20006_insn_read(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, unsigned int *data) { union pci20xxx_subdev_private *sdp = s->private; @@ -321,8 +330,9 @@ static int pci20006_insn_read(struct comedi_device *dev, struct comedi_subdevice return 1; } -static int pci20006_insn_write(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data) +static int pci20006_insn_write(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, unsigned int *data) { union pci20xxx_subdev_private *sdp = s->private; int hi, lo; @@ -354,15 +364,17 @@ static int pci20006_insn_write(struct comedi_device *dev, struct comedi_subdevic /* PCI20341M */ -static int pci20341_insn_read(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data); +static int pci20341_insn_read(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, unsigned int *data); static const int pci20341_timebase[] = { 0x00, 0x00, 0x00, 0x04 }; static const int pci20341_settling_time[] = { 0x58, 0x58, 0x93, 0x99 }; static const struct comedi_lrange range_bipolar0_5 = { 1, {BIP_RANGE(0.5)} }; static const struct comedi_lrange range_bipolar0_05 = { 1, {BIP_RANGE(0.05)} }; -static const struct comedi_lrange range_bipolar0_025 = { 1, {BIP_RANGE(0.025)} }; +static const struct comedi_lrange range_bipolar0_025 = + { 1, {BIP_RANGE(0.025)} }; static const struct comedi_lrange *const pci20341_ranges[] = { &range_bipolar5, @@ -372,7 +384,7 @@ static const struct comedi_lrange *const pci20341_ranges[] = { }; static int pci20341_init(struct comedi_device *dev, struct comedi_subdevice *s, - int opt0, int opt1) + int opt0, int opt1) { union pci20xxx_subdev_private *sdp = s->private; int option; @@ -402,10 +414,11 @@ static int pci20341_init(struct comedi_device *dev, struct comedi_subdevice *s, return 0; } -static int pci20341_insn_read(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data) +static int pci20341_insn_read(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, unsigned int *data) { - union pci20xxx_subdev_private *sdp = s->private; + union pci20xxx_subdev_private *sdp = s->private; unsigned int i = 0, j = 0; int lo, hi; unsigned char eoc; /* end of conversion */ @@ -414,7 +427,7 @@ static int pci20341_insn_read(struct comedi_device *dev, struct comedi_subdevice writeb(1, sdp->iobase + PCI20341_LCHAN_ADDR_REG); /* write number of input channels */ clb = PCI20341_DAISY_CHAIN | PCI20341_MUX | (sdp->pci20341.ai_gain << 3) - | CR_CHAN(insn->chanspec); + | CR_CHAN(insn->chanspec); writeb(clb, sdp->iobase + PCI20341_CHAN_LIST); writeb(0x00, sdp->iobase + PCI20341_CC_RESET); /* reset settling time counter and trigger delay counter */ writeb(0x00, sdp->iobase + PCI20341_CHAN_RESET); @@ -434,13 +447,15 @@ static int pci20341_insn_read(struct comedi_device *dev, struct comedi_subdevice eoc = readb(sdp->iobase + PCI20341_STATUS_REG); } if (j >= 100) { - printk("comedi%d: pci20xxx: AI interrupt channel %i polling exit !\n", dev->minor, i); + printk + ("comedi%d: pci20xxx: AI interrupt channel %i polling exit !\n", + dev->minor, i); return -EINVAL; } lo = readb(sdp->iobase + PCI20341_LDATA); hi = readb(sdp->iobase + PCI20341_LDATA + 1); boarddata = lo + 0x100 * hi; - data[i] = (short) ((boarddata + 0x8000) & 0xffff); /* board-data -> comedi-data */ + data[i] = (short)((boarddata + 0x8000) & 0xffff); /* board-data -> comedi-data */ } return i; @@ -448,14 +463,19 @@ static int pci20341_insn_read(struct comedi_device *dev, struct comedi_subdevice /* native DIO */ -static void pci20xxx_dio_config(struct comedi_device *dev, struct comedi_subdevice *s); -static int pci20xxx_dio_insn_bits(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data); -static int pci20xxx_dio_insn_config(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data); +static void pci20xxx_dio_config(struct comedi_device *dev, + struct comedi_subdevice *s); +static int pci20xxx_dio_insn_bits(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, unsigned int *data); +static int pci20xxx_dio_insn_config(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, + unsigned int *data); /* initialize struct pci20xxx_private */ -static int pci20xxx_dio_init(struct comedi_device *dev, struct comedi_subdevice *s) +static int pci20xxx_dio_init(struct comedi_device *dev, + struct comedi_subdevice *s) { s->type = COMEDI_SUBD_DIO; @@ -474,8 +494,10 @@ static int pci20xxx_dio_init(struct comedi_device *dev, struct comedi_subdevice return 0; } -static int pci20xxx_dio_insn_config(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data) +static int pci20xxx_dio_insn_config(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, + unsigned int *data) { int mask, bits; @@ -499,8 +521,9 @@ static int pci20xxx_dio_insn_config(struct comedi_device *dev, struct comedi_sub return 1; } -static int pci20xxx_dio_insn_bits(struct comedi_device *dev, struct comedi_subdevice *s, - struct comedi_insn *insn, unsigned int *data) +static int pci20xxx_dio_insn_bits(struct comedi_device *dev, + struct comedi_subdevice *s, + struct comedi_insn *insn, unsigned int *data) { unsigned int mask = data[0]; @@ -510,16 +533,16 @@ static int pci20xxx_dio_insn_bits(struct comedi_device *dev, struct comedi_subde mask &= s->io_bits; if (mask & 0x000000ff) writeb((s->state >> 0) & 0xff, - devpriv->ioaddr + PCI20000_DIO_0); + devpriv->ioaddr + PCI20000_DIO_0); if (mask & 0x0000ff00) writeb((s->state >> 8) & 0xff, - devpriv->ioaddr + PCI20000_DIO_1); + devpriv->ioaddr + PCI20000_DIO_1); if (mask & 0x00ff0000) writeb((s->state >> 16) & 0xff, - devpriv->ioaddr + PCI20000_DIO_2); + devpriv->ioaddr + PCI20000_DIO_2); if (mask & 0xff000000) writeb((s->state >> 24) & 0xff, - devpriv->ioaddr + PCI20000_DIO_3); + devpriv->ioaddr + PCI20000_DIO_3); data[1] = readb(devpriv->ioaddr + PCI20000_DIO_0); data[1] |= readb(devpriv->ioaddr + PCI20000_DIO_1) << 8; @@ -529,7 +552,8 @@ static int pci20xxx_dio_insn_bits(struct comedi_device *dev, struct comedi_subde return 2; } -static void pci20xxx_dio_config(struct comedi_device *dev, struct comedi_subdevice *s) +static void pci20xxx_dio_config(struct comedi_device *dev, + struct comedi_subdevice *s) { unsigned char control_01; unsigned char control_23; @@ -543,7 +567,7 @@ static void pci20xxx_dio_config(struct comedi_device *dev, struct comedi_subdevi /* output port 0 */ control_01 &= PCI20000_DIO_EOC; buffer = (buffer & (~(DIO_BE << DIO_PS_0))) | (DIO_BO << - DIO_PS_0); + DIO_PS_0); } else { /* input port 0 */ control_01 = (control_01 & DIO_CAND) | PCI20000_DIO_EIC; @@ -553,7 +577,7 @@ static void pci20xxx_dio_config(struct comedi_device *dev, struct comedi_subdevi /* output port 1 */ control_01 &= PCI20000_DIO_OOC; buffer = (buffer & (~(DIO_BE << DIO_PS_1))) | (DIO_BO << - DIO_PS_1); + DIO_PS_1); } else { /* input port 1 */ control_01 = (control_01 & DIO_CAND) | PCI20000_DIO_OIC; @@ -563,7 +587,7 @@ static void pci20xxx_dio_config(struct comedi_device *dev, struct comedi_subdevi /* output port 2 */ control_23 &= PCI20000_DIO_EOC; buffer = (buffer & (~(DIO_BE << DIO_PS_2))) | (DIO_BO << - DIO_PS_2); + DIO_PS_2); } else { /* input port 2 */ control_23 = (control_23 & DIO_CAND) | PCI20000_DIO_EIC; @@ -573,7 +597,7 @@ static void pci20xxx_dio_config(struct comedi_device *dev, struct comedi_subdevi /* output port 3 */ control_23 &= PCI20000_DIO_OOC; buffer = (buffer & (~(DIO_BE << DIO_PS_3))) | (DIO_BO << - DIO_PS_3); + DIO_PS_3); } else { /* input port 3 */ control_23 = (control_23 & DIO_CAND) | PCI20000_DIO_OIC; @@ -598,7 +622,8 @@ static void pci20xxx_do(struct comedi_device *dev, struct comedi_subdevice *s) writeb((s->state >> 24) & 0xff, devpriv->ioaddr + PCI20000_DIO_3); } -static unsigned int pci20xxx_di(struct comedi_device *dev, struct comedi_subdevice *s) +static unsigned int pci20xxx_di(struct comedi_device *dev, + struct comedi_subdevice *s) { /* XXX same note as above */ unsigned int bits; |