mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
Move the gpib drivers out of staging and into the "real" part of the kernel. This entails: - Remove the gpib Kconfig menu and Makefile build rule from staging. - Remove gpib/uapi from the header file search path in subdir-ccflags of the gpib Makefile - move the gpib/uapi files to include/uapi/linux - Move the gpib tree out of staging to drivers. - Remove the word "Linux" from the gpib Kconfig file. - Add the gpib Kconfig menu and Makefile build rule to drivers Signed-off-by: Dave Penkler <dpenkler@gmail.com> Link: https://patch.msgid.link/20251117144021.23569-5-dpenkler@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
219 lines
5.3 KiB
C
219 lines
5.3 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
/***************************************************************************
|
|
* copyright : (C) 2002 by Frank Mori Hess
|
|
***************************************************************************/
|
|
|
|
#ifndef _NEC7210_REGISTERS_H
|
|
#define _NEC7210_REGISTERS_H
|
|
|
|
enum nec7210_chipset {
|
|
NEC7210, // The original
|
|
TNT4882, // NI
|
|
NAT4882, // NI
|
|
CB7210, // measurement computing
|
|
IOT7210, // iotech
|
|
IGPIB7210, // Ines
|
|
TNT5004, // NI (minor differences to TNT4882)
|
|
};
|
|
|
|
/*
|
|
* nec7210 register numbers (might need to be multiplied by
|
|
* a board-dependent offset to get actually io address offset)
|
|
*/
|
|
// write registers
|
|
enum nec7210_write_regs {
|
|
CDOR, // command/data out
|
|
IMR1, // interrupt mask 1
|
|
IMR2, // interrupt mask 2
|
|
SPMR, // serial poll mode
|
|
ADMR, // address mode
|
|
AUXMR, // auxiliary mode
|
|
ADR, // address
|
|
EOSR, // end-of-string
|
|
|
|
// nec7210 has 8 registers
|
|
nec7210_num_registers = 8,
|
|
};
|
|
|
|
// read registers
|
|
enum nec7210_read_regs {
|
|
DIR, // data in
|
|
ISR1, // interrupt status 1
|
|
ISR2, // interrupt status 2
|
|
SPSR, // serial poll status
|
|
ADSR, // address status
|
|
CPTR, // command pass though
|
|
ADR0, // address 1
|
|
ADR1, // address 2
|
|
};
|
|
|
|
// bit definitions common to nec-7210 compatible registers
|
|
|
|
// ISR1: interrupt status register 1
|
|
enum isr1_bits {
|
|
HR_DI = (1 << 0),
|
|
HR_DO = (1 << 1),
|
|
HR_ERR = (1 << 2),
|
|
HR_DEC = (1 << 3),
|
|
HR_END = (1 << 4),
|
|
HR_DET = (1 << 5),
|
|
HR_APT = (1 << 6),
|
|
HR_CPT = (1 << 7),
|
|
};
|
|
|
|
// IMR1: interrupt mask register 1
|
|
enum imr1_bits {
|
|
HR_DIIE = (1 << 0),
|
|
HR_DOIE = (1 << 1),
|
|
HR_ERRIE = (1 << 2),
|
|
HR_DECIE = (1 << 3),
|
|
HR_ENDIE = (1 << 4),
|
|
HR_DETIE = (1 << 5),
|
|
HR_APTIE = (1 << 6),
|
|
HR_CPTIE = (1 << 7),
|
|
};
|
|
|
|
// ISR2, interrupt status register 2
|
|
enum isr2_bits {
|
|
HR_ADSC = (1 << 0),
|
|
HR_REMC = (1 << 1),
|
|
HR_LOKC = (1 << 2),
|
|
HR_CO = (1 << 3),
|
|
HR_REM = (1 << 4),
|
|
HR_LOK = (1 << 5),
|
|
HR_SRQI = (1 << 6),
|
|
HR_INT = (1 << 7),
|
|
};
|
|
|
|
// IMR2, interrupt mask register 2
|
|
enum imr2_bits {
|
|
// all the bits in this register that enable interrupts
|
|
IMR2_ENABLE_INTR_MASK = 0x4f,
|
|
HR_ACIE = (1 << 0),
|
|
HR_REMIE = (1 << 1),
|
|
HR_LOKIE = (1 << 2),
|
|
HR_COIE = (1 << 3),
|
|
HR_DMAI = (1 << 4),
|
|
HR_DMAO = (1 << 5),
|
|
HR_SRQIE = (1 << 6),
|
|
};
|
|
|
|
// SPSR, serial poll status register
|
|
enum spsr_bits {
|
|
HR_PEND = (1 << 6),
|
|
};
|
|
|
|
// SPMR, serial poll mode register
|
|
enum spmr_bits {
|
|
HR_RSV = (1 << 6),
|
|
};
|
|
|
|
// ADSR, address status register
|
|
enum adsr_bits {
|
|
HR_MJMN = (1 << 0),
|
|
HR_TA = (1 << 1),
|
|
HR_LA = (1 << 2),
|
|
HR_TPAS = (1 << 3),
|
|
HR_LPAS = (1 << 4),
|
|
HR_SPMS = (1 << 5),
|
|
HR_NATN = (1 << 6),
|
|
HR_CIC = (1 << 7),
|
|
};
|
|
|
|
// ADMR, address mode register
|
|
enum admr_bits {
|
|
HR_ADM0 = (1 << 0),
|
|
HR_ADM1 = (1 << 1),
|
|
HR_TRM0 = (1 << 4),
|
|
HR_TRM1 = (1 << 5),
|
|
HR_TRM_EOIOE_TRIG = 0,
|
|
HR_TRM_CIC_TRIG = HR_TRM0,
|
|
HR_TRM_CIC_EOIOE = HR_TRM1,
|
|
HR_TRM_CIC_PE = HR_TRM0 | HR_TRM1,
|
|
HR_LON = (1 << 6),
|
|
HR_TON = (1 << 7),
|
|
};
|
|
|
|
// ADR, bits used in address0, address1 and address0/1 registers
|
|
enum adr_bits {
|
|
ADDRESS_MASK = 0x1f, /* mask to specify lower 5 bits */
|
|
HR_DL = (1 << 5),
|
|
HR_DT = (1 << 6),
|
|
HR_ARS = (1 << 7),
|
|
};
|
|
|
|
// ADR1, address1 register
|
|
enum adr1_bits {
|
|
HR_EOI = (1 << 7),
|
|
};
|
|
|
|
// AUXMR, auxiliary mode register
|
|
enum auxmr_bits {
|
|
ICR = 0x20,
|
|
PPR = 0x60,
|
|
AUXRA = 0x80,
|
|
AUXRB = 0xa0,
|
|
AUXRE = 0xc0,
|
|
};
|
|
|
|
// auxra, auxiliary register A
|
|
enum auxra_bits {
|
|
HR_HANDSHAKE_MASK = 0x3,
|
|
HR_HLDA = 0x1,
|
|
HR_HLDE = 0x2,
|
|
HR_LCM = 0x3, /* auxra listen continuous */
|
|
HR_REOS = 0x4,
|
|
HR_XEOS = 0x8,
|
|
HR_BIN = 0x10,
|
|
};
|
|
|
|
// auxrb, auxiliary register B
|
|
enum auxrb_bits {
|
|
HR_CPTE = (1 << 0),
|
|
HR_SPEOI = (1 << 1),
|
|
HR_TRI = (1 << 2),
|
|
HR_INV = (1 << 3),
|
|
HR_ISS = (1 << 4),
|
|
};
|
|
|
|
enum auxre_bits {
|
|
HR_DAC_HLD_DCAS = 0x1, /* perform DAC holdoff on receiving clear */
|
|
HR_DAC_HLD_DTAS = 0x2, /* perform DAC holdoff on receiving trigger */
|
|
};
|
|
|
|
// parallel poll register
|
|
enum ppr_bits {
|
|
HR_PPS = (1 << 3),
|
|
HR_PPU = (1 << 4),
|
|
};
|
|
|
|
/* 7210 Auxiliary Commands */
|
|
enum aux_cmds {
|
|
AUX_PON = 0x0, /* Immediate Execute pon */
|
|
AUX_CPPF = 0x1, /* Clear Parallel Poll Flag */
|
|
AUX_CR = 0x2, /* Chip Reset */
|
|
AUX_FH = 0x3, /* Finish Handshake */
|
|
AUX_TRIG = 0x4, /* Trigger */
|
|
AUX_RTL = 0x5, /* Return to local */
|
|
AUX_SEOI = 0x6, /* Send EOI */
|
|
AUX_NVAL = 0x7, /* Non-Valid Secondary Command or Address */
|
|
AUX_SPPF = 0x9, /* Set Parallel Poll Flag */
|
|
AUX_VAL = 0xf, /* Valid Secondary Command or Address */
|
|
AUX_GTS = 0x10, /* Go To Standby */
|
|
AUX_TCA = 0x11, /* Take Control Asynchronously */
|
|
AUX_TCS = 0x12, /* Take Control Synchronously */
|
|
AUX_LTN = 0x13, /* Listen */
|
|
AUX_DSC = 0x14, /* Disable System Control */
|
|
AUX_CIFC = 0x16, /* Clear IFC */
|
|
AUX_CREN = 0x17, /* Clear REN */
|
|
AUX_TCSE = 0x1a, /* Take Control Synchronously on End */
|
|
AUX_LTNC = 0x1b, /* Listen in Continuous Mode */
|
|
AUX_LUN = 0x1c, /* Local Unlisten */
|
|
AUX_EPP = 0x1d, /* Execute Parallel Poll */
|
|
AUX_SIFC = 0x1e, /* Set IFC */
|
|
AUX_SREN = 0x1f, /* Set REN */
|
|
};
|
|
|
|
#endif //_NEC7210_REGISTERS_H
|