1 /* 2 * module/8255.h 3 * Header file for 8255 4 * 5 * COMEDI - Linux Control and Measurement Device Interface 6 * Copyright (C) 1998 David A. Schleef <ds@schleef.org> 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 */ 18 19 #ifndef _8255_H 20 #define _8255_H 21 22 #define I8255_SIZE 0x04 23 24 #define I8255_DATA_A_REG 0x00 25 #define I8255_DATA_B_REG 0x01 26 #define I8255_DATA_C_REG 0x02 27 #define I8255_CTRL_REG 0x03 28 #define I8255_CTRL_C_LO_IO BIT(0) 29 #define I8255_CTRL_B_IO BIT(1) 30 #define I8255_CTRL_B_MODE BIT(2) 31 #define I8255_CTRL_C_HI_IO BIT(3) 32 #define I8255_CTRL_A_IO BIT(4) 33 #define I8255_CTRL_A_MODE(x) ((x) << 5) 34 #define I8255_CTRL_CW BIT(7) 35 36 struct comedi_device; 37 struct comedi_subdevice; 38 39 int subdev_8255_init(struct comedi_device *dev, struct comedi_subdevice *s, 40 int (*io)(struct comedi_device *dev, int dir, int port, 41 int data, unsigned long regbase), 42 unsigned long regbase); 43 44 int subdev_8255_mm_init(struct comedi_device *dev, struct comedi_subdevice *s, 45 int (*io)(struct comedi_device *dev, int dir, int port, 46 int data, unsigned long regbase), 47 unsigned long regbase); 48 49 unsigned long subdev_8255_regbase(struct comedi_subdevice *s); 50 51 #endif 52