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