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>
193 lines
5.7 KiB
C
193 lines
5.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
/***************************************************************************
|
|
* copyright : (C) 2002, 2004 by Frank Mori Hess
|
|
***************************************************************************/
|
|
|
|
#ifndef _TNT4882_REGISTERS_H
|
|
#define _TNT4882_REGISTERS_H
|
|
|
|
// tnt4882 register offsets
|
|
enum {
|
|
ACCWR = 0x5,
|
|
// offset of auxiliary command register in 9914 mode
|
|
AUXCR = 0x6,
|
|
INTRT = 0x7,
|
|
// register number for auxiliary command register when swap bit is set (9914 mode)
|
|
SWAPPED_AUXCR = 0xa,
|
|
HSSEL = 0xd, // handshake select register
|
|
CNT2 = 0x9,
|
|
CNT3 = 0xb,
|
|
CFG = 0x10,
|
|
SASR = 0x1b,
|
|
IMR0 = 0x1d,
|
|
IMR3 = 0x12,
|
|
CNT0 = 0x14,
|
|
CNT1 = 0x16,
|
|
KEYREG = 0x17, // key control register (7210 mode only)
|
|
CSR = KEYREG,
|
|
FIFOB = 0x18,
|
|
FIFOA = 0x19,
|
|
CCR = 0x1a, // carry cycle register
|
|
CMDR = 0x1c, // command register
|
|
TIMER = 0x1e, // timer register
|
|
|
|
STS1 = 0x10, // T488 Status Register 1
|
|
STS2 = 0x1c, // T488 Status Register 2
|
|
ISR0 = IMR0,
|
|
ISR3 = 0x1a, // T488 Interrupt Status Register 3
|
|
BCR = 0x1f, // bus control/status register
|
|
BSR = BCR,
|
|
};
|
|
|
|
enum {
|
|
tnt_pagein_offset = 0x11,
|
|
};
|
|
|
|
/*============================================================*/
|
|
|
|
/* TURBO-488 registers bit definitions */
|
|
|
|
enum bus_control_status_bits {
|
|
BCSR_REN_BIT = 0x1,
|
|
BCSR_IFC_BIT = 0x2,
|
|
BCSR_SRQ_BIT = 0x4,
|
|
BCSR_EOI_BIT = 0x8,
|
|
BCSR_NRFD_BIT = 0x10,
|
|
BCSR_NDAC_BIT = 0x20,
|
|
BCSR_DAV_BIT = 0x40,
|
|
BCSR_ATN_BIT = 0x80,
|
|
};
|
|
|
|
/* CFG -- Configuration Register (write only) */
|
|
enum cfg_bits {
|
|
TNT_COMMAND = 0x80, /* bytes are command bytes instead of data bytes
|
|
* (tnt4882 one-chip and newer only?)
|
|
*/
|
|
TNT_TLCHE = (1 << 6), /* halt transfer on imr0, imr1, or imr2 interrupt */
|
|
TNT_IN = (1 << 5), /* transfer is GPIB read */
|
|
TNT_A_B = (1 << 4), /* order to use fifos 1=fifo A first(big endian),
|
|
* 0=fifo b first(little endian)
|
|
*/
|
|
TNT_CCEN = (1 << 3), /* enable carry cycle */
|
|
TNT_TMOE = (1 << 2), /* enable CPU bus time limit */
|
|
TNT_TIM_BYTN = (1 << 1), /* tmot reg is: 1=125ns clocks, 0=num bytes */
|
|
TNT_B_16BIT = (1 << 0), /* 1=FIFO is 16-bit register, 0=8-bit */
|
|
};
|
|
|
|
/* CMDR -- Command Register */
|
|
enum cmdr_bits {
|
|
CLRSC = 0x2, /* clear the system controller bit */
|
|
SETSC = 0x3, /* set the system controller bit */
|
|
GO = 0x4, /* start fifos */
|
|
STOP = 0x8, /* stop fifos */
|
|
RESET_FIFO = 0x10, /* reset the FIFOs */
|
|
SOFT_RESET = 0x22, /* issue a software reset */
|
|
HARD_RESET = 0x40 /* 500x only? */
|
|
};
|
|
|
|
/* HSSEL -- handshake select register (write only) */
|
|
enum hssel_bits {
|
|
TNT_ONE_CHIP_BIT = 0x1,
|
|
NODMA = 0x10,
|
|
TNT_GO2SIDS_BIT = 0x20,
|
|
};
|
|
|
|
/* IMR0 -- Interrupt Mode Register 0 */
|
|
enum imr0_bits {
|
|
TNT_SYNCIE_BIT = 0x1, /* handshake sync */
|
|
TNT_TOIE_BIT = 0x2, /* timeout */
|
|
TNT_ATNIE_BIT = 0x4, /* ATN interrupt */
|
|
TNT_IFCIE_BIT = 0x8, /* interface clear interrupt */
|
|
TNT_BTO_BIT = 0x10, /* byte timeout */
|
|
TNT_NLEN_BIT = 0x20, /* treat new line as EOS char */
|
|
TNT_STBOIE_BIT = 0x40, /* status byte out */
|
|
TNT_IMR0_ALWAYS_BITS = 0x80, /* always set this bit on write */
|
|
};
|
|
|
|
/* ISR0 -- Interrupt Status Register 0 */
|
|
enum isr0_bits {
|
|
TNT_SYNC_BIT = 0x1, /* handshake sync */
|
|
TNT_TO_BIT = 0x2, /* timeout */
|
|
TNT_ATNI_BIT = 0x4, /* ATN interrupt */
|
|
TNT_IFCI_BIT = 0x8, /* interface clear interrupt */
|
|
TNT_EOS_BIT = 0x10, /* end of string */
|
|
TNT_NL_BIT = 0x20, /* new line receive */
|
|
TNT_STBO_BIT = 0x40, /* status byte out */
|
|
TNT_NBA_BIT = 0x80, /* new byte available */
|
|
};
|
|
|
|
/* ISR3 -- Interrupt Status Register 3 (read only) */
|
|
enum isr3_bits {
|
|
HR_DONE = (1 << 0), /* transfer done */
|
|
HR_TLCI = (1 << 1), /* isr0, isr1, or isr2 interrupt asserted */
|
|
HR_NEF = (1 << 2), /* NOT empty fifo */
|
|
HR_NFF = (1 << 3), /* NOT full fifo */
|
|
HR_STOP = (1 << 4), /* fifo empty or STOP command issued */
|
|
HR_SRQI_CIC = (1 << 5), /* SRQ asserted and we are CIC (500x only?)*/
|
|
HR_INTR = (1 << 7), /* isr3 interrupt active */
|
|
};
|
|
|
|
enum keyreg_bits {
|
|
MSTD = 0x20, /* enable 350ns T1 delay */
|
|
};
|
|
|
|
/* STS1 -- Status Register 1 (read only) */
|
|
enum sts1_bits {
|
|
S_DONE = 0x80, /* DMA done */
|
|
S_SC = 0x40, /* is system controller */
|
|
S_IN = 0x20, /* DMA in (to memory) */
|
|
S_DRQ = 0x10, /* DRQ line (for diagnostics) */
|
|
S_STOP = 0x08, /* DMA stopped */
|
|
S_NDAV = 0x04, /* inverse of DAV */
|
|
S_HALT = 0x02, /* status of transfer machine */
|
|
S_GSYNC = 0x01, /* indicates if GPIB is in sync w I/O */
|
|
};
|
|
|
|
/* STS2 -- Status Register 2 */
|
|
enum sts2_bits {
|
|
AFFN = (1 << 3), /* "A full FIFO NOT" (0=FIFO full) */
|
|
AEFN = (1 << 2), /* "A empty FIFO NOT" (0=FIFO empty) */
|
|
BFFN = (1 << 1), /* "B full FIFO NOT" (0=FIFO full) */
|
|
BEFN = (1 << 0), /* "B empty FIFO NOT" (0=FIFO empty) */
|
|
};
|
|
|
|
// Auxiliary commands
|
|
enum tnt4882_aux_cmds {
|
|
AUX_9914 = 0x15, // switch to 9914 mode
|
|
AUX_REQT = 0x18,
|
|
AUX_REQF = 0x19,
|
|
AUX_PAGEIN = 0x50, // page in alternate registers
|
|
AUX_HLDI = 0x51, // rfd holdoff immediately
|
|
AUX_CLEAR_END = 0x55,
|
|
AUX_7210 = 0x99, // switch to 7210 mode
|
|
};
|
|
|
|
enum tnt4882_aux_regs {
|
|
AUXRG = 0x40,
|
|
AUXRI = 0xe0,
|
|
};
|
|
|
|
enum auxg_bits {
|
|
/* no talking when no listeners bit (prevents bus errors when data written at wrong time) */
|
|
NTNL_BIT = 0x8,
|
|
RPP2_BIT = 0x4, /* set/clear local rpp message */
|
|
CHES_BIT = 0x1, /*clear holdoff on end select bit*/
|
|
};
|
|
|
|
enum auxi_bits {
|
|
SISB = 0x1, // static interrupt bits (don't clear isr1, isr2 on read)
|
|
PP2 = 0x4, // ignore remote parallel poll configuration
|
|
USTD = 0x8, // ultra short (1100 nanosec) T1 delay
|
|
};
|
|
|
|
enum sasr_bits {
|
|
ACRDY_BIT = 0x4, /* acceptor ready state */
|
|
ADHS_BIT = 0x8, /* acceptor data holdoff state */
|
|
ANHS2_BIT = 0x10, /* acceptor not ready holdoff immediately state */
|
|
ANHS1_BIT = 0x20, /* acceptor not ready holdoff state */
|
|
AEHS_BIT = 0x40, /* acceptor end holdoff state */
|
|
};
|
|
|
|
#endif // _TNT4882_REGISTERS_H
|