mfp.h revision 1.2 1 /* $NetBSD: mfp.h,v 1.2 1999/03/16 16:30:19 minoura Exp $ */
2
3 /*
4 *
5 * Copyright (c) 1998 NetBSD Foundation, Inc.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. All advertising materials mentioning features or use of this software
17 * must display the following acknowledgement:
18 * This product includes software developed by Charles D. Cranor and
19 * Washington University.
20 * 4. The name of the author may not be used to endorse or promote products
21 * derived from this software without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
24 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
27 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
28 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
32 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 */
34
35 #define MFP_ADDR 0x00e88000
36 #define MFP_INTR 0x40
37
38 struct mfp_softc {
39 struct device sc_dev;
40
41 bus_space_tag_t sc_bst;
42 bus_space_handle_t sc_bht;
43 int sc_intr;
44 };
45
46 /*
47 * MFP registers
48 */
49 #define MFP_GPIP 0x01
50 #define MFP_AER 0x03
51 #define MFP_DDR 0x05
52 #define MFP_IERA 0x07
53 #define MFP_IERB 0x09
54 #define MFP_IPRA 0x0b
55 #define MFP_IPRB 0x0d
56 #define MFP_ISRA 0x0f
57 #define MFP_ISRB 0x11
58 #define MFP_IMRA 0x13
59 #define MFP_IMRB 0x15
60 #define MFP_VR 0x17
61 #define MFP_TACR 0x19
62 #define MFP_TIMERA_STOP 0
63 #define MFP_TIMERA_RESET 0x10
64 #define MFP_TBCR 0x1b
65 #define MFP_TIMERB_STOP 0
66 #define MFP_TIMERB_RESET 0x10
67 #define MFP_TCDCR 0x1d
68 #define MFP_TADR 0x1f
69 #define MFP_TBDR 0x21
70 #define MFP_TCDR 0x23
71 #define MFP_TDDR 0x25
72 #define MFP_UCR 0x29
73 #define MFP_UCR_EVENP 0x02
74 #define MFP_UCR_PARENB 0x04
75 #define MFP_UCR_SYNCMODE 0x00
76 #define MFP_UCR_ONESB 0x08
77 #define MFP_UCR_1P5SB 0x10
78 #define MFP_UCR_TWOSB 0x18
79 #define MFP_UCR_RW_5 0x60
80 #define MFP_UCR_RW_6 0x40
81 #define MFP_UCR_RW_7 0x20
82 #define MFP_UCR_RW_8 0x00
83 #define MFP_UCR_CLKX16 0x80
84 #define MFP_RSR 0x2b
85 #define MFP_RSR_BF 0x80
86 #define MFP_RSR_OE 0x40
87 #define MFP_RSR_PE 0x20
88 #define MFP_RSR_FE 0x10
89 #define MFP_RSR_SS 0x02
90 #define MFP_RSR_RE 0x01
91 #define MFP_TSR 0x2d
92 #define MFP_TSR_BE 0x80
93 #define MFP_TSR_TE 0x01
94 #define MFP_UDR 0x2f
95
96
97 /*
98 * machine dependent definitions
99 */
100
101 /* GPIP port bitmap */
102 #define MFP_GPIP_HSYNC 0x80
103 #define MFP_GPIP_CRTC 0x40
104 #define MFP_GPIP_UNUSED1 0x20
105 #define MFP_GPIP_VDISP 0x10
106 #define MFP_GPIP_OPM 0x08
107 #define MFP_GPIP_FRONT_SWITCH 0x04
108 #define MFP_GPIP_EXPWON 0x02
109 #define MFP_GPIP_RTC_ALARM 0x01
110
111 /* interrupt A */
112 #define MFP_INTR_HSYNC 0x80
113 #define MFP_INTR_CRTC 0x40
114 #define MFP_INTR_TIMER_A 0x20
115 #define MFP_INTR_RCV_FULL 0x10
116 #define MFP_INTR_RCV_ERROR 0x08
117 #define MFP_INTR_XMIT_EMPTY 0x04
118 #define MFP_INTR_XMIT_ERROR 0x02
119 #define MFP_INTR_TIMER_B 0x01
120
121 /* interrupt B */
122 #define MFP_INTR_VDISP 0x40
123 #define MFP_INTR_TIMER_C 0x20
124 #define MFP_INTR_TIMER_D 0x10
125 #define MFP_INTR_OPM 0x08
126 #define MFP_INTR_FRONT_SWITCH 0x04
127 #define MFP_INTR_EXPWON 0x02
128 #define MFP_INTR_RTC_ALARM 0x01
129
130
131 /* XXX */
132 #include <arch/x68k/dev/intiovar.h>
133 #define mfp_base INTIO_ADDR(MFP_ADDR)
134 #define mfp_set_aer(a) \
135 mfp_base[MFP_AER] = ((u_int8_t) (a))
136 #define mfp_set_ddr(a) \
137 mfp_base[MFP_DDR] = ((u_int8_t) (a))
138 #define mfp_set_iera(a) \
139 mfp_base[MFP_IERA] = ((u_int8_t) (a))
140 #define mfp_set_ierb(a) \
141 mfp_base[MFP_IERB] = ((u_int8_t) (a))
142 #define mfp_set_ipra(a) \
143 mfp_base[MFP_IPRA] = ((u_int8_t) (a))
144 #define mfp_set_iprb(a) \
145 mfp_base[MFP_IPRB] = ((u_int8_t) (a))
146 #define mfp_set_isra(a) \
147 mfp_base[MFP_ISRA] = ((u_int8_t) (a))
148 #define mfp_set_isrb(a) \
149 mfp_base[MFP_ISRB] = ((u_int8_t) (a))
150 #define mfp_set_imra(a) \
151 mfp_base[MFP_IMRA] = ((u_int8_t) (a))
152 #define mfp_set_imrb(a) \
153 mfp_base[MFP_IMRB] = ((u_int8_t) (a))
154 #define mfp_set_vr(a) \
155 mfp_base[MFP_VR] = ((u_int8_t) (a))
156 #define mfp_set_tacr(a) \
157 mfp_base[MFP_TACR] = ((u_int8_t) (a))
158 #define mfp_set_tbcr(a) \
159 mfp_base[MFP_TBCR] = ((u_int8_t) (a))
160 #define mfp_set_tcdcr(a) \
161 mfp_base[MFP_TCDCR] = ((u_int8_t) (a))
162 #define mfp_set_tadr(a) \
163 mfp_base[MFP_TADR] = ((u_int8_t) (a))
164 #define mfp_set_tbdr(a) \
165 mfp_base[MFP_TBDR] = ((u_int8_t) (a))
166 #define mfp_set_tcdr(a) \
167 mfp_base[MFP_TCDR] = ((u_int8_t) (a))
168 #define mfp_set_tddr(a) \
169 mfp_base[MFP_TDDR] = ((u_int8_t) (a))
170 #define mfp_set_ucr(a) \
171 mfp_base[MFP_UCR] = ((u_int8_t) (a))
172 #define mfp_set_rsr(a) \
173 mfp_base[MFP_RSR] = ((u_int8_t) (a))
174 #define mfp_set_tsr(a) \
175 mfp_base[MFP_TSR] = ((u_int8_t) (a))
176 #define mfp_set_udr(a) \
177 mfp_base[MFP_UDR] = ((u_int8_t) (a))
178
179 #define mfp_get_gpip() (mfp_base[MFP_GPIP])
180 #define mfp_get_aer() (mfp_base[MFP_AER])
181 #define mfp_get_ddr() (mfp_base[MFP_DDR])
182 #define mfp_get_iera() (mfp_base[MFP_IERA])
183 #define mfp_get_ierb() (mfp_base[MFP_IERB])
184 #define mfp_get_ipra() (mfp_base[MFP_IPRA])
185 #define mfp_get_iprb() (mfp_base[MFP_IPRB])
186 #define mfp_get_isra() (mfp_base[MFP_ISRA])
187 #define mfp_get_isrb() (mfp_base[MFP_ISRB])
188 #define mfp_get_imra() (mfp_base[MFP_IMRA])
189 #define mfp_get_imrb() (mfp_base[MFP_IMRB])
190 #define mfp_get_vr() (mfp_base[MFP_VR])
191 #define mfp_get_tacr() (mfp_base[MFP_TACR])
192 #define mfp_get_tbcr() (mfp_base[MFP_TBCR])
193 #define mfp_get_tcdcr() (mfp_base[MFP_TCDCR])
194 #define mfp_get_tadr() (mfp_base[MFP_TADR])
195 #define mfp_get_tbdr() (mfp_base[MFP_TBDR])
196 #define mfp_get_tcdr() (mfp_base[MFP_TCDR])
197 #define mfp_get_tddr() (mfp_base[MFP_TDDR])
198 #define mfp_get_ucr() (mfp_base[MFP_UCR])
199 #define mfp_get_rsr() (mfp_base[MFP_RSR])
200 #define mfp_get_tsr() (mfp_base[MFP_TSR])
201 #define mfp_get_udr() (mfp_base[MFP_UDR])
202
203 #define mfp_bit_set(reg,bits) (mfp_base[(reg)] |= (bits))
204 #define mfp_bit_clear(reg,bits) (mfp_base[(reg)] &= (~(bits)))
205
206 #define mfp_bit_set_gpip(bits) mfp_bit_set(MFP_GPIP, (bits))
207 #define mfp_bit_clear_gpip(bits) mfp_bit_clear(MFP_GPIP, (bits))
208 #define mfp_bit_set_iera(bits) mfp_bit_set(MFP_IERA, (bits))
209 #define mfp_bit_clear_iera(bits) mfp_bit_clear(MFP_IERA, (bits))
210 #define mfp_bit_set_ierb(bits) mfp_bit_set(MFP_IERB, (bits))
211 #define mfp_bit_clear_ierb(bits) mfp_bit_clear(MFP_IERB, (bits))
212
213 void mfp_wait_for_hsync __P((void));
214 int mfp_send_usart __P((int));
215 int mfp_recieve_usart __P((void));
216