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