~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/m68k/include/asm/amigahw.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php