Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 337725
b: refs/heads/master
c: a7f4b3c
h: refs/heads/master
i:
  337723: da158aa
v: v3
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Nov 13, 2012
1 parent c22e8aa commit 5dd1729
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 50 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: e9840e632a2fd22b3af4a2593df49dcc94923e50
refs/heads/master: a7f4b3ca602c1918c84b0ff2a8ddcb65aa998a82
55 changes: 8 additions & 47 deletions trunk/drivers/staging/comedi/drivers/addi-data/hwdrv_apci3120.c
Original file line number Diff line number Diff line change
Expand Up @@ -2186,57 +2186,18 @@ static int i_APCI3120_InsnReadTimer(struct comedi_device *dev,
return insn->n;
}

/*
* Reads the value of the specified Digital input channel
*/
static int i_APCI3120_InsnReadDigitalInput(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{
struct addi_private *devpriv = dev->private;
unsigned int ui_Chan, ui_TmpValue;

ui_Chan = CR_CHAN(insn->chanspec); /* channel specified */

/* this_board->di_read(dev,ui_Chan,data); */
if (ui_Chan <= 3) {
ui_TmpValue = (unsigned int) inw(devpriv->iobase + APCI3120_RD_STATUS);

/*
* since only 1 channel reqd to bring it to last bit it is rotated 8
* +(chan - 1) times then ANDed with 1 for last bit.
*/
*data = (ui_TmpValue >> (ui_Chan + 8)) & 1;
/* return 0; */
} else {
/* comedi_error(dev," chan spec wrong"); */
return -EINVAL; /* "sorry channel spec wrong " */
}
return insn->n;

}

/*
* Reads the value of the Digital input Port i.e.4channels
* value is returned in data[0]
*/
static int i_APCI3120_InsnBitsDigitalInput(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
static int apci3120_di_insn_bits(struct comedi_device *dev,
struct comedi_subdevice *s,
struct comedi_insn *insn,
unsigned int *data)
{
struct addi_private *devpriv = dev->private;
unsigned int ui_TmpValue;
unsigned int val;

ui_TmpValue = (unsigned int) inw(devpriv->iobase + APCI3120_RD_STATUS);
/***** state of 4 channels in the 11, 10, 9, 8 bits of status reg
rotated right 8 times to bring them to last four bits
ANDed with oxf for value.
*****/
/* the input channels are bits 11:8 of the status reg */
val = inw(devpriv->iobase + APCI3120_RD_STATUS);
data[1] = (val >> 8) & 0xf;

*data = (ui_TmpValue >> 8) & 0xf;
/* this_board->di_bits(dev,data); */
return insn->n;
}

Expand Down
3 changes: 1 addition & 2 deletions trunk/drivers/staging/comedi/drivers/addi_apci_3120.c
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,7 @@ static int apci3120_attach_pci(struct comedi_device *dev,
s->len_chanlist = this_board->i_NbrDiChannel;
s->range_table = &range_digital;
s->io_bits = 0; /* all bits input */
s->insn_read = i_APCI3120_InsnReadDigitalInput;
s->insn_bits = i_APCI3120_InsnBitsDigitalInput;
s->insn_bits = apci3120_di_insn_bits;

/* Allocate and Initialise DO Subdevice Structures */
s = &dev->subdevices[3];
Expand Down

0 comments on commit 5dd1729

Please sign in to comment.