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