^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) ** asm-m68k/amigahw.h -- This header defines some macros and pointers for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ** the various Amiga custom hardware registers.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) ** The naming conventions used here conform to those
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) ** used in the Amiga Hardware Reference Manual, 3rd Edition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) **
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) ** Copyright 1992 by Greg Harp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) **
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) ** This file is subject to the terms and conditions of the GNU General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) ** License. See the file COPYING in the main directory of this archive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) ** for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) **
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) ** Created: 9/24/92 by Greg Harp
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #ifndef _M68K_AMIGAHW_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define _M68K_AMIGAHW_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #include <linux/ioport.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #include <asm/bootinfo-amiga.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * Chipsets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) extern unsigned long amiga_chipset;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) * Miscellaneous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) extern unsigned long amiga_eclock; /* 700 kHz E Peripheral Clock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) extern unsigned long amiga_colorclock; /* 3.5 MHz Color Clock */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) extern unsigned long amiga_chip_size; /* Chip RAM Size (bytes) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) extern unsigned char amiga_vblank; /* VBLANK Frequency */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) #define AMIGAHW_DECLARE(name) unsigned name : 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) #define AMIGAHW_SET(name) (amiga_hw_present.name = 1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) #define AMIGAHW_PRESENT(name) (amiga_hw_present.name)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) struct amiga_hw_present {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /* video hardware */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) AMIGAHW_DECLARE(AMI_VIDEO); /* Amiga Video */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) AMIGAHW_DECLARE(AMI_BLITTER); /* Amiga Blitter */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) AMIGAHW_DECLARE(AMBER_FF); /* Amber Flicker Fixer */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) /* sound hardware */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) AMIGAHW_DECLARE(AMI_AUDIO); /* Amiga Audio */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) /* disk storage interfaces */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) AMIGAHW_DECLARE(AMI_FLOPPY); /* Amiga Floppy */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) AMIGAHW_DECLARE(A3000_SCSI); /* SCSI (wd33c93, A3000 alike) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) AMIGAHW_DECLARE(A4000_SCSI); /* SCSI (ncr53c710, A4000T alike) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) AMIGAHW_DECLARE(A1200_IDE); /* IDE (A1200 alike) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) AMIGAHW_DECLARE(A4000_IDE); /* IDE (A4000 alike) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) AMIGAHW_DECLARE(CD_ROM); /* CD ROM drive */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) /* other I/O hardware */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) AMIGAHW_DECLARE(AMI_KEYBOARD); /* Amiga Keyboard */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) AMIGAHW_DECLARE(AMI_MOUSE); /* Amiga Mouse */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) AMIGAHW_DECLARE(AMI_SERIAL); /* Amiga Serial */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) AMIGAHW_DECLARE(AMI_PARALLEL); /* Amiga Parallel */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) /* real time clocks */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) AMIGAHW_DECLARE(A2000_CLK); /* Hardware Clock (A2000 alike) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) AMIGAHW_DECLARE(A3000_CLK); /* Hardware Clock (A3000 alike) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) /* supporting hardware */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) AMIGAHW_DECLARE(CHIP_RAM); /* Chip RAM */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) AMIGAHW_DECLARE(PAULA); /* Paula (8364) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) AMIGAHW_DECLARE(DENISE); /* Denise (8362) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) AMIGAHW_DECLARE(DENISE_HR); /* Denise (8373) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) AMIGAHW_DECLARE(LISA); /* Lisa (8375) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) AMIGAHW_DECLARE(AGNUS_PAL); /* Normal/Fat PAL Agnus (8367/8371) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) AMIGAHW_DECLARE(AGNUS_NTSC); /* Normal/Fat NTSC Agnus (8361/8370) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) AMIGAHW_DECLARE(AGNUS_HR_PAL); /* Fat Hires PAL Agnus (8372) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) AMIGAHW_DECLARE(AGNUS_HR_NTSC); /* Fat Hires NTSC Agnus (8372) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) AMIGAHW_DECLARE(ALICE_PAL); /* PAL Alice (8374) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) AMIGAHW_DECLARE(ALICE_NTSC); /* NTSC Alice (8374) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) AMIGAHW_DECLARE(MAGIC_REKICK); /* A3000 Magic Hard Rekick */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) AMIGAHW_DECLARE(PCMCIA); /* PCMCIA Slot */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) AMIGAHW_DECLARE(ZORRO); /* Zorro AutoConfig */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) AMIGAHW_DECLARE(ZORRO3); /* Zorro III */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) extern struct amiga_hw_present amiga_hw_present;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) struct CUSTOM {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) unsigned short bltddat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) unsigned short dmaconr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) unsigned short vposr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) unsigned short vhposr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) unsigned short dskdatr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) unsigned short joy0dat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) unsigned short joy1dat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) unsigned short clxdat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) unsigned short adkconr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) unsigned short pot0dat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) unsigned short pot1dat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) unsigned short potgor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) unsigned short serdatr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) unsigned short dskbytr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) unsigned short intenar;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) unsigned short intreqr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) unsigned char *dskptr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) unsigned short dsklen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) unsigned short dskdat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) unsigned short refptr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) unsigned short vposw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) unsigned short vhposw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) unsigned short copcon;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) unsigned short serdat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) unsigned short serper;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) unsigned short potgo;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) unsigned short joytest;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) unsigned short strequ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) unsigned short strvbl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) unsigned short strhor;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) unsigned short strlong;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) unsigned short bltcon0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) unsigned short bltcon1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) unsigned short bltafwm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) unsigned short bltalwm;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) unsigned char *bltcpt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) unsigned char *bltbpt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) unsigned char *bltapt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) unsigned char *bltdpt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) unsigned short bltsize;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) unsigned char pad2d;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) unsigned char bltcon0l;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) unsigned short bltsizv;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) unsigned short bltsizh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) unsigned short bltcmod;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) unsigned short bltbmod;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) unsigned short bltamod;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) unsigned short bltdmod;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) unsigned short spare2[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) unsigned short bltcdat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) unsigned short bltbdat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) unsigned short bltadat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) unsigned short spare3[3];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) unsigned short deniseid;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) unsigned short dsksync;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) unsigned short *cop1lc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) unsigned short *cop2lc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) unsigned short copjmp1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) unsigned short copjmp2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) unsigned short copins;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) unsigned short diwstrt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) unsigned short diwstop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) unsigned short ddfstrt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) unsigned short ddfstop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) unsigned short dmacon;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) unsigned short clxcon;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) unsigned short intena;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) unsigned short intreq;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) unsigned short adkcon;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) unsigned short *audlc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) unsigned short audlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) unsigned short audper;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) unsigned short audvol;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) unsigned short auddat;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) unsigned short audspare[2];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) } aud[4];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) unsigned char *bplpt[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) unsigned short bplcon0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) unsigned short bplcon1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) unsigned short bplcon2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) unsigned short bplcon3;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) unsigned short bpl1mod;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) unsigned short bpl2mod;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) unsigned short bplcon4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) unsigned short clxcon2;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) unsigned short bpldat[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) unsigned char *sprpt[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) unsigned short pos;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) unsigned short ctl;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) unsigned short dataa;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) unsigned short datab;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) } spr[8];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) unsigned short color[32];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) unsigned short htotal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) unsigned short hsstop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) unsigned short hbstrt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) unsigned short hbstop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) unsigned short vtotal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) unsigned short vsstop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) unsigned short vbstrt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) unsigned short vbstop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) unsigned short sprhstrt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) unsigned short sprhstop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) unsigned short bplhstrt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) unsigned short bplhstop;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) unsigned short hhposw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) unsigned short hhposr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) unsigned short beamcon0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) unsigned short hsstrt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) unsigned short vsstrt;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) unsigned short hcenter;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) unsigned short diwhigh;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) unsigned short spare4[11];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) unsigned short fmode;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) * DMA register bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) #define DMAF_SETCLR (0x8000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) #define DMAF_AUD0 (0x0001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) #define DMAF_AUD1 (0x0002)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) #define DMAF_AUD2 (0x0004)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) #define DMAF_AUD3 (0x0008)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) #define DMAF_DISK (0x0010)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) #define DMAF_SPRITE (0x0020)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) #define DMAF_BLITTER (0x0040)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) #define DMAF_COPPER (0x0080)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) #define DMAF_RASTER (0x0100)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) #define DMAF_MASTER (0x0200)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) #define DMAF_BLITHOG (0x0400)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) #define DMAF_BLTNZERO (0x2000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) #define DMAF_BLTDONE (0x4000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) #define DMAF_ALL (0x01FF)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) struct CIA {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) unsigned char pra; char pad0[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) unsigned char prb; char pad1[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) unsigned char ddra; char pad2[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) unsigned char ddrb; char pad3[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230) unsigned char talo; char pad4[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) unsigned char tahi; char pad5[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) unsigned char tblo; char pad6[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233) unsigned char tbhi; char pad7[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234) unsigned char todlo; char pad8[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) unsigned char todmid; char pad9[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) unsigned char todhi; char pada[0x1ff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) unsigned char sdr; char padb[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) unsigned char icr; char padc[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239) unsigned char cra; char padd[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240) unsigned char crb; char pade[0xff];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243) #define zTwoBase (0x80000000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) #define ZTWO_PADDR(x) (((unsigned long)(x))-zTwoBase)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245) #define ZTWO_VADDR(x) ((void __iomem *)(((unsigned long)(x))+zTwoBase))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247) #define CUSTOM_PHYSADDR (0xdff000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) #define amiga_custom ((*(volatile struct CUSTOM *)(zTwoBase+CUSTOM_PHYSADDR)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) #define CIAA_PHYSADDR (0xbfe001)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251) #define CIAB_PHYSADDR (0xbfd000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) #define ciaa ((*(volatile struct CIA *)(zTwoBase + CIAA_PHYSADDR)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253) #define ciab ((*(volatile struct CIA *)(zTwoBase + CIAB_PHYSADDR)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255) #define CHIP_PHYSADDR (0x000000)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257) void amiga_chip_init (void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) void *amiga_chip_alloc(unsigned long size, const char *name);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) void *amiga_chip_alloc_res(unsigned long size, struct resource *res);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260) void amiga_chip_free(void *ptr);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) unsigned long amiga_chip_avail( void ); /*MILAN*/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262) extern volatile unsigned short amiga_audio_min_period;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) static inline void amifb_video_off(void)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) if (amiga_chipset == CS_ECS || amiga_chipset == CS_AGA) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267) /* program Denise/Lisa for a higher maximum play rate */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) amiga_custom.htotal = 113; /* 31 kHz */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269) amiga_custom.vtotal = 223; /* 70 Hz */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270) amiga_custom.beamcon0 = 0x4390; /* HARDDIS, VAR{BEAM,VSY,HSY,CSY}EN */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) /* suspend the monitor */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272) amiga_custom.hsstrt = amiga_custom.hsstop = 116;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273) amiga_custom.vsstrt = amiga_custom.vsstop = 226;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) amiga_audio_min_period = 57;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278) struct tod3000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279) unsigned int :28, second2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) unsigned int :28, second1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281) unsigned int :28, minute2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) unsigned int :28, minute1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283) unsigned int :28, hour2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) unsigned int :28, hour1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285) unsigned int :28, weekday:4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286) unsigned int :28, day2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) unsigned int :28, day1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288) unsigned int :28, month2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289) unsigned int :28, month1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) unsigned int :28, year2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) unsigned int :28, year1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292) unsigned int :28, cntrl1:4; /* control-byte 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) unsigned int :28, cntrl2:4; /* control-byte 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294) unsigned int :28, cntrl3:4; /* control-byte 3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296) #define TOD3000_CNTRL1_HOLD 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) #define TOD3000_CNTRL1_FREE 9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298) #define tod_3000 ((*(volatile struct tod3000 *)(zTwoBase+0xDC0000)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300) struct tod2000 {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) unsigned int :28, second2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302) unsigned int :28, second1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) unsigned int :28, minute2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) unsigned int :28, minute1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305) unsigned int :28, hour2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306) unsigned int :28, hour1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) unsigned int :28, day2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) unsigned int :28, day1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309) unsigned int :28, month2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) unsigned int :28, month1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311) unsigned int :28, year2:4; /* lower digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) unsigned int :28, year1:4; /* upper digit */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313) unsigned int :28, weekday:4;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) unsigned int :28, cntrl1:4; /* control-byte 1 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315) unsigned int :28, cntrl2:4; /* control-byte 2 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316) unsigned int :28, cntrl3:4; /* control-byte 3 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) #define TOD2000_CNTRL1_HOLD (1<<0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320) #define TOD2000_CNTRL1_BUSY (1<<1)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) #define TOD2000_CNTRL3_24HMODE (1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) #define TOD2000_HOUR1_PM (1<<2)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323) #define tod_2000 ((*(volatile struct tod2000 *)(zTwoBase+0xDC0000)))
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325) #endif /* _M68K_AMIGAHW_H */