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