* 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;
- lsampl_t ao_readback[32];
+ unsigned int ao_readback[32];
unsigned char digital_in_mapping[32];
unsigned char digital_out_mapping[32];
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(comedi_device * dev, comedi_devconfig * it);
-static int serial2002_detach(comedi_device * dev);
-comedi_driver driver_serial2002 = {
+static int serial2002_attach(struct comedi_device * dev, struct comedi_devconfig * it);
+static int serial2002_detach(struct comedi_device * dev);
+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(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int serial2002_do_winsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int serial2002_ai_rinsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int serial2002_ao_winsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
-static int serial2002_ao_rinsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data);
+static int serial2002_di_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data);
+static int serial2002_do_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data);
+static int serial2002_ai_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data);
+static int serial2002_ao_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data);
+static int serial2002_ao_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data);
struct serial_data {
enum { is_invalid, is_digital, is_channel } kind;
}
}
-static void serial_2002_open(comedi_device * dev)
+static void serial_2002_open(struct comedi_device * dev)
{
char port[20];
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) {
break;
}
if (c) {
- comedi_subdevice *s;
- const comedi_lrange **range_table_list = NULL;
+ struct comedi_subdevice *s;
+ const struct comedi_lrange **range_table_list = NULL;
unsigned int *maxdata_list;
int j, chan;
kfree(s->maxdata_list);
}
s->maxdata_list = maxdata_list =
- kmalloc(sizeof(lsampl_t) * s->n_chan,
+ kmalloc(sizeof(unsigned int) * s->n_chan,
GFP_KERNEL);
if (s->range_table_list) {
kfree(s->range_table_list);
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 void serial_2002_close(comedi_device * dev)
+static void serial_2002_close(struct comedi_device * dev)
{
if (!IS_ERR(devpriv->tty) && (devpriv->tty != 0)) {
filp_close(devpriv->tty, 0);
}
}
-static int serial2002_di_rinsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int serial2002_di_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
return n;
}
-static int serial2002_do_winsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int serial2002_do_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
return n;
}
-static int serial2002_ai_rinsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int serial2002_ai_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
return n;
}
-static int serial2002_ao_winsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int serial2002_ao_winsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
return n;
}
-static int serial2002_ao_rinsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int serial2002_ao_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan = CR_CHAN(insn->chanspec);
return n;
}
-static int serial2002_ei_rinsn(comedi_device * dev, comedi_subdevice * s,
- comedi_insn * insn, lsampl_t * data)
+static int serial2002_ei_rinsn(struct comedi_device * dev, struct comedi_subdevice * s,
+ struct comedi_insn * insn, unsigned int * data)
{
int n;
int chan;
return n;
}
-static int serial2002_attach(comedi_device * dev, comedi_devconfig * it)
+static int serial2002_attach(struct comedi_device * dev, struct comedi_devconfig * it)
{
- comedi_subdevice *s;
+ 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;
return 1;
}
-static int serial2002_detach(comedi_device * dev)
+static int serial2002_detach(struct comedi_device * dev)
{
- comedi_subdevice *s;
+ struct comedi_subdevice *s;
int i;
printk("comedi%d: serial2002: remove\n", dev->minor);