1 /* $NetBSD: sbscnvar.h,v 1.1 2002/03/05 23:46:43 simonb Exp $ */ 2 3 /* 4 * Copyright 2000, 2001 5 * Broadcom Corporation. All rights reserved. 6 * 7 * This software is furnished under license and may be used and copied only 8 * in accordance with the following terms and conditions. Subject to these 9 * conditions, you may download, copy, install, use, modify and distribute 10 * modified or unmodified copies of this software in source and/or binary 11 * form. No title or ownership is transferred hereby. 12 * 13 * 1) Any source code used, modified or distributed must reproduce and 14 * retain this copyright notice and list of conditions as they appear in 15 * the source file. 16 * 17 * 2) No right is granted to use any trade name, trademark, or logo of 18 * Broadcom Corporation. Neither the "Broadcom Corporation" name nor any 19 * trademark or logo of Broadcom Corporation may be used to endorse or 20 * promote products derived from this software without the prior written 21 * permission of Broadcom Corporation. 22 * 23 * 3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR IMPLIED 24 * WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF 25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR 26 * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL BROADCOM BE LIABLE 27 * FOR ANY DAMAGES WHATSOEVER, AND IN PARTICULAR, BROADCOM SHALL NOT BE 28 * LIABLE FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 29 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 30 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 31 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 32 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 33 * OR OTHERWISE), EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 */ 35 36 /* from: $NetBSD: comvar.h,v 1.32 2000/03/23 07:01:30 thorpej Exp */ 37 38 /* 39 * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. 40 * 41 * Redistribution and use in source and binary forms, with or without 42 * modification, are permitted provided that the following conditions 43 * are met: 44 * 1. Redistributions of source code must retain the above copyright 45 * notice, this list of conditions and the following disclaimer. 46 * 2. Redistributions in binary form must reproduce the above copyright 47 * notice, this list of conditions and the following disclaimer in the 48 * documentation and/or other materials provided with the distribution. 49 * 3. All advertising materials mentioning features or use of this software 50 * must display the following acknowledgement: 51 * This product includes software developed by Christopher G. Demetriou 52 * for the NetBSD Project. 53 * 4. The name of the author may not be used to endorse or promote products 54 * derived from this software without specific prior written permission 55 * 56 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 57 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 58 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 59 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 60 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 61 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 62 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 63 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 64 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 65 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 66 */ 67 68 #include "rnd.h" 69 #if NRND > 0 && defined(RND_SBSCN) 70 #include <sys/rnd.h> 71 #endif 72 73 #include <sys/callout.h> 74 75 #define SBSCN_CHAN(x) ((minor(x) & 0x00001) >> 0) 76 #define SBSCN_UNIT(x) ((minor(x) & 0x7fffe) >> 1) 77 #define SBSCN_DIALOUT(x) ((minor(x) & 0x80000) != 0) 78 79 #define SBSCN_TOLERANCE 30 /* baud rate tolerance, in 0.1% units */ 80 81 int sbscn_cnattach(u_long addr, int chan, int rate, 82 tcflag_t cflag); 83 #ifdef KGDB 84 int sbscn_kgdb_attach(u_long addr, int chan, int rate, 85 tcflag_t cflag); 86 #endif 87 int sbscn_is_console(u_long addr, int chan); 88 89 /* Hardware flag masks */ 90 #define SBSCN_HW_CONSOLE 0x01 91 #define SBSCN_HW_KGDB 0x02 92 #define SBSCN_HW_DEV_OK 0x04 93 94 /* Buffer size for character buffer */ 95 #define SBSCN_RING_SIZE 2048 96 97 struct sbscn_channel { 98 int ch_num; 99 struct sbscn_softc *ch_sc; 100 struct tty *ch_tty; /* tty struct */ 101 void *ch_intrhand; /* interrupt registration handle */ 102 void *ch_si; /* softintr cookie */ 103 struct callout ch_diag_callout; /* callout for diagnostic msgs */ 104 105 volatile char *ch_base; /* kseg1 addr of channel regs */ 106 volatile char *ch_isr_base; /* kseg1 addr of channel ISR */ 107 volatile char *ch_imr_base; /* kseg1 addr of channel IMR */ 108 #ifdef XXXCGDnotyet 109 volatile char *ch_inchg_base; /* kseg1 addr of channel inport-chg */ 110 #endif 111 112 u_int ch_overflows; 113 u_int ch_floods; 114 u_int ch_errors; 115 116 u_int ch_hwflags; 117 u_int ch_swflags; 118 119 u_int ch_r_hiwat; 120 u_int ch_r_lowat; 121 122 /* receive ring buffer management */ 123 u_char *volatile ch_rbget; 124 u_char *volatile ch_rbput; 125 volatile u_int ch_rbavail; 126 u_char *ch_rbuf; 127 u_char *ch_ebuf; 128 129 /* transmit buffer management */ 130 u_char *ch_tba; 131 u_int ch_tbc; 132 u_int ch_heldtbc; 133 134 volatile u_int ch_rx_flags; 135 #define RX_TTY_BLOCKED 0x01 136 #define RX_TTY_OVERFLOWED 0x02 137 #define RX_IBUF_BLOCKED 0x04 138 #define RX_IBUF_OVERFLOWED 0x08 139 #define RX_ANY_BLOCK 0x0f 140 volatile u_int ch_tx_busy; 141 volatile u_int ch_tx_done; 142 volatile u_int ch_tx_stopped; 143 volatile u_int ch_st_check; 144 volatile u_int ch_rx_ready; 145 146 volatile u_char ch_heldchange; 147 148 volatile u_int ch_brc; 149 volatile u_char ch_imr; 150 volatile u_char ch_iports, ch_iports_delta; 151 volatile u_char ch_oports, ch_oports_active; 152 volatile u_char ch_mode1, ch_mode2; 153 154 u_char ch_i_dcd, ch_i_cts, ch_i_dsr, ch_i_ri, ch_i_mask; 155 u_char ch_o_dtr, ch_o_rts, ch_o_mask; 156 157 u_char ch_i_dcd_pin, ch_i_cts_pin, ch_i_dsr_pin, ch_i_ri_pin; 158 u_char ch_o_dtr_pin, ch_o_rts_pin; 159 160 #if NRND > 0 && defined(RND_SBSCN) 161 rndsource_element_t ch_rnd_source; 162 #endif 163 }; 164 165 struct sbscn_softc { 166 struct device sc_dev; /* base device */ 167 168 /* shared data structures */ 169 u_long sc_addr; /* phys addr of DUART XXX bus_space */ 170 171 struct sbscn_channel sc_channels[2]; 172 }; 173 174 /* Macros to clear/set/test flags. */ 175 #define SET(t, f) (t) |= (f) 176 #define CLR(t, f) (t) &= ~(f) 177 #define ISSET(t, f) ((t) & (f)) 178