cd1190reg.h revision 1.3
11.3Swiz/* $NetBSD: cd1190reg.h,v 1.3 2003/11/02 11:07:45 wiz Exp $ */ 21.1Spk/* 31.1Spk * Copyright (c) 1998 Iain Hibbert. 41.1Spk * All rights reserved. 51.1Spk * 61.1Spk * Redistribution and use in source and binary forms, with or without 71.1Spk * modification, are permitted provided that the following conditions 81.1Spk * are met: 91.1Spk * 1. Redistributions of source code must retain the above copyright 101.1Spk * notice, this list of conditions and the following disclaimer. 111.1Spk * 2. Redistributions in binary form must reproduce the above copyright 121.1Spk * notice, this list of conditions and the following disclaimer in the 131.1Spk * documentation and/or other materials provided with the distribution. 141.1Spk * 3. The name Iain Hibbert may not be used to endorse or promote products 151.1Spk * derived from this software without specific prior written permission. 161.1Spk * 171.1Spk * THIS SOFTWARE IS PROVIDED BY ``AS IS'' AND ANY EXPRESS OR IMPLIED 181.1Spk * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 191.1Spk * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 201.1Spk * NO EVENT SHALL I BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 211.1Spk * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 221.1Spk * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 231.1Spk * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 241.1Spk * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 251.1Spk * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 261.1Spk * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 271.1Spk */ 281.1Spk 291.1Spk/* 301.1Spk * Definitions for Cirrus Logic CD1190 parallel chips. 311.1Spk */ 321.1Spk 331.1Spk/* ACK Width Register */ 341.1Spk#define CD1190_AWR 0x03 351.1Spk 361.1Spk/* Controller Command Register */ 371.1Spk#define CD1190_CCR 0x0b 381.1Spk#define CD1190_CCR_CGC (1<<7) /* Change Global Config Command */ 391.1Spk#define CD1190_CCR_CGC_RESET (1<<0) /* CGC Reset Command */ 401.1Spk#define CD1190_CCR_PAR (1<<6) /* Parallel Command */ 411.1Spk#define CD1190_CCR_PAR_DISABLE (1<<2) /* PAR Parallel Disable */ 421.1Spk#define CD1190_CCR_PAR_FLUSH (1<<1) /* PAR Flush FIFO */ 431.1Spk#define CD1190_CCR_PAR_ENABLE (1<<0) /* PAR Parallel Enable */ 441.1Spk#define CD1190_CCR_SIG (1<<5) /* Signal Command */ 451.1Spk#define CD1190_CCR_SIG_SET_BUSY (1<<2) /* SIG Set Busy Output */ 461.1Spk#define CD1190_CCR_SIG_ACK (1<<1) /* SIG Pulse ACK Output */ 471.1Spk#define CD1190_CCR_SIG_CLR_BUSY (1<<0) /* SIG Clear Busy Output */ 481.1Spk#define CD1190_CCR_TIM (1<<4) /* Timer Command */ 491.1Spk#define CD1190_CCR_TIM_ENABLE (1<<3) /* Timer Enabled */ 501.1Spk 511.1Spk/* Data Time-0ut Register */ 521.1Spk#define CD1190_DTR 0x09 531.1Spk 541.1Spk/* End Of Service Request Register */ 551.1Spk#define CD1190_ESR 0x10 561.1Spk 571.1Spk/* FIFO Count Register */ 581.1Spk#define CD1190_FCR 0x0e 591.1Spk 601.1Spk/* FIFO Data Register */ 611.1Spk#define CD1190_FDR 0x12 621.1Spk 631.1Spk/* Firmware Revision Register */ 641.1Spk#define CD1190_FRR 0x0f 651.1Spk 661.1Spk/* FIFO Threshold Register */ 671.1Spk#define CD1190_FTR 0x08 681.1Spk 691.1Spk/* Global Config Register */ 701.1Spk#define CD1190_GCR 0x0a 711.1Spk#define CD1190_GCR_NOACK (1<<2) /* NO-ACK handshaking */ 721.1Spk#define CD1190_GCR_MODE (1<<1) /* Peripheral/Controller Mode */ 731.1Spk#define CD1190_GCR_DIR (1<<0) /* Input/Output Direction */ 741.1Spk 751.1Spk/* defines for variable CD1190_IO */ 761.1Spk#define CD1190_CO 0x00 771.1Spk#define CD1190_CI 0x01 781.1Spk#define CD1190_PO 0x02 791.1Spk#define CD1190_PI 0x03 801.1Spk 811.1Spk/* Interrupt Config Register */ 821.1Spk#define CD1190_ICR 0x01 831.1Spk#define CD1190_ICR_ENABLE (1<<7) /* Enable Interrupts */ 841.1Spk#define CD1190_ICR_ACK (1<<3) /* Enable: Unsolicited ACK */ 851.1Spk#define CD1190_ICR_FIFO (1<<2) /* Enable: FIFO Thresh/Time */ 861.1Spk#define CD1190_ICR_SIGNAL (1<<1) /* Enable: Signal Status */ 871.1Spk#define CD1190_ICR_TIMER (1<<0) /* Enable: Timer Expired */ 881.1Spk 891.1Spk/* Interrupt Status Register */ 901.1Spk#define CD1190_ISR 0x0c 911.3Swiz#define CD1190_ISR_INTERRUPT (1<<7) /* Interrupt Has Occurred */ 921.1Spk#define CD1190_ISR_ACK (1<<3) /* Unsolicited ACK */ 931.1Spk#define CD1190_ISR_FIFO (1<<2) /* FIFO Thresh/Time */ 941.1Spk#define CD1190_ISR_SIGNAL (1<<1) /* Signal Status */ 951.1Spk#define CD1190_ISR_TIMER (1<<0) /* Timer Expired */ 961.1Spk 971.1Spk/* Interrupt Vector Register */ 981.1Spk#define CD1190_IVR 0x00 991.1Spk 1001.1Spk/* Parallel Status Register */ 1011.1Spk#define CD1190_PSR 0x1c 1021.1Spk#define CD1190_PSR_ENP (1<<7) /* Parallel Enabled */ 1031.1Spk#define CD1190_PSR_BUSY (1<<6) /* Parallel Busy */ 1041.1Spk#define CD1190_PSR_ACK (1<<5) /* Parallel Acknowledge */ 1051.1Spk#define CD1190_PSR_STATUS (CD1190_PSR_ENP | CD1190_PSR_BUSY) 1061.1Spk#define CD1190_PSR_NORMAL CD1190_PSR_ENP 1071.1Spk 1081.1Spk/* Signal Control Register */ 1091.1Spk#define CD1190_SCR 0x1e 1101.1Spk#define CD1190_SCR_WRRD (1<<7) /* Read Only: Write/Read */ 1111.1Spk#define CD1190_SCR_IP3 (1<<6) /* Read Only: Input Line 3 */ 1121.1Spk#define CD1190_SCR_IP2 (1<<5) /* Read Only: Input Line 2 */ 1131.1Spk#define CD1190_SCR_IP1 (1<<4) /* Read Only: Input Line 1 */ 1141.1Spk#define CD1190_SCR_WR_WRRD (1<<3) /* Write/Read */ 1151.1Spk#define CD1190_SCR_OP3 (1<<2) /* Output Line 3 */ 1161.1Spk#define CD1190_SCR_OP2 (1<<1) /* Output Line 2 */ 1171.1Spk#define CD1190_SCR_OP1 (1<<0) /* Output Line 1 */ 1181.1Spk 1191.1Spk/* Input signals 1201.1Spk * 1211.1Spk * IP3 - *ERROR 1221.1Spk * IP2 - PAPER EMPTY / FAULT 1231.1Spk * IP1 - SELECT 1241.1Spk * WRRD - AFD 1251.1Spk * OP3 - SLIN 1261.1Spk * OP2 - *INIT / *RESET 1271.1Spk * OP1 - N/A 1281.1Spk */ 1291.1Spk#define CD1190_SCR_NOERROR CD1190_SCR_IP3 /* Printer Error (active low) */ 1301.1Spk#define CD1190_SCR_PE CD1190_SCR_IP2 /* Paper Empty */ 1311.1Spk#define CD1190_SCR_SELECT CD1190_SCR_IP1 /* Printer Select */ 1321.1Spk 1331.1Spk#define CD1190_SCR_STATUS (CD1190_SCR_IP3 | CD1190_SCR_IP2 | CD1190_SCR_IP1) 1341.1Spk 1351.2Spk/* Outout signals - Active High? 1361.1Spk * 1371.1Spk * IP3 - SLIN 1381.1Spk * IP2 - *INIT / *RESET 1391.1Spk * IP1 - N/A 1401.1Spk * WRRD - AFD 1411.1Spk * OP3 - *ERROR 1421.1Spk * OP2 - SELECT 1431.1Spk * OP1 - PAPER EMPTY / FAULT 1441.1Spk */ 1451.1Spk#define CD1190_SCR_RESET CD1190_SCR_OP2 1461.1Spk#define CD1190_SCR_SEL_IN CD1190_SCR_OP3 1471.1Spk 1481.1Spk/* Specification Register ZEROes */ 1491.1Spk#define CD1190_SR0 0x06 1501.1Spk#define CD1190_SR0_WRRD (1<<7) /* WR/RD 1 to 0 Change */ 1511.1Spk#define CD1190_SR0_IP3 (1<<6) /* IP3 1 to 0 Change */ 1521.1Spk#define CD1190_SR0_IP2 (1<<5) /* IP2 1 to 0 Change */ 1531.1Spk#define CD1190_SR0_IP1 (1<<4) /* IP1 1 to 0 Change */ 1541.1Spk 1551.1Spk/* Specification Register ONEs */ 1561.1Spk#define CD1190_SR1 0x07 1571.1Spk#define CD1190_SR1_WRRD (1<<7) /* WR/RD 0 to 1 Change */ 1581.1Spk#define CD1190_SR1_IP3 (1<<6) /* IP3 0 to 1 Change */ 1591.1Spk#define CD1190_SR1_IP2 (1<<5) /* IP2 0 to 1 Change */ 1601.1Spk#define CD1190_SR1_IP1 (1<<4) /* IP1 0 to 1 Change */ 1611.1Spk 1621.1Spk/* Signal Status Register */ 1631.1Spk#define CD1190_SSR 0x0d 1641.1Spk#define CD1190_SSR_WRRD (1<<7) /* WR/RD Change */ 1651.1Spk#define CD1190_SSR_IP3 (1<<6) /* IP3 Change */ 1661.1Spk#define CD1190_SSR_IP2 (1<<5) /* IP2 Change */ 1671.1Spk#define CD1190_SSR_IP1 (1<<4) /* IP1 Change */ 1681.1Spk 1691.1Spk/* Strobe Width Register */ 1701.1Spk#define CD1190_SWR 0x02 1711.1Spk 1721.1Spk/* Timer Multipler Register */ 1731.1Spk#define CD1190_TMR 0x05 1741.1Spk 1751.1Spk/* Timer Prescale Register */ 1761.1Spk#define CD1190_TPR 0x04 177