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