Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 364188
b: refs/heads/master
c: c1a5917
h: refs/heads/master
v: v3
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Apr 23, 2013
1 parent 7c12677 commit f18512c
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 82 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: b678075f9a9bad493ddb6dda833c9f334bf2dc1d
refs/heads/master: c1a5917157c115875d71c94fac75071a8b88ba15
146 changes: 65 additions & 81 deletions trunk/drivers/staging/comedi/drivers/das800.c
Original file line number Diff line number Diff line change
Expand Up @@ -169,51 +169,59 @@ static const struct comedi_lrange range_das80216_ai = {
}
};

enum { das800, ciodas800, das801, ciodas801, das802, ciodas802, ciodas80216 };
enum das800_boardinfo {
BOARD_DAS800,
BOARD_CIODAS800,
BOARD_DAS801,
BOARD_CIODAS801,
BOARD_DAS802,
BOARD_CIODAS802,
BOARD_CIODAS80216,
};

static const struct das800_board das800_boards[] = {
{
.name = "das-800",
.ai_speed = 25000,
.ai_range = &range_bipolar5,
.resolution = 12,
},
{
.name = "cio-das800",
.ai_speed = 20000,
.ai_range = &range_bipolar5,
.resolution = 12,
},
{
.name = "das-801",
.ai_speed = 25000,
.ai_range = &range_das801_ai,
.resolution = 12,
},
{
.name = "cio-das801",
.ai_speed = 20000,
.ai_range = &range_cio_das801_ai,
.resolution = 12,
},
{
.name = "das-802",
.ai_speed = 25000,
.ai_range = &range_das802_ai,
.resolution = 12,
},
{
.name = "cio-das802",
.ai_speed = 20000,
.ai_range = &range_das802_ai,
.resolution = 12,
},
{
.name = "cio-das802/16",
.ai_speed = 10000,
.ai_range = &range_das80216_ai,
.resolution = 16,
},
[BOARD_DAS800] = {
.name = "das-800",
.ai_speed = 25000,
.ai_range = &range_bipolar5,
.resolution = 12,
},
[BOARD_CIODAS800] = {
.name = "cio-das800",
.ai_speed = 20000,
.ai_range = &range_bipolar5,
.resolution = 12,
},
[BOARD_DAS801] = {
.name = "das-801",
.ai_speed = 25000,
.ai_range = &range_das801_ai,
.resolution = 12,
},
[BOARD_CIODAS801] = {
.name = "cio-das801",
.ai_speed = 20000,
.ai_range = &range_cio_das801_ai,
.resolution = 12,
},
[BOARD_DAS802] = {
.name = "das-802",
.ai_speed = 25000,
.ai_range = &range_das802_ai,
.resolution = 12,
},
[BOARD_CIODAS802] = {
.name = "cio-das802",
.ai_speed = 20000,
.ai_range = &range_das802_ai,
.resolution = 12,
},
[BOARD_CIODAS80216] = {
.name = "cio-das802/16",
.ai_speed = 10000,
.ai_range = &range_das80216_ai,
.resolution = 16,
},
};

struct das800_private {
Expand Down Expand Up @@ -670,65 +678,41 @@ static int das800_do_wbits(struct comedi_device *dev,
static int das800_probe(struct comedi_device *dev)
{
const struct das800_board *thisboard = comedi_board(dev);
int board = thisboard ? thisboard - das800_boards : -EINVAL;
int id_bits;
unsigned long irq_flags;
int board;

spin_lock_irqsave(&dev->spinlock, irq_flags);
id_bits = das800_ind_read(dev, 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;
}
if (board == BOARD_DAS800 || board == BOARD_CIODAS800)
break;
dev_dbg(dev->class_dev, "Board model (probed): DAS-800\n");
return das800;
board = BOARD_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;
}
if (board == BOARD_DAS801 || board == BOARD_CIODAS801)
break;
dev_dbg(dev->class_dev, "Board model (probed): DAS-801\n");
return das801;
board = BOARD_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;
}
if (board == BOARD_DAS802 || board == BOARD_CIODAS802 ||
board == BOARD_CIODAS80216)
break;
dev_dbg(dev->class_dev, "Board model (probed): DAS-802\n");
return das802;
board = BOARD_DAS802;
break;
default:
dev_dbg(dev->class_dev,
"Board model: probe returned 0x%x (unknown)\n",
dev_dbg(dev->class_dev, "Board model: 0x%x (unknown)\n",
id_bits);
return board;
board = -EINVAL;
break;
}
return -1;
return board;
}

static int das800_attach(struct comedi_device *dev, struct comedi_devconfig *it)
Expand Down

0 comments on commit f18512c

Please sign in to comment.