| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| /*************************************************************************** | |
| * copyright : (C) 2002 by Frank Mori Hess | |
| ***************************************************************************/ | |
| #ifndef _GPIB_H | |
| #define _GPIB_H | |
| #define GPIB_MAX_NUM_BOARDS 16 | |
| #define GPIB_MAX_NUM_DESCRIPTORS 0x1000 | |
| enum ibsta_bit_numbers { | |
| DCAS_NUM = 0, | |
| DTAS_NUM = 1, | |
| LACS_NUM = 2, | |
| TACS_NUM = 3, | |
| ATN_NUM = 4, | |
| CIC_NUM = 5, | |
| REM_NUM = 6, | |
| LOK_NUM = 7, | |
| CMPL_NUM = 8, | |
| EVENT_NUM = 9, | |
| SPOLL_NUM = 10, | |
| RQS_NUM = 11, | |
| SRQI_NUM = 12, | |
| END_NUM = 13, | |
| TIMO_NUM = 14, | |
| ERR_NUM = 15 | |
| }; | |
| /* IBSTA status bits (returned by all functions) */ | |
| enum ibsta_bits { | |
| DCAS = (1 << DCAS_NUM), /* device clear state */ | |
| DTAS = (1 << DTAS_NUM), /* device trigger state */ | |
| LACS = (1 << LACS_NUM), /* GPIB interface is addressed as Listener */ | |
| TACS = (1 << TACS_NUM), /* GPIB interface is addressed as Talker */ | |
| ATN = (1 << ATN_NUM), /* Attention is asserted */ | |
| CIC = (1 << CIC_NUM), /* GPIB interface is Controller-in-Charge */ | |
| REM = (1 << REM_NUM), /* remote state */ | |
| LOK = (1 << LOK_NUM), /* lockout state */ | |
| CMPL = (1 << CMPL_NUM), /* I/O is complete */ | |
| EVENT = (1 << EVENT_NUM), /* DCAS, DTAS, or IFC has occurred */ | |
| SPOLL = (1 << SPOLL_NUM), /* board serial polled by busmaster */ | |
| RQS = (1 << RQS_NUM), /* Device requesting service */ | |
| SRQI = (1 << SRQI_NUM), /* SRQ is asserted */ | |
| END = (1 << END_NUM), /* EOI or EOS encountered */ | |
| TIMO = (1 << TIMO_NUM), /* Time limit on I/O or wait function exceeded */ | |
| ERR = (1 << ERR_NUM), /* Function call terminated on error */ | |
| device_status_mask = ERR | TIMO | END | CMPL | RQS, | |
| board_status_mask = ERR | TIMO | END | CMPL | SPOLL | | |
| EVENT | LOK | REM | CIC | ATN | TACS | LACS | DTAS | DCAS | SRQI, | |
| }; | |
| /* End-of-string (EOS) modes for use with ibeos */ | |
| enum eos_flags { | |
| EOS_MASK = 0x1c00, | |
| REOS = 0x0400, /* Terminate reads on EOS */ | |
| XEOS = 0x800, /* assert EOI when EOS char is sent */ | |
| BIN = 0x1000 /* Do 8-bit compare on EOS */ | |
| }; | |
| /* GPIB Bus Control Lines bit vector */ | |
| enum bus_control_line { | |
| VALID_DAV = 0x01, | |
| VALID_NDAC = 0x02, | |
| VALID_NRFD = 0x04, | |
| VALID_IFC = 0x08, | |
| VALID_REN = 0x10, | |
| VALID_SRQ = 0x20, | |
| VALID_ATN = 0x40, | |
| VALID_EOI = 0x80, | |
| VALID_ALL = 0xff, | |
| BUS_DAV = 0x0100, /* DAV line status bit */ | |
| BUS_NDAC = 0x0200, /* NDAC line status bit */ | |
| BUS_NRFD = 0x0400, /* NRFD line status bit */ | |
| BUS_IFC = 0x0800, /* IFC line status bit */ | |
| BUS_REN = 0x1000, /* REN line status bit */ | |
| BUS_SRQ = 0x2000, /* SRQ line status bit */ | |
| BUS_ATN = 0x4000, /* ATN line status bit */ | |
| BUS_EOI = 0x8000 /* EOI line status bit */ | |
| }; | |
| enum ppe_bits { | |
| PPC_DISABLE = 0x10, | |
| PPC_SENSE = 0x8, /* parallel poll sense bit */ | |
| PPC_DIO_MASK = 0x7 | |
| }; | |
| enum { | |
| request_service_bit = 0x40, | |
| }; | |
| enum gpib_events { | |
| EVENT_NONE = 0, | |
| EVENT_DEV_TRG = 1, | |
| EVENT_DEV_CLR = 2, | |
| EVENT_IFC = 3 | |
| }; | |
| #endif /* _GPIB_H */ | |