pc272_layout
};
-typedef struct dio200_board_struct {
+struct dio200_board {
const char *name;
unsigned short devid;
enum dio200_bustype bustype;
enum dio200_model model;
enum dio200_layout layout;
-} dio200_board;
+};
-static const dio200_board dio200_boards[] = {
+static const struct dio200_board dio200_boards[] = {
{
name: "pc212e",
bustype: isa_bustype,
#define DIO200_MAX_SUBDEVS 7
#define DIO200_MAX_ISNS 6
-typedef struct dio200_layout_struct {
+struct dio200_layout_struct {
unsigned short n_subdevs; /* number of subdevices */
unsigned char sdtype[DIO200_MAX_SUBDEVS]; /* enum dio200_sdtype */
unsigned char sdinfo[DIO200_MAX_SUBDEVS]; /* depends on sdtype */
char has_int_sce; /* has interrupt enable/status register */
char has_clk_gat_sce; /* has clock/gate selection registers */
-} dio200_layout;
+};
-static const dio200_layout dio200_layouts[] = {
+static const struct dio200_layout_struct dio200_layouts[] = {
[pc212_layout] = {
n_subdevs:6,
sdtype: {sd_8255, sd_8254, sd_8254, sd_8254,
/*
* Useful for shorthand access to the particular board structure
*/
-#define thisboard ((const dio200_board *)dev->board_ptr)
-#define thislayout (&dio200_layouts[((dio200_board *)dev->board_ptr)->layout])
+#define thisboard ((const struct dio200_board *)dev->board_ptr)
+#define thislayout (&dio200_layouts[((struct dio200_board *)dev->board_ptr)->layout])
/* this structure is for data unique to this hardware driver. If
several hardware drivers keep similar information in this structure,
feel free to suggest moving the variable to the struct comedi_device struct. */
-typedef struct {
+struct dio200_private {
#ifdef CONFIG_COMEDI_PCI
struct pci_dev *pci_dev; /* PCI device */
#endif
int intr_sd;
-} dio200_private;
+};
-#define devpriv ((dio200_private *)dev->private)
+#define devpriv ((struct dio200_private *)dev->private)
-typedef struct {
+struct dio200_subdev_8254 {
unsigned long iobase; /* Counter base address */
unsigned long clk_sce_iobase; /* CLK_SCE base address */
unsigned long gat_sce_iobase; /* GAT_SCE base address */
int has_clk_gat_sce;
unsigned clock_src[3]; /* Current clock sources */
unsigned gate_src[3]; /* Current gate sources */
-} dio200_subdev_8254;
+};
-typedef struct {
+struct dio200_subdev_intr {
unsigned long iobase;
spinlock_t spinlock;
int active;
unsigned int enabled_isns;
unsigned int stopcount;
int continuous;
-} dio200_subdev_intr;
+};
/*
* The struct comedi_driver structure tells the Comedi core module
* the board, and also about the kernel module that contains
* the device code.
*/
-static int dio200_attach(struct comedi_device * dev, comedi_devconfig * it);
+static int dio200_attach(struct comedi_device * dev, struct comedi_devconfig * it);
static int dio200_detach(struct comedi_device * dev);
static struct comedi_driver driver_amplc_dio200 = {
driver_name:DIO200_DRIVER_NAME,
attach:dio200_attach,
detach:dio200_detach,
board_name:&dio200_boards[0].name,
- offset:sizeof(dio200_board),
- num_names:sizeof(dio200_boards) / sizeof(dio200_board),
+ offset:sizeof(struct dio200_board),
+ num_names:sizeof(dio200_boards) / sizeof(struct dio200_board),
};
#ifdef CONFIG_COMEDI_PCI
*/
static int
dio200_subdev_intr_insn_bits(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
- dio200_subdev_intr *subpriv = s->private;
+ struct dio200_subdev_intr *subpriv = s->private;
if (subpriv->has_int_sce) {
/* Just read the interrupt status register. */
*/
static void dio200_stop_intr(struct comedi_device * dev, struct comedi_subdevice * s)
{
- dio200_subdev_intr *subpriv = s->private;
+ struct dio200_subdev_intr *subpriv = s->private;
subpriv->active = 0;
subpriv->enabled_isns = 0;
{
unsigned int n;
unsigned isn_bits;
- dio200_subdev_intr *subpriv = s->private;
- comedi_cmd *cmd = &s->async->cmd;
+ struct dio200_subdev_intr *subpriv = s->private;
+ struct comedi_cmd *cmd = &s->async->cmd;
int retval = 0;
if (!subpriv->continuous && subpriv->stopcount == 0) {
dio200_inttrig_start_intr(struct comedi_device * dev, struct comedi_subdevice * s,
unsigned int trignum)
{
- dio200_subdev_intr *subpriv;
+ struct dio200_subdev_intr *subpriv;
unsigned long flags;
int event = 0;
*/
static int dio200_handle_read_intr(struct comedi_device * dev, struct comedi_subdevice * s)
{
- dio200_subdev_intr *subpriv = s->private;
+ struct dio200_subdev_intr *subpriv = s->private;
unsigned triggered;
unsigned intstat;
unsigned cur_enabled;
*/
static int dio200_subdev_intr_cancel(struct comedi_device * dev, struct comedi_subdevice * s)
{
- dio200_subdev_intr *subpriv = s->private;
+ struct dio200_subdev_intr *subpriv = s->private;
unsigned long flags;
comedi_spin_lock_irqsave(&subpriv->spinlock, flags);
*/
static int
dio200_subdev_intr_cmdtest(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_cmd * cmd)
+ struct comedi_cmd * cmd)
{
int err = 0;
unsigned int tmp;
*/
static int dio200_subdev_intr_cmd(struct comedi_device * dev, struct comedi_subdevice * s)
{
- comedi_cmd *cmd = &s->async->cmd;
- dio200_subdev_intr *subpriv = s->private;
+ struct comedi_cmd *cmd = &s->async->cmd;
+ struct dio200_subdev_intr *subpriv = s->private;
unsigned long flags;
int event = 0;
dio200_subdev_intr_init(struct comedi_device * dev, struct comedi_subdevice * s,
unsigned long iobase, unsigned valid_isns, int has_int_sce)
{
- dio200_subdev_intr *subpriv;
+ struct dio200_subdev_intr *subpriv;
subpriv = kzalloc(sizeof(*subpriv), GFP_KERNEL);
if (!subpriv) {
static void
dio200_subdev_intr_cleanup(struct comedi_device * dev, struct comedi_subdevice * s)
{
- dio200_subdev_intr *subpriv = s->private;
+ struct dio200_subdev_intr *subpriv = s->private;
if (subpriv) {
kfree(subpriv);
*/
static int
dio200_subdev_8254_read(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
- dio200_subdev_8254 *subpriv = s->private;
+ struct dio200_subdev_8254 *subpriv = s->private;
int chan = CR_CHAN(insn->chanspec);
data[0] = i8254_read(subpriv->iobase, 0, chan);
*/
static int
dio200_subdev_8254_write(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
- dio200_subdev_8254 *subpriv = s->private;
+ struct dio200_subdev_8254 *subpriv = s->private;
int chan = CR_CHAN(insn->chanspec);
i8254_write(subpriv->iobase, 0, chan, data[0]);
* Set gate source for an '8254' counter subdevice channel.
*/
static int
-dio200_set_gate_src(dio200_subdev_8254 * subpriv, unsigned int counter_number,
+dio200_set_gate_src(struct dio200_subdev_8254 * subpriv, unsigned int counter_number,
unsigned int gate_src)
{
unsigned char byte;
* Get gate source for an '8254' counter subdevice channel.
*/
static int
-dio200_get_gate_src(dio200_subdev_8254 * subpriv, unsigned int counter_number)
+dio200_get_gate_src(struct dio200_subdev_8254 * subpriv, unsigned int counter_number)
{
if (!subpriv->has_clk_gat_sce)
return -1;
* Set clock source for an '8254' counter subdevice channel.
*/
static int
-dio200_set_clock_src(dio200_subdev_8254 * subpriv, unsigned int counter_number,
+dio200_set_clock_src(struct dio200_subdev_8254 * subpriv, unsigned int counter_number,
unsigned int clock_src)
{
unsigned char byte;
* Get clock source for an '8254' counter subdevice channel.
*/
static int
-dio200_get_clock_src(dio200_subdev_8254 * subpriv, unsigned int counter_number,
+dio200_get_clock_src(struct dio200_subdev_8254 * subpriv, unsigned int counter_number,
unsigned int * period_ns)
{
unsigned clock_src;
*/
static int
dio200_subdev_8254_config(struct comedi_device * dev, struct comedi_subdevice * s,
- comedi_insn * insn, unsigned int * data)
+ struct comedi_insn * insn, unsigned int * data)
{
- dio200_subdev_8254 *subpriv = s->private;
+ struct dio200_subdev_8254 *subpriv = s->private;
int ret;
int chan = CR_CHAN(insn->chanspec);
dio200_subdev_8254_init(struct comedi_device * dev, struct comedi_subdevice * s,
unsigned long iobase, unsigned offset, int has_clk_gat_sce)
{
- dio200_subdev_8254 *subpriv;
+ struct dio200_subdev_8254 *subpriv;
unsigned int chan;
subpriv = kzalloc(sizeof(*subpriv), GFP_KERNEL);
static void
dio200_subdev_8254_cleanup(struct comedi_device * dev, struct comedi_subdevice * s)
{
- dio200_subdev_intr *subpriv = s->private;
+ struct dio200_subdev_intr *subpriv = s->private;
if (subpriv) {
kfree(subpriv);
* in the driver structure, dev->board_ptr contains that
* address.
*/
-static int dio200_attach(struct comedi_device * dev, comedi_devconfig * it)
+static int dio200_attach(struct comedi_device * dev, struct comedi_devconfig * it)
{
struct comedi_subdevice *s;
unsigned long iobase = 0;
struct pci_dev *pci_dev = NULL;
int bus = 0, slot = 0;
#endif
- const dio200_layout *layout;
+ const struct dio200_layout_struct *layout;
int share_irq = 0;
int sdx;
unsigned n;
printk(KERN_DEBUG "comedi%d: %s: attach\n", dev->minor,
DIO200_DRIVER_NAME);
- if ((ret = alloc_private(dev, sizeof(dio200_private))) < 0) {
+ if ((ret = alloc_private(dev, sizeof(struct dio200_private))) < 0) {
printk(KERN_ERR "comedi%d: error! out of memory!\n",
dev->minor);
return ret;
*/
static int dio200_detach(struct comedi_device * dev)
{
- const dio200_layout *layout;
+ const struct dio200_layout_struct *layout;
unsigned n;
printk(KERN_DEBUG "comedi%d: %s: detach\n", dev->minor,