Home | History | Annotate | Line # | Download | only in dev
      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