Home | History | Annotate | Line # | Download | only in include
mfp.h revision 1.5.108.1
      1  1.5.108.1  yamt /*	$NetBSD: mfp.h,v 1.5.108.1 2010/03/11 15:02:09 yamt Exp $	*/
      2        1.1   leo 
      3        1.1   leo /*
      4        1.1   leo  * Copyright (c) 1995 Leo Weppelman.
      5        1.1   leo  * All rights reserved.
      6        1.1   leo  *
      7        1.1   leo  * Redistribution and use in source and binary forms, with or without
      8        1.1   leo  * modification, are permitted provided that the following conditions
      9        1.1   leo  * are met:
     10        1.1   leo  * 1. Redistributions of source code must retain the above copyright
     11        1.1   leo  *    notice, this list of conditions and the following disclaimer.
     12        1.1   leo  * 2. Redistributions in binary form must reproduce the above copyright
     13        1.1   leo  *    notice, this list of conditions and the following disclaimer in the
     14        1.1   leo  *    documentation and/or other materials provided with the distribution.
     15        1.1   leo  *
     16        1.1   leo  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     17        1.1   leo  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     18        1.1   leo  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     19        1.1   leo  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     20        1.1   leo  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     21        1.1   leo  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     22        1.1   leo  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     23        1.1   leo  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     24        1.1   leo  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     25        1.1   leo  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26        1.1   leo  */
     27        1.1   leo 
     28        1.1   leo #ifndef _MACHINE_MFP_H
     29        1.1   leo #define _MACHINE_MFP_H
     30        1.4   leo 
     31        1.1   leo /*
     32        1.1   leo  * Atari TT hardware: MFP1/MFP2
     33        1.1   leo  * Motorola 68901 Multi-Function Peripheral
     34        1.1   leo  */
     35        1.1   leo 
     36        1.1   leo #define	MFP	((struct mfp *)AD_MFP)
     37        1.1   leo #define	MFP2	((struct mfp *)AD_MFP2)
     38        1.1   leo 
     39        1.4   leo #ifdef _MILANHW_
     40        1.4   leo #define		__MR(n)			(3 + (4 * n))
     41        1.4   leo #endif
     42        1.4   leo #ifdef _ATARIHW_
     43        1.4   leo #define		__MR(n)			(1 + (2 * n))
     44        1.4   leo #endif
     45        1.4   leo 
     46        1.1   leo struct mfp {
     47        1.4   leo 	volatile u_char	mfb[__MR(24)-1];	/* Sparse	*/
     48        1.1   leo };
     49        1.1   leo 
     50        1.4   leo #define	mf_gpip	    mfb[__MR(0) ]    /* gen-purp I/O interrupt port	*/
     51        1.4   leo #define	mf_aer	    mfb[__MR(1) ]    /* active edge register		*/
     52        1.4   leo #define	mf_ddr	    mfb[__MR(2) ]    /* data direction register		*/
     53        1.4   leo #define	mf_iera	    mfb[__MR(3) ]    /* interrupt enable register A	*/
     54        1.4   leo #define	mf_ierb	    mfb[__MR(4) ]    /* interrupt enable register B	*/
     55        1.4   leo #define	mf_ipra	    mfb[__MR(5) ]    /* interrupt pending register A	*/
     56        1.4   leo #define	mf_iprb	    mfb[__MR(6) ]    /* interrupt pending register B	*/
     57        1.4   leo #define	mf_isra	    mfb[__MR(7) ]    /* interrupt in-service register A	*/
     58        1.4   leo #define	mf_isrb	    mfb[__MR(8) ]    /* interrupt in-service register B	*/
     59        1.4   leo #define	mf_imra	    mfb[__MR(9) ]    /* interrupt mask register A	*/
     60        1.4   leo #define	mf_imrb	    mfb[__MR(10)]    /* interrupt mask register B	*/
     61        1.4   leo #define	mf_vr	    mfb[__MR(11)]    /* vector register			*/
     62        1.4   leo #define	mf_tacr	    mfb[__MR(12)]    /* timer control register A	*/
     63        1.4   leo #define	mf_tbcr	    mfb[__MR(13)]    /* timer control register B	*/
     64        1.4   leo #define	mf_tcdcr    mfb[__MR(14)]    /* timer control register C+D	*/
     65        1.4   leo #define	mf_tadr	    mfb[__MR(15)]    /* timer data register A		*/
     66        1.4   leo #define	mf_tbdr	    mfb[__MR(16)]    /* timer data register B		*/
     67        1.4   leo #define	mf_tcdr	    mfb[__MR(17)]    /* timer data register C		*/
     68        1.4   leo #define	mf_tddr	    mfb[__MR(18)]    /* timer data register D		*/
     69        1.4   leo #define	mf_scr	    mfb[__MR(19)]    /* synchronous character register	*/
     70        1.4   leo #define	mf_ucr	    mfb[__MR(20)]    /* USART control register		*/
     71        1.4   leo #define	mf_rsr	    mfb[__MR(21)]    /* receiver status register	*/
     72        1.4   leo #define	mf_tsr	    mfb[__MR(22)]    /* transmitter status register	*/
     73        1.4   leo #define	mf_udr	    mfb[__MR(23)]    /* USART data register		*/
     74        1.1   leo 
     75        1.1   leo /* names of IO port bits: */
     76        1.1   leo #define	IO_PBSY		0x01	/* Parallel Busy			*/
     77        1.1   leo #define	IO_SDCD		0x02	/* Serial Data Carrier Detect		*/
     78        1.1   leo #define	IO_SCTS		0x04	/* Serial Clear To Send			*/
     79        1.3   leo #define	IO_ISA1		0x08	/* ISA slot1 [ Hades only ]		*/
     80        1.1   leo #define	IO_AINT		0x10	/* ACIA interrupt (KB or MIDI)		*/
     81        1.1   leo #define	IO_DINT		0x20	/* DMA interrupt (FDC or HDC)		*/
     82        1.1   leo #define	IO_SRI		0x40	/* Serial Ring Indicator		*/
     83        1.1   leo #define	IO_MONO		0x80	/* Monochrome Monitor Detect		*/
     84        1.3   leo #define	IO_ISA2		0x80	/*  ISA slot2 [ Hades only ]		*/
     85        1.1   leo 
     86        1.1   leo /* names of interrupts in register A: MFP1 */
     87        1.1   leo #define	IA_MONO		0x80	/* IO_MONO				*/
     88        1.3   leo #define	IA_ISA2		0x80	/* IO_ISA2				*/
     89        1.1   leo #define	IA_SRI		0x40	/* IO_SRI				*/
     90        1.1   leo #define	IA_TIMA		0x20	/* Timer A				*/
     91        1.1   leo #define	IA_RRDY		0x10	/* Serial Receiver Ready(=Full)		*/
     92        1.1   leo #define	IA_RERR		0x08	/* Serial Receiver Error		*/
     93        1.1   leo #define	IA_TRDY		0x04	/* Serial Transmitter Ready(=Empty)	*/
     94        1.1   leo #define	IA_TERR		0x02	/* Serial Transmitter Error		*/
     95        1.1   leo #define	IA_TIMB		0x01	/* Timer B				*/
     96        1.1   leo 
     97        1.1   leo /* names of interrupts in register A: MFP2 */
     98        1.1   leo #define	IA_SCSI		0x80	/* SCSI-controller			*/
     99        1.1   leo #define	IA_RTC		0x40	/* Real Time Clock			*/
    100        1.1   leo #define IA_TIMA2	0x20	/* Timer A				*/
    101        1.1   leo /*			0x10	*//* reserved				*/
    102        1.1   leo /*			0x08	*//* reserved				*/
    103        1.1   leo /*			0x04	*//* reserved				*/
    104        1.1   leo /*			0x02	*//* reserved				*/
    105        1.1   leo #define	IA_TIMB2	0x01	/* Timer B				*/
    106        1.1   leo 
    107        1.1   leo /* names of interrupts in register B: MFP1*/
    108        1.1   leo #define	IB_DINT		0x80	/* IO_DINT: from DMA devices		*/
    109        1.1   leo #define	IB_AINT		0x40	/* IO_AINT: from kbd or midi		*/
    110        1.1   leo #define	IB_TIMC		0x20	/* Timer C				*/
    111        1.1   leo #define	IB_TIMD		0x10	/* Timer D				*/
    112        1.3   leo #define	IB_ISA1		0x08	/* ISA1 interrupt [ Hades only ]	*/
    113        1.1   leo #define	IB_SCTS		0x04	/* IO_SCTS				*/
    114        1.1   leo #define	IB_SDCD		0x02	/* IO_SDCD				*/
    115        1.1   leo #define	IB_PBSY		0x01	/* IO_PBSY				*/
    116        1.1   leo 
    117        1.1   leo /* names of interrupts in register B: MFP2*/
    118        1.5   wiz #define	IB_SCDM		0x80	/* SCSI-DMA				*/
    119        1.1   leo #define	IB_DCHG		0x40	/* Diskette change			*/
    120        1.1   leo /*			0x20	*//* reserved				*/
    121        1.1   leo /*			0x10	*//* reserved				*/
    122        1.1   leo #define	IB_RISB		0x80	/* Serial Ring indicator SCC port B	*/
    123        1.5   wiz #define	IB_DMSC		0x40	/* SCC-DMA				*/
    124        1.1   leo #define IB_J602_3	0x02	/* Pin 3 J602				*/
    125        1.1   leo #define IB_J602_1	0x01	/* Pin 1 J602				*/
    126        1.1   leo 
    127        1.1   leo /* bits in VR: */
    128        1.1   leo #define	V_S		0x08	/* software end-of-interrupt mode	*/
    129        1.1   leo #define	V_V		0xF0	/* four high bits of vector		*/
    130        1.1   leo 
    131        1.1   leo /* bits in TCR: */
    132        1.1   leo /*			0x07	*//* divider				*/
    133        1.1   leo #define	T_STOP		0x00	/* don't count				*/
    134        1.1   leo #define	T_Q004		0x01	/* divide by 4				*/
    135        1.1   leo #define	T_Q010		0x02	/* divide by 10				*/
    136        1.1   leo #define	T_Q016		0x03	/* divide by 16				*/
    137        1.1   leo #define	T_Q050		0x04	/* divide by 50				*/
    138        1.1   leo #define	T_Q064		0x05	/* divide by 64				*/
    139        1.1   leo #define	T_Q100		0x06	/* divide by 100			*/
    140        1.1   leo #define	T_Q200		0x07	/* divide by 200			*/
    141        1.1   leo #define	T_EXTI		0x08	/* use extern impulse			*/
    142        1.1   leo #define	T_LOWO		0x10	/* force output low			*/
    143        1.1   leo 
    144        1.1   leo /* bits in UCR: */
    145        1.1   leo /*			0x01	*//* not used				*/
    146        1.1   leo #define	U_EVEN		0x02	/* even parity				*/
    147        1.1   leo #define	U_PAR		0x04	/* use parity				*/
    148        1.1   leo /*		0x18		*//* sync/async and stop bits		*/
    149        1.1   leo #define	U_SYNC		0x00	/* synchrone				*/
    150        1.1   leo #define	U_ST1		0x08	/* async, 1 stop bit			*/
    151        1.1   leo #define	U_ST1_5		0x10	/* async, 1.5 stop bit			*/
    152        1.1   leo #define	U_ST2		0x18	/* async, 2 stop bits			*/
    153        1.1   leo /*		0x60		*//* number of data bits		*/
    154        1.1   leo #define	U_D8		0x00	/* 8 data bits				*/
    155        1.1   leo #define	U_D7		0x20	/* 7 data bits				*/
    156        1.1   leo #define	U_D6		0x40	/* 6 data bits				*/
    157        1.1   leo #define	U_D5		0x60	/* 5 data bits				*/
    158        1.1   leo #define	U_Q16		0x80	/* divide clock by 16			*/
    159        1.1   leo 
    160        1.1   leo /* bits in RSR: */
    161        1.1   leo #define	RS_ENA		0x01	/* Receiver Enable			*/
    162        1.1   leo #define	RS_STRIP	0x02	/* Synchronous Strip Enable		*/
    163        1.1   leo #define	RS_CIP		0x04	/* Character in Progress		*/
    164        1.1   leo #define	RS_BREAK	0x08	/* Break Detected			*/
    165        1.1   leo #define	RS_FE		0x10	/* Frame Error				*/
    166        1.1   leo #define	RS_PE		0x20	/* Parity Error				*/
    167        1.1   leo #define	RS_OE		0x40	/* Overrun Error			*/
    168        1.1   leo #define	RS_FULL		0x80	/* Buffer Full				*/
    169        1.1   leo 
    170        1.1   leo /* bits in TSR: */
    171        1.1   leo #define	TS_ENA		0x01	/* Transmitter Enable					*/
    172        1.1   leo /*			0x06	*//* state of dead transmitter output	*/
    173        1.1   leo #define	TS_TRI		0x00	/* Quiet Output Tristate		*/
    174        1.1   leo #define	TS_LOW		0x02	/* Quiet Output Low			*/
    175        1.1   leo #define	TS_HIGH		0x04	/* Quiet Output High			*/
    176        1.1   leo #define	TS_BACK		0x06	/* Loop Back Mode			*/
    177        1.1   leo #define	TS_BREAK	0x08	/* Break Detected			*/
    178        1.1   leo #define	TS_EOT		0x10	/* End of Transmission			*/
    179        1.1   leo #define	TS_TURN		0x20	/* Auto Turnaround			*/
    180        1.1   leo #define	TS_UE		0x40	/* Underrun Error			*/
    181        1.1   leo #define	TS_EMPTY	0x80	/* Buffer Empty				*/
    182        1.1   leo #endif /* _MACHINE_MFP_H */
    183