| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*
 | 
					
						
							|  |  |  | ** asm-m68k/amigahw.h -- This header defines some macros and pointers for | 
					
						
							|  |  |  | **                    the various Amiga custom hardware registers. | 
					
						
							|  |  |  | **                    The naming conventions used here conform to those | 
					
						
							|  |  |  | **                    used in the Amiga Hardware Reference Manual, 3rd Edition | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Copyright 1992 by Greg Harp | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** This file is subject to the terms and conditions of the GNU General Public | 
					
						
							|  |  |  | ** License.  See the file COPYING in the main directory of this archive | 
					
						
							|  |  |  | ** for more details. | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Created: 9/24/92 by Greg Harp | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _M68K_AMIGAHW_H
 | 
					
						
							|  |  |  | #define _M68K_AMIGAHW_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/ioport.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /*
 | 
					
						
							|  |  |  |      *  Different Amiga models | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define AMI_UNKNOWN	(0)
 | 
					
						
							|  |  |  | #define AMI_500		(1)
 | 
					
						
							|  |  |  | #define AMI_500PLUS	(2)
 | 
					
						
							|  |  |  | #define AMI_600		(3)
 | 
					
						
							|  |  |  | #define AMI_1000	(4)
 | 
					
						
							|  |  |  | #define AMI_1200	(5)
 | 
					
						
							|  |  |  | #define AMI_2000	(6)
 | 
					
						
							|  |  |  | #define AMI_2500	(7)
 | 
					
						
							|  |  |  | #define AMI_3000	(8)
 | 
					
						
							|  |  |  | #define AMI_3000T	(9)
 | 
					
						
							|  |  |  | #define AMI_3000PLUS	(10)
 | 
					
						
							|  |  |  | #define AMI_4000	(11)
 | 
					
						
							|  |  |  | #define AMI_4000T	(12)
 | 
					
						
							|  |  |  | #define AMI_CDTV	(13)
 | 
					
						
							|  |  |  | #define AMI_CD32	(14)
 | 
					
						
							|  |  |  | #define AMI_DRACO	(15)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /*
 | 
					
						
							|  |  |  |      *  Chipsets | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern unsigned long amiga_chipset; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define CS_STONEAGE	(0)
 | 
					
						
							|  |  |  | #define CS_OCS		(1)
 | 
					
						
							|  |  |  | #define CS_ECS		(2)
 | 
					
						
							|  |  |  | #define CS_AGA		(3)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /*
 | 
					
						
							|  |  |  |      *  Miscellaneous | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern unsigned long amiga_eclock;	/* 700 kHz E Peripheral Clock */ | 
					
						
							|  |  |  | extern unsigned long amiga_colorclock;	/* 3.5 MHz Color Clock */ | 
					
						
							|  |  |  | extern unsigned long amiga_chip_size;	/* Chip RAM Size (bytes) */ | 
					
						
							|  |  |  | extern unsigned char amiga_vblank;	/* VBLANK Frequency */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define AMIGAHW_DECLARE(name)	unsigned name : 1
 | 
					
						
							|  |  |  | #define AMIGAHW_SET(name)	(amiga_hw_present.name = 1)
 | 
					
						
							|  |  |  | #define AMIGAHW_PRESENT(name)	(amiga_hw_present.name)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct amiga_hw_present { | 
					
						
							|  |  |  |     /* video hardware */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AMI_VIDEO);		/* Amiga Video */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AMI_BLITTER);	/* Amiga Blitter */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AMBER_FF);		/* Amber Flicker Fixer */ | 
					
						
							|  |  |  |     /* sound hardware */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AMI_AUDIO);		/* Amiga Audio */ | 
					
						
							|  |  |  |     /* disk storage interfaces */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AMI_FLOPPY);	/* Amiga Floppy */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(A3000_SCSI);	/* SCSI (wd33c93, A3000 alike) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(A4000_SCSI);	/* SCSI (ncr53c710, A4000T alike) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(A1200_IDE);		/* IDE (A1200 alike) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(A4000_IDE);		/* IDE (A4000 alike) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(CD_ROM);		/* CD ROM drive */ | 
					
						
							|  |  |  |     /* other I/O hardware */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AMI_KEYBOARD);	/* Amiga Keyboard */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AMI_MOUSE);		/* Amiga Mouse */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AMI_SERIAL);	/* Amiga Serial */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AMI_PARALLEL);	/* Amiga Parallel */ | 
					
						
							|  |  |  |     /* real time clocks */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(A2000_CLK);		/* Hardware Clock (A2000 alike) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(A3000_CLK);		/* Hardware Clock (A3000 alike) */ | 
					
						
							|  |  |  |     /* supporting hardware */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(CHIP_RAM);		/* Chip RAM */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(PAULA);		/* Paula (8364) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(DENISE);		/* Denise (8362) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(DENISE_HR);		/* Denise (8373) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(LISA);		/* Lisa (8375) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AGNUS_PAL);		/* Normal/Fat PAL Agnus (8367/8371) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AGNUS_NTSC);	/* Normal/Fat NTSC Agnus (8361/8370) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AGNUS_HR_PAL);	/* Fat Hires PAL Agnus (8372) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(AGNUS_HR_NTSC);	/* Fat Hires NTSC Agnus (8372) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(ALICE_PAL);		/* PAL Alice (8374) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(ALICE_NTSC);	/* NTSC Alice (8374) */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(MAGIC_REKICK);	/* A3000 Magic Hard Rekick */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(PCMCIA);		/* PCMCIA Slot */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(ZORRO);		/* Zorro AutoConfig */ | 
					
						
							|  |  |  |     AMIGAHW_DECLARE(ZORRO3);		/* Zorro III */ | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern struct amiga_hw_present amiga_hw_present; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct CUSTOM { | 
					
						
							|  |  |  |     unsigned short bltddat; | 
					
						
							|  |  |  |     unsigned short dmaconr; | 
					
						
							|  |  |  |     unsigned short vposr; | 
					
						
							|  |  |  |     unsigned short vhposr; | 
					
						
							|  |  |  |     unsigned short dskdatr; | 
					
						
							|  |  |  |     unsigned short joy0dat; | 
					
						
							|  |  |  |     unsigned short joy1dat; | 
					
						
							|  |  |  |     unsigned short clxdat; | 
					
						
							|  |  |  |     unsigned short adkconr; | 
					
						
							|  |  |  |     unsigned short pot0dat; | 
					
						
							|  |  |  |     unsigned short pot1dat; | 
					
						
							|  |  |  |     unsigned short potgor; | 
					
						
							|  |  |  |     unsigned short serdatr; | 
					
						
							|  |  |  |     unsigned short dskbytr; | 
					
						
							|  |  |  |     unsigned short intenar; | 
					
						
							|  |  |  |     unsigned short intreqr; | 
					
						
							|  |  |  |     unsigned char  *dskptr; | 
					
						
							|  |  |  |     unsigned short dsklen; | 
					
						
							|  |  |  |     unsigned short dskdat; | 
					
						
							|  |  |  |     unsigned short refptr; | 
					
						
							|  |  |  |     unsigned short vposw; | 
					
						
							|  |  |  |     unsigned short vhposw; | 
					
						
							|  |  |  |     unsigned short copcon; | 
					
						
							|  |  |  |     unsigned short serdat; | 
					
						
							|  |  |  |     unsigned short serper; | 
					
						
							|  |  |  |     unsigned short potgo; | 
					
						
							|  |  |  |     unsigned short joytest; | 
					
						
							|  |  |  |     unsigned short strequ; | 
					
						
							|  |  |  |     unsigned short strvbl; | 
					
						
							|  |  |  |     unsigned short strhor; | 
					
						
							|  |  |  |     unsigned short strlong; | 
					
						
							|  |  |  |     unsigned short bltcon0; | 
					
						
							|  |  |  |     unsigned short bltcon1; | 
					
						
							|  |  |  |     unsigned short bltafwm; | 
					
						
							|  |  |  |     unsigned short bltalwm; | 
					
						
							|  |  |  |     unsigned char  *bltcpt; | 
					
						
							|  |  |  |     unsigned char  *bltbpt; | 
					
						
							|  |  |  |     unsigned char  *bltapt; | 
					
						
							|  |  |  |     unsigned char  *bltdpt; | 
					
						
							|  |  |  |     unsigned short bltsize; | 
					
						
							|  |  |  |     unsigned char  pad2d; | 
					
						
							|  |  |  |     unsigned char  bltcon0l; | 
					
						
							|  |  |  |     unsigned short bltsizv; | 
					
						
							|  |  |  |     unsigned short bltsizh; | 
					
						
							|  |  |  |     unsigned short bltcmod; | 
					
						
							|  |  |  |     unsigned short bltbmod; | 
					
						
							|  |  |  |     unsigned short bltamod; | 
					
						
							|  |  |  |     unsigned short bltdmod; | 
					
						
							|  |  |  |     unsigned short spare2[4]; | 
					
						
							|  |  |  |     unsigned short bltcdat; | 
					
						
							|  |  |  |     unsigned short bltbdat; | 
					
						
							|  |  |  |     unsigned short bltadat; | 
					
						
							|  |  |  |     unsigned short spare3[3]; | 
					
						
							|  |  |  |     unsigned short deniseid; | 
					
						
							|  |  |  |     unsigned short dsksync; | 
					
						
							|  |  |  |     unsigned short *cop1lc; | 
					
						
							|  |  |  |     unsigned short *cop2lc; | 
					
						
							|  |  |  |     unsigned short copjmp1; | 
					
						
							|  |  |  |     unsigned short copjmp2; | 
					
						
							|  |  |  |     unsigned short copins; | 
					
						
							|  |  |  |     unsigned short diwstrt; | 
					
						
							|  |  |  |     unsigned short diwstop; | 
					
						
							|  |  |  |     unsigned short ddfstrt; | 
					
						
							|  |  |  |     unsigned short ddfstop; | 
					
						
							|  |  |  |     unsigned short dmacon; | 
					
						
							|  |  |  |     unsigned short clxcon; | 
					
						
							|  |  |  |     unsigned short intena; | 
					
						
							|  |  |  |     unsigned short intreq; | 
					
						
							|  |  |  |     unsigned short adkcon; | 
					
						
							|  |  |  |     struct { | 
					
						
							|  |  |  | 	unsigned short	*audlc; | 
					
						
							|  |  |  | 	unsigned short audlen; | 
					
						
							|  |  |  | 	unsigned short audper; | 
					
						
							|  |  |  | 	unsigned short audvol; | 
					
						
							|  |  |  | 	unsigned short auddat; | 
					
						
							|  |  |  | 	unsigned short audspare[2]; | 
					
						
							|  |  |  |     } aud[4]; | 
					
						
							|  |  |  |     unsigned char  *bplpt[8]; | 
					
						
							|  |  |  |     unsigned short bplcon0; | 
					
						
							|  |  |  |     unsigned short bplcon1; | 
					
						
							|  |  |  |     unsigned short bplcon2; | 
					
						
							|  |  |  |     unsigned short bplcon3; | 
					
						
							|  |  |  |     unsigned short bpl1mod; | 
					
						
							|  |  |  |     unsigned short bpl2mod; | 
					
						
							|  |  |  |     unsigned short bplcon4; | 
					
						
							|  |  |  |     unsigned short clxcon2; | 
					
						
							|  |  |  |     unsigned short bpldat[8]; | 
					
						
							|  |  |  |     unsigned char  *sprpt[8]; | 
					
						
							|  |  |  |     struct { | 
					
						
							|  |  |  | 	unsigned short pos; | 
					
						
							|  |  |  | 	unsigned short ctl; | 
					
						
							|  |  |  | 	unsigned short dataa; | 
					
						
							|  |  |  | 	unsigned short datab; | 
					
						
							|  |  |  |     } spr[8]; | 
					
						
							|  |  |  |     unsigned short color[32]; | 
					
						
							|  |  |  |     unsigned short htotal; | 
					
						
							|  |  |  |     unsigned short hsstop; | 
					
						
							|  |  |  |     unsigned short hbstrt; | 
					
						
							|  |  |  |     unsigned short hbstop; | 
					
						
							|  |  |  |     unsigned short vtotal; | 
					
						
							|  |  |  |     unsigned short vsstop; | 
					
						
							|  |  |  |     unsigned short vbstrt; | 
					
						
							|  |  |  |     unsigned short vbstop; | 
					
						
							|  |  |  |     unsigned short sprhstrt; | 
					
						
							|  |  |  |     unsigned short sprhstop; | 
					
						
							|  |  |  |     unsigned short bplhstrt; | 
					
						
							|  |  |  |     unsigned short bplhstop; | 
					
						
							|  |  |  |     unsigned short hhposw; | 
					
						
							|  |  |  |     unsigned short hhposr; | 
					
						
							|  |  |  |     unsigned short beamcon0; | 
					
						
							|  |  |  |     unsigned short hsstrt; | 
					
						
							|  |  |  |     unsigned short vsstrt; | 
					
						
							|  |  |  |     unsigned short hcenter; | 
					
						
							|  |  |  |     unsigned short diwhigh; | 
					
						
							|  |  |  |     unsigned short spare4[11]; | 
					
						
							|  |  |  |     unsigned short fmode; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*
 | 
					
						
							|  |  |  |  * DMA register bits | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #define DMAF_SETCLR		(0x8000)
 | 
					
						
							|  |  |  | #define DMAF_AUD0		(0x0001)
 | 
					
						
							|  |  |  | #define DMAF_AUD1		(0x0002)
 | 
					
						
							|  |  |  | #define DMAF_AUD2		(0x0004)
 | 
					
						
							|  |  |  | #define DMAF_AUD3		(0x0008)
 | 
					
						
							|  |  |  | #define DMAF_DISK		(0x0010)
 | 
					
						
							|  |  |  | #define DMAF_SPRITE		(0x0020)
 | 
					
						
							|  |  |  | #define DMAF_BLITTER		(0x0040)
 | 
					
						
							|  |  |  | #define DMAF_COPPER		(0x0080)
 | 
					
						
							|  |  |  | #define DMAF_RASTER		(0x0100)
 | 
					
						
							|  |  |  | #define DMAF_MASTER		(0x0200)
 | 
					
						
							|  |  |  | #define DMAF_BLITHOG		(0x0400)
 | 
					
						
							|  |  |  | #define DMAF_BLTNZERO		(0x2000)
 | 
					
						
							|  |  |  | #define DMAF_BLTDONE		(0x4000)
 | 
					
						
							|  |  |  | #define DMAF_ALL		(0x01FF)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct CIA { | 
					
						
							|  |  |  |     unsigned char pra;		char pad0[0xff]; | 
					
						
							|  |  |  |     unsigned char prb;		char pad1[0xff]; | 
					
						
							|  |  |  |     unsigned char ddra;		char pad2[0xff]; | 
					
						
							|  |  |  |     unsigned char ddrb;		char pad3[0xff]; | 
					
						
							|  |  |  |     unsigned char talo;		char pad4[0xff]; | 
					
						
							|  |  |  |     unsigned char tahi;		char pad5[0xff]; | 
					
						
							|  |  |  |     unsigned char tblo;		char pad6[0xff]; | 
					
						
							|  |  |  |     unsigned char tbhi;		char pad7[0xff]; | 
					
						
							|  |  |  |     unsigned char todlo;	char pad8[0xff]; | 
					
						
							|  |  |  |     unsigned char todmid;	char pad9[0xff]; | 
					
						
							|  |  |  |     unsigned char todhi;	char pada[0x1ff]; | 
					
						
							|  |  |  |     unsigned char sdr;		char padb[0xff]; | 
					
						
							|  |  |  |     unsigned char icr;		char padc[0xff]; | 
					
						
							|  |  |  |     unsigned char cra;		char padd[0xff]; | 
					
						
							|  |  |  |     unsigned char crb;		char pade[0xff]; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define zTwoBase (0x80000000)
 | 
					
						
							|  |  |  | #define ZTWO_PADDR(x) (((unsigned long)(x))-zTwoBase)
 | 
					
						
							|  |  |  | #define ZTWO_VADDR(x) (((unsigned long)(x))+zTwoBase)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define CUSTOM_PHYSADDR     (0xdff000)
 | 
					
						
							| 
									
										
										
										
											2006-01-12 01:06:12 -08:00
										 |  |  | #define amiga_custom ((*(volatile struct CUSTOM *)(zTwoBase+CUSTOM_PHYSADDR)))
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define CIAA_PHYSADDR	  (0xbfe001)
 | 
					
						
							|  |  |  | #define CIAB_PHYSADDR	  (0xbfd000)
 | 
					
						
							|  |  |  | #define ciaa   ((*(volatile struct CIA *)(zTwoBase + CIAA_PHYSADDR)))
 | 
					
						
							|  |  |  | #define ciab   ((*(volatile struct CIA *)(zTwoBase + CIAB_PHYSADDR)))
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define CHIP_PHYSADDR	    (0x000000)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void amiga_chip_init (void); | 
					
						
							|  |  |  | void *amiga_chip_alloc(unsigned long size, const char *name); | 
					
						
							|  |  |  | void *amiga_chip_alloc_res(unsigned long size, struct resource *res); | 
					
						
							|  |  |  | void amiga_chip_free(void *ptr); | 
					
						
							|  |  |  | unsigned long amiga_chip_avail( void ); /*MILAN*/ | 
					
						
							|  |  |  | extern volatile unsigned short amiga_audio_min_period; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline void amifb_video_off(void) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if (amiga_chipset == CS_ECS || amiga_chipset == CS_AGA) { | 
					
						
							|  |  |  | 		/* program Denise/Lisa for a higher maximum play rate */ | 
					
						
							| 
									
										
										
										
											2006-01-12 01:06:12 -08:00
										 |  |  | 		amiga_custom.htotal = 113;        /* 31 kHz */ | 
					
						
							|  |  |  | 		amiga_custom.vtotal = 223;        /* 70 Hz */ | 
					
						
							|  |  |  | 		amiga_custom.beamcon0 = 0x4390;   /* HARDDIS, VAR{BEAM,VSY,HSY,CSY}EN */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		/* suspend the monitor */ | 
					
						
							| 
									
										
										
										
											2006-01-12 01:06:12 -08:00
										 |  |  | 		amiga_custom.hsstrt = amiga_custom.hsstop = 116; | 
					
						
							|  |  |  | 		amiga_custom.vsstrt = amiga_custom.vsstop = 226; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 		amiga_audio_min_period = 57; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tod3000 { | 
					
						
							|  |  |  |   unsigned int  :28, second2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, second1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, minute2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, minute1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, hour2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, hour1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, weekday:4; | 
					
						
							|  |  |  |   unsigned int  :28, day2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, day1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, month2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, month1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, year2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, year1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, cntrl1:4;	/* control-byte 1 */ | 
					
						
							|  |  |  |   unsigned int  :28, cntrl2:4;	/* control-byte 2 */ | 
					
						
							|  |  |  |   unsigned int  :28, cntrl3:4;	/* control-byte 3 */ | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | #define TOD3000_CNTRL1_HOLD	0
 | 
					
						
							|  |  |  | #define TOD3000_CNTRL1_FREE	9
 | 
					
						
							|  |  |  | #define tod_3000 ((*(volatile struct tod3000 *)(zTwoBase+0xDC0000)))
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct tod2000 { | 
					
						
							|  |  |  |   unsigned int  :28, second2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, second1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, minute2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, minute1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, hour2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, hour1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, day2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, day1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, month2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, month1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, year2:4;	/* lower digit */ | 
					
						
							|  |  |  |   unsigned int  :28, year1:4;	/* upper digit */ | 
					
						
							|  |  |  |   unsigned int  :28, weekday:4; | 
					
						
							|  |  |  |   unsigned int  :28, cntrl1:4;	/* control-byte 1 */ | 
					
						
							|  |  |  |   unsigned int  :28, cntrl2:4;	/* control-byte 2 */ | 
					
						
							|  |  |  |   unsigned int  :28, cntrl3:4;	/* control-byte 3 */ | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define TOD2000_CNTRL1_HOLD	(1<<0)
 | 
					
						
							|  |  |  | #define TOD2000_CNTRL1_BUSY	(1<<1)
 | 
					
						
							|  |  |  | #define TOD2000_CNTRL3_24HMODE	(1<<2)
 | 
					
						
							|  |  |  | #define TOD2000_HOUR1_PM	(1<<2)
 | 
					
						
							|  |  |  | #define tod_2000 ((*(volatile struct tod2000 *)(zTwoBase+0xDC0000)))
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* _M68K_AMIGAHW_H */
 |