162306a36Sopenharmony_ci/*
262306a36Sopenharmony_ci** asm-m68k/amigahw.h -- This header defines some macros and pointers for
362306a36Sopenharmony_ci**                    the various Amiga custom hardware registers.
462306a36Sopenharmony_ci**                    The naming conventions used here conform to those
562306a36Sopenharmony_ci**                    used in the Amiga Hardware Reference Manual, 3rd Edition
662306a36Sopenharmony_ci**
762306a36Sopenharmony_ci** Copyright 1992 by Greg Harp
862306a36Sopenharmony_ci**
962306a36Sopenharmony_ci** This file is subject to the terms and conditions of the GNU General Public
1062306a36Sopenharmony_ci** License.  See the file COPYING in the main directory of this archive
1162306a36Sopenharmony_ci** for more details.
1262306a36Sopenharmony_ci**
1362306a36Sopenharmony_ci** Created: 9/24/92 by Greg Harp
1462306a36Sopenharmony_ci*/
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#ifndef _M68K_AMIGAHW_H
1762306a36Sopenharmony_ci#define _M68K_AMIGAHW_H
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#include <linux/ioport.h>
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci#include <asm/bootinfo-amiga.h>
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci    /*
2562306a36Sopenharmony_ci     *  Chipsets
2662306a36Sopenharmony_ci     */
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciextern unsigned long amiga_chipset;
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci    /*
3262306a36Sopenharmony_ci     *  Miscellaneous
3362306a36Sopenharmony_ci     */
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciextern unsigned long amiga_eclock;	/* 700 kHz E Peripheral Clock */
3662306a36Sopenharmony_ciextern unsigned long amiga_colorclock;	/* 3.5 MHz Color Clock */
3762306a36Sopenharmony_ciextern unsigned long amiga_chip_size;	/* Chip RAM Size (bytes) */
3862306a36Sopenharmony_ciextern unsigned char amiga_vblank;	/* VBLANK Frequency */
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ci#define AMIGAHW_DECLARE(name)	unsigned name : 1
4262306a36Sopenharmony_ci#define AMIGAHW_SET(name)	(amiga_hw_present.name = 1)
4362306a36Sopenharmony_ci#define AMIGAHW_PRESENT(name)	(amiga_hw_present.name)
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_cistruct amiga_hw_present {
4662306a36Sopenharmony_ci    /* video hardware */
4762306a36Sopenharmony_ci    AMIGAHW_DECLARE(AMI_VIDEO);		/* Amiga Video */
4862306a36Sopenharmony_ci    AMIGAHW_DECLARE(AMI_BLITTER);	/* Amiga Blitter */
4962306a36Sopenharmony_ci    AMIGAHW_DECLARE(AMBER_FF);		/* Amber Flicker Fixer */
5062306a36Sopenharmony_ci    /* sound hardware */
5162306a36Sopenharmony_ci    AMIGAHW_DECLARE(AMI_AUDIO);		/* Amiga Audio */
5262306a36Sopenharmony_ci    /* disk storage interfaces */
5362306a36Sopenharmony_ci    AMIGAHW_DECLARE(AMI_FLOPPY);	/* Amiga Floppy */
5462306a36Sopenharmony_ci    AMIGAHW_DECLARE(A3000_SCSI);	/* SCSI (wd33c93, A3000 alike) */
5562306a36Sopenharmony_ci    AMIGAHW_DECLARE(A4000_SCSI);	/* SCSI (ncr53c710, A4000T alike) */
5662306a36Sopenharmony_ci    AMIGAHW_DECLARE(A1200_IDE);		/* IDE (A1200 alike) */
5762306a36Sopenharmony_ci    AMIGAHW_DECLARE(A4000_IDE);		/* IDE (A4000 alike) */
5862306a36Sopenharmony_ci    AMIGAHW_DECLARE(CD_ROM);		/* CD ROM drive */
5962306a36Sopenharmony_ci    /* other I/O hardware */
6062306a36Sopenharmony_ci    AMIGAHW_DECLARE(AMI_KEYBOARD);	/* Amiga Keyboard */
6162306a36Sopenharmony_ci    AMIGAHW_DECLARE(AMI_MOUSE);		/* Amiga Mouse */
6262306a36Sopenharmony_ci    AMIGAHW_DECLARE(AMI_SERIAL);	/* Amiga Serial */
6362306a36Sopenharmony_ci    AMIGAHW_DECLARE(AMI_PARALLEL);	/* Amiga Parallel */
6462306a36Sopenharmony_ci    /* real time clocks */
6562306a36Sopenharmony_ci    AMIGAHW_DECLARE(A2000_CLK);		/* Hardware Clock (A2000 alike) */
6662306a36Sopenharmony_ci    AMIGAHW_DECLARE(A3000_CLK);		/* Hardware Clock (A3000 alike) */
6762306a36Sopenharmony_ci    /* supporting hardware */
6862306a36Sopenharmony_ci    AMIGAHW_DECLARE(CHIP_RAM);		/* Chip RAM */
6962306a36Sopenharmony_ci    AMIGAHW_DECLARE(PAULA);		/* Paula (8364) */
7062306a36Sopenharmony_ci    AMIGAHW_DECLARE(DENISE);		/* Denise (8362) */
7162306a36Sopenharmony_ci    AMIGAHW_DECLARE(DENISE_HR);		/* Denise (8373) */
7262306a36Sopenharmony_ci    AMIGAHW_DECLARE(LISA);		/* Lisa (8375) */
7362306a36Sopenharmony_ci    AMIGAHW_DECLARE(AGNUS_PAL);		/* Normal/Fat PAL Agnus (8367/8371) */
7462306a36Sopenharmony_ci    AMIGAHW_DECLARE(AGNUS_NTSC);	/* Normal/Fat NTSC Agnus (8361/8370) */
7562306a36Sopenharmony_ci    AMIGAHW_DECLARE(AGNUS_HR_PAL);	/* Fat Hires PAL Agnus (8372) */
7662306a36Sopenharmony_ci    AMIGAHW_DECLARE(AGNUS_HR_NTSC);	/* Fat Hires NTSC Agnus (8372) */
7762306a36Sopenharmony_ci    AMIGAHW_DECLARE(ALICE_PAL);		/* PAL Alice (8374) */
7862306a36Sopenharmony_ci    AMIGAHW_DECLARE(ALICE_NTSC);	/* NTSC Alice (8374) */
7962306a36Sopenharmony_ci    AMIGAHW_DECLARE(MAGIC_REKICK);	/* A3000 Magic Hard Rekick */
8062306a36Sopenharmony_ci    AMIGAHW_DECLARE(PCMCIA);		/* PCMCIA Slot */
8162306a36Sopenharmony_ci    AMIGAHW_DECLARE(ZORRO);		/* Zorro AutoConfig */
8262306a36Sopenharmony_ci    AMIGAHW_DECLARE(ZORRO3);		/* Zorro III */
8362306a36Sopenharmony_ci};
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciextern struct amiga_hw_present amiga_hw_present;
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_cistruct CUSTOM {
8862306a36Sopenharmony_ci    unsigned short bltddat;
8962306a36Sopenharmony_ci    unsigned short dmaconr;
9062306a36Sopenharmony_ci    unsigned short vposr;
9162306a36Sopenharmony_ci    unsigned short vhposr;
9262306a36Sopenharmony_ci    unsigned short dskdatr;
9362306a36Sopenharmony_ci    unsigned short joy0dat;
9462306a36Sopenharmony_ci    unsigned short joy1dat;
9562306a36Sopenharmony_ci    unsigned short clxdat;
9662306a36Sopenharmony_ci    unsigned short adkconr;
9762306a36Sopenharmony_ci    unsigned short pot0dat;
9862306a36Sopenharmony_ci    unsigned short pot1dat;
9962306a36Sopenharmony_ci    unsigned short potgor;
10062306a36Sopenharmony_ci    unsigned short serdatr;
10162306a36Sopenharmony_ci    unsigned short dskbytr;
10262306a36Sopenharmony_ci    unsigned short intenar;
10362306a36Sopenharmony_ci    unsigned short intreqr;
10462306a36Sopenharmony_ci    unsigned char  *dskptr;
10562306a36Sopenharmony_ci    unsigned short dsklen;
10662306a36Sopenharmony_ci    unsigned short dskdat;
10762306a36Sopenharmony_ci    unsigned short refptr;
10862306a36Sopenharmony_ci    unsigned short vposw;
10962306a36Sopenharmony_ci    unsigned short vhposw;
11062306a36Sopenharmony_ci    unsigned short copcon;
11162306a36Sopenharmony_ci    unsigned short serdat;
11262306a36Sopenharmony_ci    unsigned short serper;
11362306a36Sopenharmony_ci    unsigned short potgo;
11462306a36Sopenharmony_ci    unsigned short joytest;
11562306a36Sopenharmony_ci    unsigned short strequ;
11662306a36Sopenharmony_ci    unsigned short strvbl;
11762306a36Sopenharmony_ci    unsigned short strhor;
11862306a36Sopenharmony_ci    unsigned short strlong;
11962306a36Sopenharmony_ci    unsigned short bltcon0;
12062306a36Sopenharmony_ci    unsigned short bltcon1;
12162306a36Sopenharmony_ci    unsigned short bltafwm;
12262306a36Sopenharmony_ci    unsigned short bltalwm;
12362306a36Sopenharmony_ci    unsigned char  *bltcpt;
12462306a36Sopenharmony_ci    unsigned char  *bltbpt;
12562306a36Sopenharmony_ci    unsigned char  *bltapt;
12662306a36Sopenharmony_ci    unsigned char  *bltdpt;
12762306a36Sopenharmony_ci    unsigned short bltsize;
12862306a36Sopenharmony_ci    unsigned char  pad2d;
12962306a36Sopenharmony_ci    unsigned char  bltcon0l;
13062306a36Sopenharmony_ci    unsigned short bltsizv;
13162306a36Sopenharmony_ci    unsigned short bltsizh;
13262306a36Sopenharmony_ci    unsigned short bltcmod;
13362306a36Sopenharmony_ci    unsigned short bltbmod;
13462306a36Sopenharmony_ci    unsigned short bltamod;
13562306a36Sopenharmony_ci    unsigned short bltdmod;
13662306a36Sopenharmony_ci    unsigned short spare2[4];
13762306a36Sopenharmony_ci    unsigned short bltcdat;
13862306a36Sopenharmony_ci    unsigned short bltbdat;
13962306a36Sopenharmony_ci    unsigned short bltadat;
14062306a36Sopenharmony_ci    unsigned short spare3[3];
14162306a36Sopenharmony_ci    unsigned short deniseid;
14262306a36Sopenharmony_ci    unsigned short dsksync;
14362306a36Sopenharmony_ci    unsigned short *cop1lc;
14462306a36Sopenharmony_ci    unsigned short *cop2lc;
14562306a36Sopenharmony_ci    unsigned short copjmp1;
14662306a36Sopenharmony_ci    unsigned short copjmp2;
14762306a36Sopenharmony_ci    unsigned short copins;
14862306a36Sopenharmony_ci    unsigned short diwstrt;
14962306a36Sopenharmony_ci    unsigned short diwstop;
15062306a36Sopenharmony_ci    unsigned short ddfstrt;
15162306a36Sopenharmony_ci    unsigned short ddfstop;
15262306a36Sopenharmony_ci    unsigned short dmacon;
15362306a36Sopenharmony_ci    unsigned short clxcon;
15462306a36Sopenharmony_ci    unsigned short intena;
15562306a36Sopenharmony_ci    unsigned short intreq;
15662306a36Sopenharmony_ci    unsigned short adkcon;
15762306a36Sopenharmony_ci    struct {
15862306a36Sopenharmony_ci	unsigned short	*audlc;
15962306a36Sopenharmony_ci	unsigned short audlen;
16062306a36Sopenharmony_ci	unsigned short audper;
16162306a36Sopenharmony_ci	unsigned short audvol;
16262306a36Sopenharmony_ci	unsigned short auddat;
16362306a36Sopenharmony_ci	unsigned short audspare[2];
16462306a36Sopenharmony_ci    } aud[4];
16562306a36Sopenharmony_ci    unsigned char  *bplpt[8];
16662306a36Sopenharmony_ci    unsigned short bplcon0;
16762306a36Sopenharmony_ci    unsigned short bplcon1;
16862306a36Sopenharmony_ci    unsigned short bplcon2;
16962306a36Sopenharmony_ci    unsigned short bplcon3;
17062306a36Sopenharmony_ci    unsigned short bpl1mod;
17162306a36Sopenharmony_ci    unsigned short bpl2mod;
17262306a36Sopenharmony_ci    unsigned short bplcon4;
17362306a36Sopenharmony_ci    unsigned short clxcon2;
17462306a36Sopenharmony_ci    unsigned short bpldat[8];
17562306a36Sopenharmony_ci    unsigned char  *sprpt[8];
17662306a36Sopenharmony_ci    struct {
17762306a36Sopenharmony_ci	unsigned short pos;
17862306a36Sopenharmony_ci	unsigned short ctl;
17962306a36Sopenharmony_ci	unsigned short dataa;
18062306a36Sopenharmony_ci	unsigned short datab;
18162306a36Sopenharmony_ci    } spr[8];
18262306a36Sopenharmony_ci    unsigned short color[32];
18362306a36Sopenharmony_ci    unsigned short htotal;
18462306a36Sopenharmony_ci    unsigned short hsstop;
18562306a36Sopenharmony_ci    unsigned short hbstrt;
18662306a36Sopenharmony_ci    unsigned short hbstop;
18762306a36Sopenharmony_ci    unsigned short vtotal;
18862306a36Sopenharmony_ci    unsigned short vsstop;
18962306a36Sopenharmony_ci    unsigned short vbstrt;
19062306a36Sopenharmony_ci    unsigned short vbstop;
19162306a36Sopenharmony_ci    unsigned short sprhstrt;
19262306a36Sopenharmony_ci    unsigned short sprhstop;
19362306a36Sopenharmony_ci    unsigned short bplhstrt;
19462306a36Sopenharmony_ci    unsigned short bplhstop;
19562306a36Sopenharmony_ci    unsigned short hhposw;
19662306a36Sopenharmony_ci    unsigned short hhposr;
19762306a36Sopenharmony_ci    unsigned short beamcon0;
19862306a36Sopenharmony_ci    unsigned short hsstrt;
19962306a36Sopenharmony_ci    unsigned short vsstrt;
20062306a36Sopenharmony_ci    unsigned short hcenter;
20162306a36Sopenharmony_ci    unsigned short diwhigh;
20262306a36Sopenharmony_ci    unsigned short spare4[11];
20362306a36Sopenharmony_ci    unsigned short fmode;
20462306a36Sopenharmony_ci};
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci/*
20762306a36Sopenharmony_ci * DMA register bits
20862306a36Sopenharmony_ci */
20962306a36Sopenharmony_ci#define DMAF_SETCLR		(0x8000)
21062306a36Sopenharmony_ci#define DMAF_AUD0		(0x0001)
21162306a36Sopenharmony_ci#define DMAF_AUD1		(0x0002)
21262306a36Sopenharmony_ci#define DMAF_AUD2		(0x0004)
21362306a36Sopenharmony_ci#define DMAF_AUD3		(0x0008)
21462306a36Sopenharmony_ci#define DMAF_DISK		(0x0010)
21562306a36Sopenharmony_ci#define DMAF_SPRITE		(0x0020)
21662306a36Sopenharmony_ci#define DMAF_BLITTER		(0x0040)
21762306a36Sopenharmony_ci#define DMAF_COPPER		(0x0080)
21862306a36Sopenharmony_ci#define DMAF_RASTER		(0x0100)
21962306a36Sopenharmony_ci#define DMAF_MASTER		(0x0200)
22062306a36Sopenharmony_ci#define DMAF_BLITHOG		(0x0400)
22162306a36Sopenharmony_ci#define DMAF_BLTNZERO		(0x2000)
22262306a36Sopenharmony_ci#define DMAF_BLTDONE		(0x4000)
22362306a36Sopenharmony_ci#define DMAF_ALL		(0x01FF)
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_cistruct CIA {
22662306a36Sopenharmony_ci    unsigned char pra;		char pad0[0xff];
22762306a36Sopenharmony_ci    unsigned char prb;		char pad1[0xff];
22862306a36Sopenharmony_ci    unsigned char ddra;		char pad2[0xff];
22962306a36Sopenharmony_ci    unsigned char ddrb;		char pad3[0xff];
23062306a36Sopenharmony_ci    unsigned char talo;		char pad4[0xff];
23162306a36Sopenharmony_ci    unsigned char tahi;		char pad5[0xff];
23262306a36Sopenharmony_ci    unsigned char tblo;		char pad6[0xff];
23362306a36Sopenharmony_ci    unsigned char tbhi;		char pad7[0xff];
23462306a36Sopenharmony_ci    unsigned char todlo;	char pad8[0xff];
23562306a36Sopenharmony_ci    unsigned char todmid;	char pad9[0xff];
23662306a36Sopenharmony_ci    unsigned char todhi;	char pada[0x1ff];
23762306a36Sopenharmony_ci    unsigned char sdr;		char padb[0xff];
23862306a36Sopenharmony_ci    unsigned char icr;		char padc[0xff];
23962306a36Sopenharmony_ci    unsigned char cra;		char padd[0xff];
24062306a36Sopenharmony_ci    unsigned char crb;		char pade[0xff];
24162306a36Sopenharmony_ci};
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci#define zTwoBase (0x80000000)
24462306a36Sopenharmony_ci#define ZTWO_PADDR(x) (((unsigned long)(x))-zTwoBase)
24562306a36Sopenharmony_ci#define ZTWO_VADDR(x) ((void __iomem *)(((unsigned long)(x))+zTwoBase))
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ci#define CUSTOM_PHYSADDR     (0xdff000)
24862306a36Sopenharmony_ci#define amiga_custom ((*(volatile struct CUSTOM *)(zTwoBase+CUSTOM_PHYSADDR)))
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci#define CIAA_PHYSADDR	  (0xbfe001)
25162306a36Sopenharmony_ci#define CIAB_PHYSADDR	  (0xbfd000)
25262306a36Sopenharmony_ci#define ciaa   ((*(volatile struct CIA *)(zTwoBase + CIAA_PHYSADDR)))
25362306a36Sopenharmony_ci#define ciab   ((*(volatile struct CIA *)(zTwoBase + CIAB_PHYSADDR)))
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci#define CHIP_PHYSADDR	    (0x000000)
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_civoid amiga_chip_init (void);
25862306a36Sopenharmony_civoid *amiga_chip_alloc(unsigned long size, const char *name);
25962306a36Sopenharmony_civoid *amiga_chip_alloc_res(unsigned long size, struct resource *res);
26062306a36Sopenharmony_civoid amiga_chip_free(void *ptr);
26162306a36Sopenharmony_ciunsigned long amiga_chip_avail( void ); /*MILAN*/
26262306a36Sopenharmony_ciextern volatile unsigned short amiga_audio_min_period;
26362306a36Sopenharmony_ci
26462306a36Sopenharmony_cistatic inline void amifb_video_off(void)
26562306a36Sopenharmony_ci{
26662306a36Sopenharmony_ci	if (amiga_chipset == CS_ECS || amiga_chipset == CS_AGA) {
26762306a36Sopenharmony_ci		/* program Denise/Lisa for a higher maximum play rate */
26862306a36Sopenharmony_ci		amiga_custom.htotal = 113;        /* 31 kHz */
26962306a36Sopenharmony_ci		amiga_custom.vtotal = 223;        /* 70 Hz */
27062306a36Sopenharmony_ci		amiga_custom.beamcon0 = 0x4390;   /* HARDDIS, VAR{BEAM,VSY,HSY,CSY}EN */
27162306a36Sopenharmony_ci		/* suspend the monitor */
27262306a36Sopenharmony_ci		amiga_custom.hsstrt = amiga_custom.hsstop = 116;
27362306a36Sopenharmony_ci		amiga_custom.vsstrt = amiga_custom.vsstop = 226;
27462306a36Sopenharmony_ci		amiga_audio_min_period = 57;
27562306a36Sopenharmony_ci	}
27662306a36Sopenharmony_ci}
27762306a36Sopenharmony_ci
27862306a36Sopenharmony_cistruct tod3000 {
27962306a36Sopenharmony_ci  unsigned int  :28, second2:4;	/* lower digit */
28062306a36Sopenharmony_ci  unsigned int  :28, second1:4;	/* upper digit */
28162306a36Sopenharmony_ci  unsigned int  :28, minute2:4;	/* lower digit */
28262306a36Sopenharmony_ci  unsigned int  :28, minute1:4;	/* upper digit */
28362306a36Sopenharmony_ci  unsigned int  :28, hour2:4;	/* lower digit */
28462306a36Sopenharmony_ci  unsigned int  :28, hour1:4;	/* upper digit */
28562306a36Sopenharmony_ci  unsigned int  :28, weekday:4;
28662306a36Sopenharmony_ci  unsigned int  :28, day2:4;	/* lower digit */
28762306a36Sopenharmony_ci  unsigned int  :28, day1:4;	/* upper digit */
28862306a36Sopenharmony_ci  unsigned int  :28, month2:4;	/* lower digit */
28962306a36Sopenharmony_ci  unsigned int  :28, month1:4;	/* upper digit */
29062306a36Sopenharmony_ci  unsigned int  :28, year2:4;	/* lower digit */
29162306a36Sopenharmony_ci  unsigned int  :28, year1:4;	/* upper digit */
29262306a36Sopenharmony_ci  unsigned int  :28, cntrl1:4;	/* control-byte 1 */
29362306a36Sopenharmony_ci  unsigned int  :28, cntrl2:4;	/* control-byte 2 */
29462306a36Sopenharmony_ci  unsigned int  :28, cntrl3:4;	/* control-byte 3 */
29562306a36Sopenharmony_ci};
29662306a36Sopenharmony_ci#define TOD3000_CNTRL1_HOLD	0
29762306a36Sopenharmony_ci#define TOD3000_CNTRL1_FREE	9
29862306a36Sopenharmony_ci#define tod_3000 ((*(volatile struct tod3000 *)(zTwoBase+0xDC0000)))
29962306a36Sopenharmony_ci
30062306a36Sopenharmony_cistruct tod2000 {
30162306a36Sopenharmony_ci  unsigned int  :28, second2:4;	/* lower digit */
30262306a36Sopenharmony_ci  unsigned int  :28, second1:4;	/* upper digit */
30362306a36Sopenharmony_ci  unsigned int  :28, minute2:4;	/* lower digit */
30462306a36Sopenharmony_ci  unsigned int  :28, minute1:4;	/* upper digit */
30562306a36Sopenharmony_ci  unsigned int  :28, hour2:4;	/* lower digit */
30662306a36Sopenharmony_ci  unsigned int  :28, hour1:4;	/* upper digit */
30762306a36Sopenharmony_ci  unsigned int  :28, day2:4;	/* lower digit */
30862306a36Sopenharmony_ci  unsigned int  :28, day1:4;	/* upper digit */
30962306a36Sopenharmony_ci  unsigned int  :28, month2:4;	/* lower digit */
31062306a36Sopenharmony_ci  unsigned int  :28, month1:4;	/* upper digit */
31162306a36Sopenharmony_ci  unsigned int  :28, year2:4;	/* lower digit */
31262306a36Sopenharmony_ci  unsigned int  :28, year1:4;	/* upper digit */
31362306a36Sopenharmony_ci  unsigned int  :28, weekday:4;
31462306a36Sopenharmony_ci  unsigned int  :28, cntrl1:4;	/* control-byte 1 */
31562306a36Sopenharmony_ci  unsigned int  :28, cntrl2:4;	/* control-byte 2 */
31662306a36Sopenharmony_ci  unsigned int  :28, cntrl3:4;	/* control-byte 3 */
31762306a36Sopenharmony_ci};
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ci#define TOD2000_CNTRL1_HOLD	(1<<0)
32062306a36Sopenharmony_ci#define TOD2000_CNTRL1_BUSY	(1<<1)
32162306a36Sopenharmony_ci#define TOD2000_CNTRL3_24HMODE	(1<<2)
32262306a36Sopenharmony_ci#define TOD2000_HOUR1_PM	(1<<2)
32362306a36Sopenharmony_ci#define tod_2000 ((*(volatile struct tod2000 *)(zTwoBase+0xDC0000)))
32462306a36Sopenharmony_ci
32562306a36Sopenharmony_ci#endif /* _M68K_AMIGAHW_H */
326