* boards in this way is optional, and completely driver-dependent.
* Some drivers use arrays such as this, other do not.
*/
-typedef struct serial2002_board_struct {
+struct serial2002_board {
const char *name;
-} serial2002_board;
+};
-static const serial2002_board serial2002_boards[] = {
+static const struct serial2002_board serial2002_boards[] = {
{
name: "serial2002"}
};
/*
* Useful for shorthand access to the particular board structure
*/
-#define thisboard ((const serial2002_board *)dev->board_ptr)
+#define thisboard ((const struct serial2002_board *)dev->board_ptr)
+
+struct serial2002_range_table_t {
-typedef struct {
// HACK...
int length;
- comedi_krange range;
-} serial2002_range_table_t;
+ struct comedi_krange range;
+};
+
+
+struct serial2002_private {
-typedef struct {
int port; // /dev/ttyS<port>
int speed; // baudrate
struct file *tty;
unsigned char analog_in_mapping[32];
unsigned char analog_out_mapping[32];
unsigned char encoder_in_mapping[32];
- serial2002_range_table_t in_range[32], out_range[32];
-} serial2002_private;
+ struct serial2002_range_table_t in_range[32], out_range[32];
+};
+
/*
* most drivers define the following macro to make it easy to
* access the private structure.
*/
-#define devpriv ((serial2002_private *)dev->private)
+#define devpriv ((struct serial2002_private *)dev->private)
-static int serial2002_attach(struct comedi_device * dev, comedi_devconfig * it);
+static int serial2002_attach(struct comedi_device * dev, struct comedi_devconfig * it);
static int serial2002_detach(struct comedi_device * dev);
-comedi_driver driver_serial2002 = {
+struct comedi_driver driver_serial2002 = {
driver_name:"serial2002",
module:THIS_MODULE,
attach:serial2002_attach,
detach:serial2002_detach,
board_name:&serial2002_boards[0].name,
- offset:sizeof(serial2002_board),
- num_names:sizeof(serial2002_boards) / sizeof(serial2002_board),
+ offset:sizeof(struct serial2002_board),
+ num_names:sizeof(serial2002_boards) / sizeof(struct serial2002_board),
};
static int serial2002_di_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data);
+ struct comedi_insn * insn, unsigned int * data);
static int serial2002_do_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data);
+ struct comedi_insn * insn, unsigned int * data);
static int serial2002_ai_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data);
+ struct comedi_insn * insn, unsigned int * data);
static int serial2002_ao_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data);
+ struct comedi_insn * insn, unsigned int * data);
static int serial2002_ao_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data);
+ struct comedi_insn * insn, unsigned int * data);
struct serial_data {
enum { is_invalid, is_digital, is_channel } kind;
printk("serial_2002: file open error = %ld\n",
PTR_ERR(devpriv->tty));
} else {
- typedef struct {
+ struct config_t {
+
int kind;
int bits;
int min;
int max;
- } config_t;
- config_t dig_in_config[32];
- config_t dig_out_config[32];
- config_t chan_in_config[32];
- config_t chan_out_config[32];
+ };
+
+ struct config_t dig_in_config[32];
+ struct config_t dig_out_config[32];
+ struct config_t chan_in_config[32];
+ struct config_t chan_out_config[32];
int i;
for (i = 0; i < 32; i++) {
break;
} else {
int command, channel, kind;
- config_t *cur_config = 0;
+ struct config_t *cur_config = 0;
channel = data.value & 0x1f;
kind = (data.value >> 5) & 0x7;
}
for (i = 0; i <= 4; i++) {
// Fill in subdev data
- config_t *c;
+ struct config_t *c;
unsigned char *mapping = 0;
- serial2002_range_table_t *range = 0;
+ struct serial2002_range_table_t *range = 0;
int kind = 0;
switch (i) {
}
if (c) {
struct comedi_subdevice *s;
- const comedi_lrange **range_table_list = NULL;
+ const struct comedi_lrange **range_table_list = NULL;
unsigned int *maxdata_list;
int j, chan;
s->range_table = 0;
s->range_table_list = range_table_list =
kmalloc(sizeof
- (serial2002_range_table_t) *
+ (struct serial2002_range_table_t) *
s->n_chan, GFP_KERNEL);
}
for (chan = 0, j = 0; j < 32; j++) {
range[j].range.max =
c[j].max;
range_table_list[chan] =
- (const
+ (const struct
comedi_lrange *)
&range[j];
}
}
static int serial2002_di_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
}
static int serial2002_do_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
}
static int serial2002_ai_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
}
static int serial2002_ao_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
}
static int serial2002_ao_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan = CR_CHAN(insn->chanspec);
}
static int serial2002_ei_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
return n;
}
-static int serial2002_attach(struct comedi_device * dev, comedi_devconfig * it)
+static int serial2002_attach(struct comedi_device * dev, struct comedi_devconfig * it)
{
struct comedi_subdevice *s;
printk("comedi%d: serial2002: ", dev->minor);
dev->board_name = thisboard->name;
- if (alloc_private(dev, sizeof(serial2002_private)) < 0) {
+ if (alloc_private(dev, sizeof(struct serial2002_private)) < 0) {
return -ENOMEM;
}
dev->open = serial_2002_open;