| /* SPDX-License-Identifier: GPL-2.0+ */ | |
| /* | |
| * comedi_8255.h | |
| * Generic 8255 digital I/O subdevice support | |
| * | |
| * COMEDI - Linux Control and Measurement Device Interface | |
| * Copyright (C) 1998 David A. Schleef <ds@schleef.org> | |
| */ | |
| #ifndef _COMEDI_8255_H | |
| #define _COMEDI_8255_H | |
| #include <linux/errno.h> | |
| #define I8255_SIZE 0x04 | |
| #define I8255_DATA_A_REG 0x00 | |
| #define I8255_DATA_B_REG 0x01 | |
| #define I8255_DATA_C_REG 0x02 | |
| #define I8255_CTRL_REG 0x03 | |
| #define I8255_CTRL_C_LO_IO BIT(0) | |
| #define I8255_CTRL_B_IO BIT(1) | |
| #define I8255_CTRL_B_MODE BIT(2) | |
| #define I8255_CTRL_C_HI_IO BIT(3) | |
| #define I8255_CTRL_A_IO BIT(4) | |
| #define I8255_CTRL_A_MODE(x) ((x) << 5) | |
| #define I8255_CTRL_CW BIT(7) | |
| struct comedi_device; | |
| struct comedi_subdevice; | |
| #ifdef CONFIG_HAS_IOPORT | |
| int subdev_8255_io_init(struct comedi_device *dev, struct comedi_subdevice *s, | |
| unsigned long regbase); | |
| #else | |
| static inline int subdev_8255_io_init(struct comedi_device *dev, | |
| struct comedi_subdevice *s, | |
| unsigned long regbase) | |
| { | |
| return -ENXIO; | |
| } | |
| #endif | |
| int subdev_8255_mm_init(struct comedi_device *dev, struct comedi_subdevice *s, | |
| unsigned long regbase); | |
| int subdev_8255_cb_init(struct comedi_device *dev, struct comedi_subdevice *s, | |
| int (*io)(struct comedi_device *dev, int dir, int port, | |
| int data, unsigned long context), | |
| unsigned long context); | |
| unsigned long subdev_8255_regbase(struct comedi_subdevice *s); | |
| #endif |