Path: blob/master/drivers/gpib/include/tnt4882_registers.h
38185 views
/* SPDX-License-Identifier: GPL-2.0 */12/***************************************************************************3* copyright : (C) 2002, 2004 by Frank Mori Hess4***************************************************************************/56#ifndef _TNT4882_REGISTERS_H7#define _TNT4882_REGISTERS_H89// tnt4882 register offsets10enum {11ACCWR = 0x5,12// offset of auxiliary command register in 9914 mode13AUXCR = 0x6,14INTRT = 0x7,15// register number for auxiliary command register when swap bit is set (9914 mode)16SWAPPED_AUXCR = 0xa,17HSSEL = 0xd, // handshake select register18CNT2 = 0x9,19CNT3 = 0xb,20CFG = 0x10,21SASR = 0x1b,22IMR0 = 0x1d,23IMR3 = 0x12,24CNT0 = 0x14,25CNT1 = 0x16,26KEYREG = 0x17, // key control register (7210 mode only)27CSR = KEYREG,28FIFOB = 0x18,29FIFOA = 0x19,30CCR = 0x1a, // carry cycle register31CMDR = 0x1c, // command register32TIMER = 0x1e, // timer register3334STS1 = 0x10, // T488 Status Register 135STS2 = 0x1c, // T488 Status Register 236ISR0 = IMR0,37ISR3 = 0x1a, // T488 Interrupt Status Register 338BCR = 0x1f, // bus control/status register39BSR = BCR,40};4142enum {43tnt_pagein_offset = 0x11,44};4546/*============================================================*/4748/* TURBO-488 registers bit definitions */4950enum bus_control_status_bits {51BCSR_REN_BIT = 0x1,52BCSR_IFC_BIT = 0x2,53BCSR_SRQ_BIT = 0x4,54BCSR_EOI_BIT = 0x8,55BCSR_NRFD_BIT = 0x10,56BCSR_NDAC_BIT = 0x20,57BCSR_DAV_BIT = 0x40,58BCSR_ATN_BIT = 0x80,59};6061/* CFG -- Configuration Register (write only) */62enum cfg_bits {63TNT_COMMAND = 0x80, /* bytes are command bytes instead of data bytes64* (tnt4882 one-chip and newer only?)65*/66TNT_TLCHE = (1 << 6), /* halt transfer on imr0, imr1, or imr2 interrupt */67TNT_IN = (1 << 5), /* transfer is GPIB read */68TNT_A_B = (1 << 4), /* order to use fifos 1=fifo A first(big endian),69* 0=fifo b first(little endian)70*/71TNT_CCEN = (1 << 3), /* enable carry cycle */72TNT_TMOE = (1 << 2), /* enable CPU bus time limit */73TNT_TIM_BYTN = (1 << 1), /* tmot reg is: 1=125ns clocks, 0=num bytes */74TNT_B_16BIT = (1 << 0), /* 1=FIFO is 16-bit register, 0=8-bit */75};7677/* CMDR -- Command Register */78enum cmdr_bits {79CLRSC = 0x2, /* clear the system controller bit */80SETSC = 0x3, /* set the system controller bit */81GO = 0x4, /* start fifos */82STOP = 0x8, /* stop fifos */83RESET_FIFO = 0x10, /* reset the FIFOs */84SOFT_RESET = 0x22, /* issue a software reset */85HARD_RESET = 0x40 /* 500x only? */86};8788/* HSSEL -- handshake select register (write only) */89enum hssel_bits {90TNT_ONE_CHIP_BIT = 0x1,91NODMA = 0x10,92TNT_GO2SIDS_BIT = 0x20,93};9495/* IMR0 -- Interrupt Mode Register 0 */96enum imr0_bits {97TNT_SYNCIE_BIT = 0x1, /* handshake sync */98TNT_TOIE_BIT = 0x2, /* timeout */99TNT_ATNIE_BIT = 0x4, /* ATN interrupt */100TNT_IFCIE_BIT = 0x8, /* interface clear interrupt */101TNT_BTO_BIT = 0x10, /* byte timeout */102TNT_NLEN_BIT = 0x20, /* treat new line as EOS char */103TNT_STBOIE_BIT = 0x40, /* status byte out */104TNT_IMR0_ALWAYS_BITS = 0x80, /* always set this bit on write */105};106107/* ISR0 -- Interrupt Status Register 0 */108enum isr0_bits {109TNT_SYNC_BIT = 0x1, /* handshake sync */110TNT_TO_BIT = 0x2, /* timeout */111TNT_ATNI_BIT = 0x4, /* ATN interrupt */112TNT_IFCI_BIT = 0x8, /* interface clear interrupt */113TNT_EOS_BIT = 0x10, /* end of string */114TNT_NL_BIT = 0x20, /* new line receive */115TNT_STBO_BIT = 0x40, /* status byte out */116TNT_NBA_BIT = 0x80, /* new byte available */117};118119/* ISR3 -- Interrupt Status Register 3 (read only) */120enum isr3_bits {121HR_DONE = (1 << 0), /* transfer done */122HR_TLCI = (1 << 1), /* isr0, isr1, or isr2 interrupt asserted */123HR_NEF = (1 << 2), /* NOT empty fifo */124HR_NFF = (1 << 3), /* NOT full fifo */125HR_STOP = (1 << 4), /* fifo empty or STOP command issued */126HR_SRQI_CIC = (1 << 5), /* SRQ asserted and we are CIC (500x only?)*/127HR_INTR = (1 << 7), /* isr3 interrupt active */128};129130enum keyreg_bits {131MSTD = 0x20, /* enable 350ns T1 delay */132};133134/* STS1 -- Status Register 1 (read only) */135enum sts1_bits {136S_DONE = 0x80, /* DMA done */137S_SC = 0x40, /* is system controller */138S_IN = 0x20, /* DMA in (to memory) */139S_DRQ = 0x10, /* DRQ line (for diagnostics) */140S_STOP = 0x08, /* DMA stopped */141S_NDAV = 0x04, /* inverse of DAV */142S_HALT = 0x02, /* status of transfer machine */143S_GSYNC = 0x01, /* indicates if GPIB is in sync w I/O */144};145146/* STS2 -- Status Register 2 */147enum sts2_bits {148AFFN = (1 << 3), /* "A full FIFO NOT" (0=FIFO full) */149AEFN = (1 << 2), /* "A empty FIFO NOT" (0=FIFO empty) */150BFFN = (1 << 1), /* "B full FIFO NOT" (0=FIFO full) */151BEFN = (1 << 0), /* "B empty FIFO NOT" (0=FIFO empty) */152};153154// Auxiliary commands155enum tnt4882_aux_cmds {156AUX_9914 = 0x15, // switch to 9914 mode157AUX_REQT = 0x18,158AUX_REQF = 0x19,159AUX_PAGEIN = 0x50, // page in alternate registers160AUX_HLDI = 0x51, // rfd holdoff immediately161AUX_CLEAR_END = 0x55,162AUX_7210 = 0x99, // switch to 7210 mode163};164165enum tnt4882_aux_regs {166AUXRG = 0x40,167AUXRI = 0xe0,168};169170enum auxg_bits {171/* no talking when no listeners bit (prevents bus errors when data written at wrong time) */172NTNL_BIT = 0x8,173RPP2_BIT = 0x4, /* set/clear local rpp message */174CHES_BIT = 0x1, /*clear holdoff on end select bit*/175};176177enum auxi_bits {178SISB = 0x1, // static interrupt bits (don't clear isr1, isr2 on read)179PP2 = 0x4, // ignore remote parallel poll configuration180USTD = 0x8, // ultra short (1100 nanosec) T1 delay181};182183enum sasr_bits {184ACRDY_BIT = 0x4, /* acceptor ready state */185ADHS_BIT = 0x8, /* acceptor data holdoff state */186ANHS2_BIT = 0x10, /* acceptor not ready holdoff immediately state */187ANHS1_BIT = 0x20, /* acceptor not ready holdoff state */188AEHS_BIT = 0x40, /* acceptor end holdoff state */189};190191#endif // _TNT4882_REGISTERS_H192193194