Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^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 */