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