summaryrefslogtreecommitdiffstats
path: root/include/asm-m68k/amigahw.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-m68k/amigahw.h')
-rw-r--r--include/asm-m68k/amigahw.h247
1 files changed, 247 insertions, 0 deletions
diff --git a/include/asm-m68k/amigahw.h b/include/asm-m68k/amigahw.h
new file mode 100644
index 000000000..f8268fa7d
--- /dev/null
+++ b/include/asm-m68k/amigahw.h
@@ -0,0 +1,247 @@
+/*
+** 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 _ASMm68k_AMIGAHW_H_
+#define _ASMm68k_AMIGAHW_H_
+
+struct CUSTOM {
+ u_short bltddat;
+ u_short dmaconr;
+ u_short vposr;
+ u_short vhposr;
+ u_short dskdatr;
+ u_short joy0dat;
+ u_short joy1dat;
+ u_short clxdat;
+ u_short adkconr;
+ u_short pot0dat;
+ u_short pot1dat;
+ u_short potgor;
+ u_short serdatr;
+ u_short dskbytr;
+ u_short intenar;
+ u_short intreqr;
+ u_char *dskptr;
+ u_short dsklen;
+ u_short dskdat;
+ u_short refptr;
+ u_short vposw;
+ u_short vhposw;
+ u_short copcon;
+ u_short serdat;
+ u_short serper;
+ u_short potgo;
+ u_short joytest;
+ u_short strequ;
+ u_short strvbl;
+ u_short strhor;
+ u_short strlong;
+ u_short bltcon0;
+ u_short bltcon1;
+ u_short bltafwm;
+ u_short bltalwm;
+ u_char *bltcpt;
+ u_char *bltbpt;
+ u_char *bltapt;
+ u_char *bltdpt;
+ u_short bltsize;
+ u_char pad2d;
+ u_char bltcon0l;
+ u_short bltsizv;
+ u_short bltsizh;
+ u_short bltcmod;
+ u_short bltbmod;
+ u_short bltamod;
+ u_short bltdmod;
+ u_short spare2[4];
+ u_short bltcdat;
+ u_short bltbdat;
+ u_short bltadat;
+ u_short spare3[3];
+ u_short deniseid;
+ u_short dsksync;
+ u_short *cop1lc;
+ u_short *cop2lc;
+ u_short copjmp1;
+ u_short copjmp2;
+ u_short copins;
+ u_short diwstrt;
+ u_short diwstop;
+ u_short ddfstrt;
+ u_short ddfstop;
+ u_short dmacon;
+ u_short clxcon;
+ u_short intena;
+ u_short intreq;
+ u_short adkcon;
+ struct {
+ u_short *audlc;
+ u_short audlen;
+ u_short audper;
+ u_short audvol;
+ u_short auddat;
+ u_short audspare[2];
+ } aud[4];
+ u_char *bplpt[8];
+ u_short bplcon0;
+ u_short bplcon1;
+ u_short bplcon2;
+ u_short bplcon3;
+ u_short bpl1mod;
+ u_short bpl2mod;
+ u_short bplcon4;
+ u_short clxcon2;
+ u_short bpldat[8];
+ u_char *sprpt[8];
+ struct {
+ u_short pos;
+ u_short ctl;
+ u_short dataa;
+ u_short datab;
+ } spr[8];
+ u_short color[32];
+ u_short htotal;
+ u_short hsstop;
+ u_short hbstrt;
+ u_short hbstop;
+ u_short vtotal;
+ u_short vsstop;
+ u_short vbstrt;
+ u_short vbstop;
+ u_short sprhstrt;
+ u_short sprhstop;
+ u_short bplhstrt;
+ u_short bplhstop;
+ u_short hhposw;
+ u_short hhposr;
+ u_short beamcon0;
+ u_short hsstrt;
+ u_short vsstrt;
+ u_short hcenter;
+ u_short diwhigh;
+ u_short spare4[11];
+ u_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 {
+ u_char pra; char pad0[0xff];
+ u_char prb; char pad1[0xff];
+ u_char ddra; char pad2[0xff];
+ u_char ddrb; char pad3[0xff];
+ u_char talo; char pad4[0xff];
+ u_char tahi; char pad5[0xff];
+ u_char tblo; char pad6[0xff];
+ u_char tbhi; char pad7[0xff];
+ u_char todlo; char pad8[0xff];
+ u_char todmid; char pad9[0xff];
+ u_char todhi; char pada[0x1ff];
+ u_char sdr; char padb[0xff];
+ u_char icr; char padc[0xff];
+ u_char cra; char padd[0xff];
+ u_char crb; char pade[0xff];
+};
+
+#if 1
+#define zTwoBase (0x80000000)
+#define ZTWO_PADDR(x) (((unsigned long)(x))-zTwoBase)
+#define ZTWO_VADDR(x) (((unsigned long)(x))+zTwoBase)
+#else
+#define zTwoBase 0
+#define ZTWO_PADDR(x) (x)
+#define ZTWO_VADDR(x) (x)
+#endif
+
+#define CUSTOM_PHYSADDR (0xdff000)
+#define custom ((*(volatile struct CUSTOM *)(zTwoBase+CUSTOM_PHYSADDR)))
+
+#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)
+#define chipaddr ((unsigned long)(zTwoBase + CHIP_PHYSADDR))
+void amiga_chip_init (void);
+void *amiga_chip_alloc (long size);
+void amiga_chip_free (void *);
+unsigned long amiga_chip_avail( void ); /*MILAN*/
+
+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 ((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 ((struct tod2000 *)(zTwoBase+0xDC0000))
+
+#endif /* asm-m68k/amigahw.h */