Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 364183
b: refs/heads/master
c: 4f71cee
h: refs/heads/master
i:
  364181: 565eeff
  364179: 884033e
  364175: a35740f
v: v3
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Apr 23, 2013
1 parent 9c44bbd commit c91b09f
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 68 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: 92046ae49dec96ec40d861721c922c50fabf1756
refs/heads/master: 4f71ceebebe8af5a4cbedf13c88d1908a96987fc
132 changes: 65 additions & 67 deletions trunk/drivers/staging/comedi/drivers/das800.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,73 +235,6 @@ static void enable_das800(struct comedi_device *dev);
static void disable_das800(struct comedi_device *dev);
static int das800_set_frequency(struct comedi_device *dev);

/* checks and probes das-800 series board type */
static int das800_probe(struct comedi_device *dev)
{
const struct das800_board *thisboard = comedi_board(dev);
int id_bits;
unsigned long irq_flags;
int board;

/* 'comedi spin lock irqsave' disables even rt interrupts, we use them to protect indirect addressing */
spin_lock_irqsave(&dev->spinlock, irq_flags);
outb(ID, dev->iobase + DAS800_GAIN); /* select base address + 7 to be ID register */
id_bits = inb(dev->iobase + DAS800_ID) & 0x3; /* get id bits */
spin_unlock_irqrestore(&dev->spinlock, irq_flags);

board = thisboard - das800_boards;

switch (id_bits) {
case 0x0:
if (board == das800) {
dev_dbg(dev->class_dev, "Board model: DAS-800\n");
return board;
}
if (board == ciodas800) {
dev_dbg(dev->class_dev, "Board model: CIO-DAS800\n");
return board;
}
dev_dbg(dev->class_dev, "Board model (probed): DAS-800\n");
return das800;
break;
case 0x2:
if (board == das801) {
dev_dbg(dev->class_dev, "Board model: DAS-801\n");
return board;
}
if (board == ciodas801) {
dev_dbg(dev->class_dev, "Board model: CIO-DAS801\n");
return board;
}
dev_dbg(dev->class_dev, "Board model (probed): DAS-801\n");
return das801;
break;
case 0x3:
if (board == das802) {
dev_dbg(dev->class_dev, "Board model: DAS-802\n");
return board;
}
if (board == ciodas802) {
dev_dbg(dev->class_dev, "Board model: CIO-DAS802\n");
return board;
}
if (board == ciodas80216) {
dev_dbg(dev->class_dev, "Board model: CIO-DAS802/16\n");
return board;
}
dev_dbg(dev->class_dev, "Board model (probed): DAS-802\n");
return das802;
break;
default:
dev_dbg(dev->class_dev,
"Board model: probe returned 0x%x (unknown)\n",
id_bits);
return board;
break;
}
return -1;
}

/* interrupt service routine */
static irqreturn_t das800_interrupt(int irq, void *d)
{
Expand Down Expand Up @@ -729,6 +662,71 @@ static int das800_set_frequency(struct comedi_device *dev)
return 0;
}

static int das800_probe(struct comedi_device *dev)
{
const struct das800_board *thisboard = comedi_board(dev);
int id_bits;
unsigned long irq_flags;
int board;

spin_lock_irqsave(&dev->spinlock, irq_flags);
outb(ID, dev->iobase + DAS800_GAIN);
id_bits = inb(dev->iobase + DAS800_ID) & 0x3;
spin_unlock_irqrestore(&dev->spinlock, irq_flags);

board = thisboard - das800_boards;

switch (id_bits) {
case 0x0:
if (board == das800) {
dev_dbg(dev->class_dev, "Board model: DAS-800\n");
return board;
}
if (board == ciodas800) {
dev_dbg(dev->class_dev, "Board model: CIO-DAS800\n");
return board;
}
dev_dbg(dev->class_dev, "Board model (probed): DAS-800\n");
return das800;
break;
case 0x2:
if (board == das801) {
dev_dbg(dev->class_dev, "Board model: DAS-801\n");
return board;
}
if (board == ciodas801) {
dev_dbg(dev->class_dev, "Board model: CIO-DAS801\n");
return board;
}
dev_dbg(dev->class_dev, "Board model (probed): DAS-801\n");
return das801;
break;
case 0x3:
if (board == das802) {
dev_dbg(dev->class_dev, "Board model: DAS-802\n");
return board;
}
if (board == ciodas802) {
dev_dbg(dev->class_dev, "Board model: CIO-DAS802\n");
return board;
}
if (board == ciodas80216) {
dev_dbg(dev->class_dev, "Board model: CIO-DAS802/16\n");
return board;
}
dev_dbg(dev->class_dev, "Board model (probed): DAS-802\n");
return das802;
break;
default:
dev_dbg(dev->class_dev,
"Board model: probe returned 0x%x (unknown)\n",
id_bits);
return board;
break;
}
return -1;
}

static int das800_attach(struct comedi_device *dev, struct comedi_devconfig *it)
{
const struct das800_board *thisboard = comedi_board(dev);
Expand Down

0 comments on commit c91b09f

Please sign in to comment.