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