The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/clmpccreg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*  $NetBSD: clmpccreg.h,v 1.3 1999/11/28 12:23:18 scw Exp $ */
    2 
    3 /*-
    4  * Copyright (c) 1999 The NetBSD Foundation, Inc.
    5  * All rights reserved.
    6  *
    7  * This code is derived from software contributed to The NetBSD Foundation
    8  * by Steve C. Woodford.
    9  *
   10  * Redistribution and use in source and binary forms, with or without
   11  * modification, are permitted provided that the following conditions
   12  * are met:
   13  * 1. Redistributions of source code must retain the above copyright
   14  *    notice, this list of conditions and the following disclaimer.
   15  * 2. Redistributions in binary form must reproduce the above copyright
   16  *    notice, this list of conditions and the following disclaimer in the
   17  *    documentation and/or other materials provided with the distribution.
   18  * 3. All advertising materials mentioning features or use of this software
   19  *    must display the following acknowledgement:
   20  *        This product includes software developed by the NetBSD
   21  *        Foundation, Inc. and its contributors.
   22  * 4. Neither the name of The NetBSD Foundation nor the names of its
   23  *    contributors may be used to endorse or promote products derived
   24  *    from this software without specific prior written permission.
   25  *
   26  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
   27  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   28  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   29  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
   30  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   31  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   32  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   33  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   34  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   35  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
   36  * POSSIBILITY OF SUCH DAMAGE.
   37  */
   38 
   39 /*
   40  * Register definitions for the Cirrus Logic CD2400/CD2401
   41  * Four Channel Multi-Protocol Communications Controller.
   42  *
   43  * The values defined here are based on the August 1993 data book.
   44  * At the present time, this driver supports non-DMA async. mode only.
   45  */
   46 
   47 #ifndef __clmpccreg_h
   48 #define __clmpccreg_h
   49 
   50 /*
   51  * Register offsets depend on the level on the chip's BYTESWAP pin.
   52  * When BYTESWAP is low, Motorola byte alignment is in effect.
   53  * Otherwise, Intel byte alignment is in effect.
   54  * The values given here assume BYTESWAP is low. See 'sc_byteswap'
   55  * <dev/ic/clmpccvar.h>.
   56  */
   57 
   58 /* Number of bytes of FIFO (Rx & Tx) */
   59 #define CLMPCC_FIFO_DEPTH   16
   60 
   61 /* Global Registers */
   62 #define CLMPCC_REG_GFRCR    0x81    /* Global Firmware Revision Code Register */
   63 #define CLMPCC_REG_CAR      0xee    /* Channel Access Register */
   64 
   65 /* Option Registers */
   66 #define CLMPCC_REG_CMR      0x1b    /* Channel Mode Register */
   67 #define CLMPCC_REG_COR1     0x10    /* Channel Option Register #1 */
   68 #define CLMPCC_REG_COR2     0x17    /* Channel Option Register #2 */
   69 #define CLMPCC_REG_COR3     0x16    /* Channel Option Register #3 */
   70 #define CLMPCC_REG_COR4     0x15    /* Channel Option Register #4 */
   71 #define CLMPCC_REG_COR5     0x14    /* Channel Option Register #5 */
   72 #define CLMPCC_REG_COR6     0x18    /* Channel Option Register #6 */
   73 #define CLMPCC_REG_COR7     0x07    /* Channel Option Register #7 */
   74 #define CLMPCC_REG_SCHR1    0x1f    /* Special Character Register #1 */
   75 #define CLMPCC_REG_SCHR2    0x1e    /* Special Character Register #2 */
   76 #define CLMPCC_REG_SCHR3    0x1d    /* Special Character Register #3 */
   77 #define CLMPCC_REG_SCHR4    0x1c    /* Special Character Register #4 */
   78 #define CLMPCC_REG_SCRl     0x23    /* Special Character Range (low) */
   79 #define CLMPCC_REG_SCRh     0x22    /* Special Character Range (high) */
   80 #define CLMPCC_REG_LNXT     0x2e    /* LNext Character */
   81 #define CLMPCC_REG_RFAR1    0x1f    /* Receive Frame Address Register #1 */
   82 #define CLMPCC_REG_RFAR2    0x1e    /* Receive Frame Address Register #2 */
   83 #define CLMPCC_REG_RFAR3    0x1d    /* Receive Frame Address Register #3 */
   84 #define CLMPCC_REG_RFAR4    0x1c    /* Receive Frame Address Register #4 */
   85 #define CLMPCC_REG_CPSR     0xd6    /* CRC Polynomial Select Register */
   86 
   87 /* Bit Rate and Clock Option Registers */
   88 #define CLMPCC_REG_RBPR     0xcb    /* Receive Baud Rate Period Register */
   89 #define CLMPCC_REG_RCOR     0xc8    /* Receive Clock Options Register */
   90 #define CLMPCC_REG_TBPR     0xc3    /* Transmit Baud Rate Period Register */
   91 #define CLMPCC_REG_TCOR     0xc0    /* Transmit Clock Options Register */
   92 
   93 /* Channel Command and Status Registers */
   94 #define CLMPCC_REG_CCR      0x13    /* Channel Command Register */
   95 #define CLMPCC_REG_STCR     0x12    /* Special Transmit Command Register */
   96 #define CLMPCC_REG_CSR      0x1a    /* Channel Status Register */
   97 #define CLMPCC_REG_MSVR     0xde    /* Modem Signal Value Register */
   98 #define CLMPCC_REG_MSVR_RTS 0xde    /* Modem Signal Value Register (RTS) */
   99 #define CLMPCC_REG_MSVR_DTR 0xdf    /* Modem Signal Value Register (DTR) */
  100 
  101 /* Interrupt Registers */
  102 #define CLMPCC_REG_LIVR     0x09    /* Local Interrupt Vector Register */
  103 #define CLMPCC_REG_IER      0x11    /* Interrupt Enable Register */
  104 #define CLMPCC_REG_LICR     0x26    /* Local Interrupting Channel Register */
  105 #define CLMPCC_REG_STK      0xe2    /* Stack Register */
  106 
  107 /* Receive Interrupt Registers */
  108 #define CLMPCC_REG_RPILR    0xe1    /* Receive Priority Interrupt Level Reg */
  109 #define CLMPCC_REG_RIR      0xed    /* Receive Interrupt Register */
  110 #define CLMPCC_REG_RISR     0x88    /* Receive Interrupt Status Reg (16-bits) */
  111 #define CLMPCC_REG_RISRl    0x89    /* Receive Interrupt Status Reg (low) */
  112 #define CLMPCC_REG_RISRh    0x88    /* Receive Interrupt Status Reg (high) */
  113 #define CLMPCC_REG_RFOC     0x30    /* Receive FIFO Output Count */
  114 #define CLMPCC_REG_RDR      0xf8    /* Receive Data Register */
  115 #define CLMPCC_REG_REOIR    0x84    /* Receive End of Interrupt Register */
  116 
  117 /* Transmit Interrupt Registers */
  118 #define CLMPCC_REG_TPILR    0xe0    /* Transmit Priority Interrupt Level Reg */
  119 #define CLMPCC_REG_TIR      0xec    /* Transmit Interrupt Register */
  120 #define CLMPCC_REG_TISR     0x8a    /* Transmit Interrupt Status Register */
  121 #define CLMPCC_REG_TFTC     0x80    /* Transmit FIFO Transfer Count */
  122 #define CLMPCC_REG_TDR      0xf8    /* Transmit Data Register */
  123 #define CLMPCC_REG_TEOIR    0x85    /* Transmit End of Interrupt Register */
  124 
  125 /* Modem Interrupt Registers */
  126 #define CLMPCC_REG_MPILR    0xe3    /* Modem Priority Interrupt Level Reg */
  127 #define CLMPCC_REG_MIR      0xef    /* Modem Interrupt Register */
  128 #define CLMPCC_REG_MISR     0x8b    /* Modem (/Timer) Interrupt Status Reg */
  129 #define CLMPCC_REG_MEOIR    0x86    /* Modem End of Interrupt Register */
  130 
  131 /* DMA Registers */
  132 #define CLMPCC_REG_DMR      0xf6    /* DMA Mode Register (write only) */
  133 #define CLMPCC_REG_BERCNT   0x8e    /* Bus Error Retry Count */
  134 #define CLMPCC_REG_DMABSTS  0x19    /* DMA Buffer Status */
  135 
  136 /* DMA Receive Registers */
  137 #define CLMPCC_REG_ARBADRL  0x42    /* A Receive Buffer Address Lower (word) */
  138 #define CLMPCC_REG_ARBADRU  0x40    /* A Receive Buffer Address Upper (word) */
  139 #define CLMPCC_REG_BRBADRL  0x46    /* B Receive Buffer Address Lower (word) */
  140 #define CLMPCC_REG_BRBADRU  0x44    /* B Receive Buffer Address Upper (16bit) */
  141 #define CLMPCC_REG_ARBCNT   0x4a    /* A Receive Buffer Byte Count (word) */
  142 #define CLMPCC_REG_BRBCNT   0x48    /* B Receive Buffer Byte Count (word) */
  143 #define CLMPCC_REG_ARBSTS   0x4f    /* A Receive Buffer Status */
  144 #define CLMPCC_REG_BRBSTS   0x4e    /* B Receive Buffer Status */
  145 #define CLMPCC_REG_RCBADRL  0x3e    /* Receive Current Buff Addr Lower (word) */
  146 #define CLMPCC_REG_RCBADRU  0x3c    /* Receive Current Buff Addr Upper (word) */
  147 
  148 /* DMA Transmit Registers */
  149 #define CLMPCC_REG_ATBADRL  0x52    /* A Transmit Buffer Address Lower (word) */
  150 #define CLMPCC_REG_ATBADRU  0x50    /* A Transmit Buffer Address Upper (word) */
  151 #define CLMPCC_REG_BTBADRL  0x56    /* B Transmit Buffer Address Lower (word) */
  152 #define CLMPCC_REG_BTBADRU  0x54    /* B Transmit Buffer Address Upper (word) */
  153 #define CLMPCC_REG_ATBCNT   0x5a    /* A Transmit Buffer Byte Count (word) */
  154 #define CLMPCC_REG_BTBCNT   0x58    /* B Transmit Buffer Byte Count (word) */
  155 #define CLMPCC_REG_ATBSTS   0x5f    /* A Transmit Buffer Status */
  156 #define CLMPCC_REG_BTBSTS   0x5e    /* B Transmit Buffer Status */
  157 #define CLMPCC_REG_TCBADRL  0x3a    /* Transmit Current Buf Addr Lower (word) */
  158 #define CLMPCC_REG_TCBADRU  0x38    /* Transmit Current Buf Addr Upper (word) */
  159 
  160 /* Timer Registers */
  161 #define CLMPCC_REG_TPR      0xda    /* Timer Period Register */
  162 #define CLMPCC_REG_RTPR     0x24    /* Receive Timeout Period Register (word) */
  163 #define CLMPCC_REG_RTPRl    0x25    /* Receive Timeout Period Register (low) */
  164 #define CLMPCC_REG_RTPRh    0x24    /* Receive Timeout Period Register (high) */
  165 #define CLMPCC_REG_GT1      0x2a    /* General Timer 1 (word) */
  166 #define CLMPCC_REG_GT1l     0x2b    /* General Timer 1 (low) */
  167 #define CLMPCC_REG_GT1h     0x2a    /* General Timer 1 (high) */
  168 #define CLMPCC_REG_GT2      0x29    /* General Timer 2 */
  169 #define CLMPCC_REG_TTR      0x29    /* Transmit Timer Register */
  170 
  171 
  172 /* Channel Access Register */
  173 #define CLMPCC_CAR_MASK         0x03        /* Channel bit mask */
  174 
  175 /* Channel Mode Register */
  176 #define CLMPCC_CMR_RX_INT       (0 << 7)    /* Rx using interrupts */
  177 #define CLMPCC_CMR_RX_DMA       (1 << 7)    /* Rx using DMA */
  178 #define CLMPCC_CMR_TX_INT       (0 << 6)    /* Tx using interrupts */
  179 #define CLMPCC_CMR_TX_DMA       (1 << 6)    /* Tx using DMA */
  180 #define CLMPCC_CMR_HDLC         0x00        /* Select HDLC mode */
  181 #define CLMPCC_CMR_BISYNC       0x01        /* Select Bisync mode */
  182 #define CLMPCC_CMR_ASYNC        0x02        /* Select async mode */
  183 #define CLMPCC_CMR_X21          0x03        /* Select X.21 mode */
  184 
  185 /* Channel Option Register #1 (Async options) */
  186 #define CLMPCC_COR1_EVEN_PARITY (0 << 7)    /* Even parity */
  187 #define CLMPCC_COR1_ODD_PARITY  (1 << 7)    /* Odd parity */
  188 #define CLMPCC_COR1_NO_PARITY   (0 << 5)    /* No parity */
  189 #define CLMPCC_COR1_FORCE_PAR   (1 << 5)    /* Force parity */
  190 #define CLMPCC_COR1_NORM_PARITY (2 << 5)    /* Normal parity */
  191 #define CLMPCC_COR1_CHECK_PAR   (0 << 4)    /* Check parity */
  192 #define CLMPCC_COR1_IGNORE_PAR  (1 << 4)    /* Ignore parity */
  193 #define CLMPCC_COR1_CHAR_5BITS  0x04        /* 5 bits per character */
  194 #define CLMPCC_COR1_CHAR_6BITS  0x05        /* 6 bits per character */
  195 #define CLMPCC_COR1_CHAR_7BITS  0x06        /* 7 bits per character */
  196 #define CLMPCC_COR1_CHAR_8BITS  0x07        /* 8 bits per character */
  197 
  198 /* Channel Option Register #2 (Async options) */
  199 #define CLMPCC_COR2_IXM         (1 << 7)    /* Implied XON mode */
  200 #define CLMPCC_COR2_TxIBE       (1 << 6)    /* Transmit In-Band Flow Control */
  201 #define CLMPCC_COR2_ETC         (1 << 5)    /* Embedded Tx Command Enable */
  202 #define CLMPCC_COR2_RLM         (1 << 3)    /* Remote Loopback Mode */
  203 #define CLMPCC_COR2_RtsAO       (1 << 2)    /* RTS Automatic Output Enable */
  204 #define CLMPCC_COR2_CtsAE       (1 << 1)    /* CTS Automatic Enable */
  205 #define CLMPCC_COR2_DsrAE       (1 << 1)    /* DSR Automatic Enable */
  206 
  207 /* Embedded transmit commands */
  208 #define CLMPCC_ETC_MAGIC                0x00            /* Introduces a command */
  209 #define CLMPCC_ETC_SEND_BREAK   0x81            /* Send a BREAK character */
  210 #define CLMPCC_ETC_DELAY                0x82            /* Insert a delay */
  211 #define CLMPCC_ETC_STOP_BREAK   0x83            /* Stop sending BREAK */
  212 
  213 /* Channel Option Register #3 (Async options) */
  214 #define CLMPCC_COR3_ESCDE       (1 << 7)    /* Ext Special Char Detect Enab */
  215 #define CLMPCC_COR3_RngDE       (1 << 6)    /* Range Detect Enable */
  216 #define CLMPCC_COR3_FCT         (1 << 5)    /* Flow Ctrl Transparency Mode */
  217 #define CLMPCC_COR3_SCDE        (1 << 4)    /* Special Character Detection */
  218 #define CLMPCC_COR3_SpIstp      (1 << 3)    /* Special Character I Strip */
  219 #define CLMPCC_COR3_STOP_1      0x02        /* 1 Stop Bit */
  220 #define CLMPCC_COR3_STOP_1_5    0x03        /* 1.5 Stop Bits */
  221 #define CLMPCC_COR3_STOP_2      0x04        /* 2 Stop Bits */
  222 
  223 /* Channel Option Register #4 */
  224 #define CLMPCC_COR4_DSRzd       (1 << 7)    /* Detect 1->0 transition on DSR */
  225 #define CLMPCC_COR4_CDzd        (1 << 6)    /* Detect 1->0 transition on CD */
  226 #define CLMPCC_COR4_CTSzd       (1 << 5)    /* Detect 1->0 transition on CTS */
  227 #define CLMPCC_COR4_FIFO_MASK   0x0f        /* FIFO Threshold bits */
  228 #define CLMPCC_COR4_FIFO_LOW    1
  229 #define CLMPCC_COR4_FIFO_MED    4
  230 #define CLMPCC_COR4_FIFO_HIGH   8
  231 
  232 /* Channel Option Register #5 */
  233 #define CLMPCC_COR5_DSRod       (1 << 7)    /* Detect 0->1 transition on DSR */
  234 #define CLMPCC_COR5_CDod        (1 << 6)    /* Detect 0->1 transition on CD */
  235 #define CLMPCC_COR5_CTSod       (1 << 5)    /* Detect 0->1 transition on CTS */
  236 #define CLMPCC_COR5_FLOW_MASK   0x0f        /* Rx Flow Control FIFO Threshold */
  237 #define CLMPCC_COR5_FLOW_NORM   8
  238 
  239 /* Channel Option Register #6 (Async options) */
  240 #define CLMPCC_COR6_RX_CRNL     0x00        /* No special action on CR or NL */
  241 #define CLMPCC_COR6_BRK_EXCEPT  (0 << 3)    /* Exception interrupt on BREAK */
  242 #define CLMPCC_COR6_BRK_2_NULL  (1 << 3)    /* Translate BREAK to NULL char */
  243 #define CLMPCC_COR6_BRK_DISCARD (3 << 3)    /* Discard BREAK characters */
  244 #define CLMPCC_COR6_PF_EXCEPT   0x00        /* Exception irq on parity/frame */
  245 #define CLMPCC_COR6_PF_2_NULL   0x01        /* Translate parity/frame to NULL */
  246 #define CLMPCC_COR6_PF_IGNORE   0x02        /* Ignore error */
  247 #define CLMPCC_COR6_PF_DISCARD  0x03        /* Discard character */
  248 #define CLMPCC_COR6_PF_TRANS    0x05        /* Translate to FF NULL + char */
  249 
  250 /* Channel Option Register #7 (Async options) */
  251 #define CLMPCC_COR7_ISTRIP      (1 << 7)    /* Strip MSB */
  252 #define CLMPCC_COR7_LNE         (1 << 6)    /* Enable LNext Option */
  253 #define CLMPCC_COR7_FCERR       (1 << 5)    /* Flow Control on Error Char */
  254 #define CLMPCC_COR7_TX_CRNL     0x00        /* No special action on NL or CR */
  255 
  256 /* Receive Clock Options Register */
  257 #define CLMPCC_RCOR_CLK(x)      (x)
  258 #define CLMPCC_RCOR_TLVAL       (1 << 7)    /* Transmit Line Value */
  259 #define CLMPCC_RCOR_DPLL_ENABLE (1 << 5)    /* Phase Locked Loop Enable */
  260 #define CLMPCC_RCOR_DPLL_NRZ    (0 << 3)    /* PLL runs in NRZ mode */
  261 #define CLMPCC_RCOR_DPLL_NRZI   (1 << 3)    /* PLL runs in NRZI mode */
  262 #define CLMPCC_RCOR_DPLL_MAN    (2 << 3)    /* PLL runs in Manchester mode */
  263 #define CLMPCC_RCOR_CLK_0       0x0         /* Rx Clock Source 'Clk0' */
  264 #define CLMPCC_RCOR_CLK_1       0x1         /* Rx Clock Source 'Clk1' */
  265 #define CLMPCC_RCOR_CLK_2       0x2         /* Rx Clock Source 'Clk2' */
  266 #define CLMPCC_RCOR_CLK_3       0x3         /* Rx Clock Source 'Clk3' */
  267 #define CLMPCC_RCOR_CLK_4       0x4         /* Rx Clock Source 'Clk4' */
  268 #define CLMPCC_RCOR_CLK_EXT     0x6         /* Rx Clock Source 'External' */
  269 
  270 /* Transmit Clock Options Register */
  271 #define CLMPCC_TCOR_CLK(x)      ((x) << 5)
  272 #define CLMPCC_TCOR_CLK_0       (0 << 5)    /* Tx Clock Source 'Clk0' */
  273 #define CLMPCC_TCOR_CLK_1       (1 << 5)    /* Tx Clock Source 'Clk1' */
  274 #define CLMPCC_TCOR_CLK_2       (2 << 5)    /* Tx Clock Source 'Clk2' */
  275 #define CLMPCC_TCOR_CLK_3       (3 << 5)    /* Tx Clock Source 'Clk3' */
  276 #define CLMPCC_TCOR_CLK_4       (4 << 5)    /* Tx Clock Source 'Clk4' */
  277 #define CLMPCC_TCOR_CLK_EXT     (6 << 5)    /* Tx Clock Source 'External' */
  278 #define CLMPCC_TCOR_CLK_RX      (7 << 5)    /* Tx Clock Source 'Same as Rx' */
  279 #define CLMPCC_TCOR_EXT_1X      (1 << 3)    /* Times 1 External Clock */
  280 #define CLMPCC_TCOR_LOCAL_LOOP  (1 << 1)    /* Enable Local Loopback */
  281 
  282 /* Special Transmit Command Register */
  283 #define CLMPCC_STCR_SSPC(n)     ((n) & 0x7) /* Send special character 'n' */
  284 #define CLMPCC_STCR_SND_SPC     (1 << 3)    /* Initiate send special char */
  285 #define CLMPCC_STCR_APPEND_COMP (1 << 5)    /* Append complete (Async DMA) */
  286 #define CLMPCC_STCR_ABORT_TX    (1 << 6)    /* Abort Tx (HDLC Mode only) */
  287 
  288 /* Channel Command Register */
  289 #define CLMPCC_CCR_T0_CLEAR     0x40        /* Type 0: Clear Channel */
  290 #define CLMPCC_CCR_T0_INIT      0x20        /* Type 0: Initialise Channel */
  291 #define CLMPCC_CCR_T0_RESET_ALL 0x10        /* Type 0: Reset All */
  292 #define CLMPCC_CCR_T0_TX_EN     0x08        /* Type 0: Transmitter Enable */
  293 #define CLMPCC_CCR_T0_TX_DIS    0x04        /* Type 0: Transmitter Disable */
  294 #define CLMPCC_CCR_T0_RX_EN     0x02        /* Type 0: Receiver Enable */
  295 #define CLMPCC_CCR_T0_RX_DIS    0x01        /* Type 0: Receiver Disable */
  296 #define CLMPCC_CCR_T1_CLR_TMR1  0xc0        /* Type 1: Clear Timer 1 */
  297 #define CLMPCC_CCR_T1_CLR_TMR2  0xa0        /* Type 1: Clear Timer 5 */
  298 #define CLMPCC_CCR_T1_CLR_RECV  0x90        /* Type 1: Clear Receiver */
  299 
  300 /* Channel Status Register (Async Mode) */
  301 #define CLMPCC_CSR_RX_ENABLED   (1 << 7)    /* Receiver Enabled */
  302 #define CLMPCC_CSR_RX_FLOW_OFF  (1 << 6)    /* Receive Flow Off */
  303 #define CLMPCC_CSR_RX_FLOW_ON   (1 << 5)    /* Receive Flow On */
  304 #define CLMPCC_CSR_TX_ENABLED   (1 << 3)    /* Transmitter Enabled */
  305 #define CLMPCC_CSR_TX_FLOW_OFF  (1 << 2)    /* Transmit Flow Off */
  306 #define CLMPCC_CSR_TX_FLOW_ON   (1 << 1)    /* Transmit Flow On */
  307 
  308 /* Modem Signal Value Register */
  309 #define CLMPCC_MSVR_DSR         (1 << 7)    /* Current State of DSR Input */
  310 #define CLMPCC_MSVR_CD          (1 << 6)    /* Current State of CD Input */
  311 #define CLMPCC_MSVR_CTS         (1 << 5)    /* Current State of CTS Input */
  312 #define CLMPCC_MSVR_DTR_OPT     (1 << 4)    /* DTR Option Select */
  313 #define CLMPCC_MSVR_PORT_ID     (1 << 2)    /* Device Type (2400 / 2401) */
  314 #define CLMPCC_MSVR_DTR         (1 << 1)    /* Current State of DTR Output */
  315 #define CLMPCC_MSVR_RTS         (1 << 0)    /* Current State of RTS Output */
  316 
  317 /* Local Interrupt Vector Register */
  318 #define CLMPCC_LIVR_TYPE_MASK   0x03        /* Type of Interrupt */
  319 #define CLMPCC_LIVR_EXCEPTION   0x0         /* Exception (DMA Completion) */
  320 #define CLMPCC_LIVR_MODEM       0x1         /* Modem Signal Change */
  321 #define CLMPCC_LIVR_TX          0x2         /* Transmit Data Interrupt */
  322 #define CLMPCC_LIVR_RX          0x3         /* Receive Data Interrupt */
  323 
  324 /* Interrupt Enable Register */
  325 #define CLMPCC_IER_MODEM        (1 << 7)    /* Modem Pin Change Detect */
  326 #define CLMPCC_IER_RET          (1 << 5)    /* Receive Exception Timeout */
  327 #define CLMPCC_IER_RX_FIFO      (1 << 3)    /* Rx FIFO Threshold Reached */
  328 #define CLMPCC_IER_TIMER        (1 << 2)    /* General Timer(s) Timeout */
  329 #define CLMPCC_IER_TX_EMPTY     (1 << 1)    /* Tx Empty */
  330 #define CLMPCC_IER_TX_FIFO      (1 << 0)    /* Tx FIFO Threshold Reached */
  331 
  332 /* Local Interrupting Channel Register */
  333 #define CLMPCC_LICR_MASK        0x0c        /* Mask for channel number */
  334 #define CLMPCC_LICR_CHAN(v)     (((v) & CLMPCC_LICR_MASK) >> 2)
  335 
  336 /* Receive Interrupt Register */
  337 #define CLMPCC_RIR_REN          (1 << 7)    /* Receive Enable */
  338 #define CLMPCC_RIR_RACT         (1 << 6)    /* Receive Active */
  339 #define CLMPCC_RIR_REOI         (1 << 5)    /* Receive End of Interrupt */
  340 #define CLMPCC_RIR_RCVT_MASK    0x0c
  341 #define CLMPCC_RIR_RCN_MASK     0x03
  342 
  343 /* Receive Interrupt Status Register, Low (Async option) */
  344 #define CLMPCC_RISR_TIMEOUT     (1 << 7)    /* Rx FIFO Empty and Timeout */
  345 #define CLMPCC_RISR_OVERRUN     (1 << 3)    /* Rx Overrun Error */
  346 #define CLMPCC_RISR_PARITY      (1 << 2)    /* Rx Parity Error */
  347 #define CLMPCC_RISR_FRAMING     (1 << 1)    /* Rx Framing Error */
  348 #define CLMPCC_RISR_BREAK       (1 << 0)    /* BREAK Detected */
  349 
  350 /* Receive FIFO Counter Register */
  351 #define CLMPCC_RFOC_MASK        0x1f        /* Mask for valid bits */
  352 
  353 /* Receive End of Interrupt Register */
  354 #define CLMPCC_REOIR_TERMBUFF   (1 << 7)    /* Terminate Current DMA Buffer */
  355 #define CLMPCC_REOIR_DIS_EX_CHR (1 << 6)    /* Discard Exception Char (DMA) */
  356 #define CLMPCC_REOIR_TMR2_SYNC  (1 << 5)    /* Set Timer 2 in Sync Mode */
  357 #define CLMPCC_REOIR_TMR1_SYNC  (1 << 4)    /* Set Timer 1 in Sync Mode */
  358 #define CLMPCC_REOIR_NO_TRANS   (1 << 3)    /* No Transfer of Data */
  359 
  360 /* Transmit Interrupt Register */
  361 #define CLMPCC_TIR_TEN          (1 << 7)    /* Transmit Enable */
  362 #define CLMPCC_TIR_TACT         (1 << 6)    /* Transmit Active */
  363 #define CLMPCC_TIR_TEOI         (1 << 5)    /* Transmit End of Interrupt */
  364 #define CLMPCC_TIR_TCVT_MASK    0x0c
  365 #define CLMPCC_TIR_TCN_MASK     0x03
  366 
  367 /* Transmit Interrupt Status Register (Async option) */
  368 #define CLMPCC_TISR_BERR        (1 << 7)    /* Bus Error (DMA) */
  369 #define CLMPCC_TISR_EOF         (1 << 6)    /* Transmit End of Frame (DMA) */
  370 #define CLMPCC_TISR_EOB         (1 << 5)    /* Transmit End of Buffer (DMA) */
  371 #define CLMPCC_TISR_UNDERRUN    (1 << 4)    /* Transmit Underrun (sync only) */
  372 #define CLMPCC_TISR_BUFF_ID     (1 << 3)    /* Buffer that has exception */
  373 #define CLMPCC_TISR_TX_EMPTY    (1 << 1)    /* Transmitter Empty */
  374 #define CLMPCC_TISR_TX_FIFO     (1 << 0)    /* Transmit FIFO Below Threshold */
  375 
  376 /* Transmit FIFO Transfer Count Register */
  377 #define CLMPCC_TFTC_MASK        0x1f        /* Mask for valid bits */
  378 
  379 /* Transmit End of Interrupt Register */
  380 #define CLMPCC_TEOIR_TERMBUFF   (1 << 7)    /* Terminate Current DMA Buffer */
  381 #define CLMPCC_TEOIR_END_OF_FRM (1 << 6)    /* End of Frame (sync mode) */
  382 #define CLMPCC_TEOIR_TMR2_SYNC  (1 << 5)    /* Set Timer 2 in Sync Mode */
  383 #define CLMPCC_TEOIR_TMR1_SYNC  (1 << 4)    /* Set Timer 1 in Sync Mode */
  384 #define CLMPCC_TEOIR_NO_TRANS   (1 << 3)    /* No Transfer of Data */
  385 
  386 /* Modem Interrupt Register */
  387 #define CLMPCC_MIR_MEN          (1 << 7)    /* Modem Enable */
  388 #define CLMPCC_MIR_MACT         (1 << 6)    /* Modem Active */
  389 #define CLMPCC_MIR_MEOI         (1 << 5)    /* Modem End of Interrupt */
  390 #define CLMPCC_MIR_MCVT_MASK    0x0c
  391 #define CLMPCC_MIR_MCN_MASK     0x03
  392 
  393 /* Modem/Timer Interrupt Status Register */
  394 #define CLMPCC_MISR_DSR         (1 << 7)    /* DSR Changed State */
  395 #define CLMPCC_MISR_CD          (1 << 6)    /* CD Changed State */
  396 #define CLMPCC_MISR_CTS         (1 << 5)    /* CTS Changed State */
  397 #define CLMPCC_MISR_TMR2        (1 << 1)    /* Timer 2 Timed Out */
  398 #define CLMPCC_MISR_TMR1        (1 << 0)    /* Timer 1 Timed Out */
  399 
  400 /* Modem End of Interrupt Register */
  401 #define CLMPCC_MEOIR_TMR2_SYNC  (1 << 5)    /* Set Timer 2 in Sync Mode */
  402 #define CLMPCC_MEOIR_TMR1_SYNC  (1 << 4)    /* Set Timer 1 in Sync Mode */
  403 
  404 /* Default value for CLMPCC_REG_RTPRl */
  405 #define CLMPCC_RTPR_DEFAULT     2           /* 2mS timeout period */
  406 
  407 /*
  408  * Return a value for the Receive Timer Prescaler register
  409  * for a given clock rate and number of milliseconds.
  410  * The minimum recommended value for this register is 0x0a.
  411  */
  412 #define CLMPCC_MSEC_TO_TPR(c,m) (((((c)/2048)/(1000/(m))) > 0x0a) ?     \
  413                                   (((c)/2048)/(1000/(m))) : 0x0a)
  414 
  415 #endif  /* __clmpccreg_h */

Cache object: 55781b4f16302abb07fc3fa5af4b5323


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.