| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- /* 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
|