cregit-Linux how code gets into the kernel

Release 4.14 arch/m68k/include/asm/amigahw.h

/*
** 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 _M68K_AMIGAHW_H

#define _M68K_AMIGAHW_H

#include <linux/ioport.h>

#include <asm/bootinfo-amiga.h>


    /*
     *  Chipsets
     */

extern unsigned long amiga_chipset;


    /*
     *  Miscellaneous
     */

extern unsigned long amiga_eclock;	/* 700 kHz E Peripheral Clock */
extern unsigned long amiga_colorclock;	/* 3.5 MHz Color Clock */
extern unsigned long amiga_chip_size;	/* Chip RAM Size (bytes) */
extern unsigned char amiga_vblank;	/* VBLANK Frequency */



#define AMIGAHW_DECLARE(name)	unsigned name : 1

#define AMIGAHW_SET(name)	(amiga_hw_present.name = 1)

#define AMIGAHW_PRESENT(name)	(amiga_hw_present.name)


struct amiga_hw_present {
    /* video hardware */
    AMIGAHW_DECLARE(AMI_VIDEO);		/* Amiga Video */
    AMIGAHW_DECLARE(AMI_BLITTER);	/* Amiga Blitter */
    AMIGAHW_DECLARE(AMBER_FF);		/* Amber Flicker Fixer */
    /* sound hardware */
    AMIGAHW_DECLARE(AMI_AUDIO);		/* Amiga Audio */
    /* disk storage interfaces */
    AMIGAHW_DECLARE(AMI_FLOPPY);	/* Amiga Floppy */
    AMIGAHW_DECLARE(A3000_SCSI);	/* SCSI (wd33c93, A3000 alike) */
    AMIGAHW_DECLARE(A4000_SCSI);	/* SCSI (ncr53c710, A4000T alike) */
    AMIGAHW_DECLARE(A1200_IDE);		/* IDE (A1200 alike) */
    AMIGAHW_DECLARE(A4000_IDE);		/* IDE (A4000 alike) */
    AMIGAHW_DECLARE(CD_ROM);		/* CD ROM drive */
    /* other I/O hardware */
    AMIGAHW_DECLARE(AMI_KEYBOARD);	/* Amiga Keyboard */
    AMIGAHW_DECLARE(AMI_MOUSE);		/* Amiga Mouse */
    AMIGAHW_DECLARE(AMI_SERIAL);	/* Amiga Serial */
    AMIGAHW_DECLARE(AMI_PARALLEL);	/* Amiga Parallel */
    /* real time clocks */
    AMIGAHW_DECLARE(A2000_CLK);		/* Hardware Clock (A2000 alike) */
    AMIGAHW_DECLARE(A3000_CLK);		/* Hardware Clock (A3000 alike) */
    /* supporting hardware */
    AMIGAHW_DECLARE(CHIP_RAM);		/* Chip RAM */
    AMIGAHW_DECLARE(PAULA);		/* Paula (8364) */
    AMIGAHW_DECLARE(DENISE);		/* Denise (8362) */
    AMIGAHW_DECLARE(DENISE_HR);		/* Denise (8373) */
    AMIGAHW_DECLARE(LISA);		/* Lisa (8375) */
    AMIGAHW_DECLARE(AGNUS_PAL);		/* Normal/Fat PAL Agnus (8367/8371) */
    AMIGAHW_DECLARE(AGNUS_NTSC);	/* Normal/Fat NTSC Agnus (8361/8370) */
    AMIGAHW_DECLARE(AGNUS_HR_PAL);	/* Fat Hires PAL Agnus (8372) */
    AMIGAHW_DECLARE(AGNUS_HR_NTSC);	/* Fat Hires NTSC Agnus (8372) */
    AMIGAHW_DECLARE(ALICE_PAL);		/* PAL Alice (8374) */
    AMIGAHW_DECLARE(ALICE_NTSC);	/* NTSC Alice (8374) */
    AMIGAHW_DECLARE(MAGIC_REKICK);	/* A3000 Magic Hard Rekick */
    AMIGAHW_DECLARE(PCMCIA);		/* PCMCIA Slot */
    AMIGAHW_DECLARE(ZORRO);		/* Zorro AutoConfig */
    AMIGAHW_DECLARE(ZORRO3);		/* Zorro III */
};

extern struct amiga_hw_present amiga_hw_present;


struct CUSTOM {
    
unsigned short bltddat;
    
unsigned short dmaconr;
    
unsigned short vposr;
    
unsigned short vhposr;
    
unsigned short dskdatr;
    
unsigned short joy0dat;
    
unsigned short joy1dat;
    
unsigned short clxdat;
    
unsigned short adkconr;
    
unsigned short pot0dat;
    
unsigned short pot1dat;
    
unsigned short potgor;
    
unsigned short serdatr;
    
unsigned short dskbytr;
    
unsigned short intenar;
    
unsigned short intreqr;
    
unsigned char  *dskptr;
    
unsigned short dsklen;
    
unsigned short dskdat;
    
unsigned short refptr;
    
unsigned short vposw;
    
unsigned short vhposw;
    
unsigned short copcon;
    
unsigned short serdat;
    
unsigned short serper;
    
unsigned short potgo;
    
unsigned short joytest;
    
unsigned short strequ;
    
unsigned short strvbl;
    
unsigned short strhor;
    
unsigned short strlong;
    
unsigned short bltcon0;
    
unsigned short bltcon1;
    
unsigned short bltafwm;
    
unsigned short bltalwm;
    
unsigned char  *bltcpt;
    
unsigned char  *bltbpt;
    
unsigned char  *bltapt;
    
unsigned char  *bltdpt;
    
unsigned short bltsize;
    
unsigned char  pad2d;
    
unsigned char  bltcon0l;
    
unsigned short bltsizv;
    
unsigned short bltsizh;
    
unsigned short bltcmod;
    
unsigned short bltbmod;
    
unsigned short bltamod;
    
unsigned short bltdmod;
    
unsigned short spare2[4];
    
unsigned short bltcdat;
    
unsigned short bltbdat;
    
unsigned short bltadat;
    
unsigned short spare3[3];
    
unsigned short deniseid;
    
unsigned short dsksync;
    
unsigned short *cop1lc;
    
unsigned short *cop2lc;
    
unsigned short copjmp1;
    
unsigned short copjmp2;
    
unsigned short copins;
    
unsigned short diwstrt;
    
unsigned short diwstop;
    
unsigned short ddfstrt;
    
unsigned short ddfstop;
    
unsigned short dmacon;
    
unsigned short clxcon;
    
unsigned short intena;
    
unsigned short intreq;
    
unsigned short adkcon;
    struct {
	
unsigned short	*audlc;
	
unsigned short audlen;
	
unsigned short audper;
	
unsigned short audvol;
	
unsigned short auddat;
	
unsigned short audspare[2];
    
} aud[4];
    
unsigned char  *bplpt[8];
    
unsigned short bplcon0;
    
unsigned short bplcon1;
    
unsigned short bplcon2;
    
unsigned short bplcon3;
    
unsigned short bpl1mod;
    
unsigned short bpl2mod;
    
unsigned short bplcon4;
    
unsigned short clxcon2;
    
unsigned short bpldat[8];
    
unsigned char  *sprpt[8];
    struct {
	
unsigned short pos;
	
unsigned short ctl;
	
unsigned short dataa;
	
unsigned short datab;
    
} spr[8];
    
unsigned short color[32];
    
unsigned short htotal;
    
unsigned short hsstop;
    
unsigned short hbstrt;
    
unsigned short hbstop;
    
unsigned short vtotal;
    
unsigned short vsstop;
    
unsigned short vbstrt;
    
unsigned short vbstop;
    
unsigned short sprhstrt;
    
unsigned short sprhstop;
    
unsigned short bplhstrt;
    
unsigned short bplhstop;
    
unsigned short hhposw;
    
unsigned short hhposr;
    
unsigned short beamcon0;
    
unsigned short hsstrt;
    
unsigned short vsstrt;
    
unsigned short hcenter;
    
unsigned short diwhigh;
    
unsigned short spare4[11];
    
unsigned 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 {
    

unsigned char pra;		char pad0[0xff];
    

unsigned char prb;		char pad1[0xff];
    

unsigned char ddra;		char pad2[0xff];
    

unsigned char ddrb;		char pad3[0xff];
    

unsigned char talo;		char pad4[0xff];
    

unsigned char tahi;		char pad5[0xff];
    

unsigned char tblo;		char pad6[0xff];
    

unsigned char tbhi;		char pad7[0xff];
    

unsigned char todlo;	char pad8[0xff];
    

unsigned char todmid;	char pad9[0xff];
    

unsigned char todhi;	char pada[0x1ff];
    

unsigned char sdr;		char padb[0xff];
    

unsigned char icr;		char padc[0xff];
    

unsigned char cra;		char padd[0xff];
    

unsigned char crb;		char pade[0xff];
};


#define zTwoBase (0x80000000)

#define ZTWO_PADDR(x) (((unsigned long)(x))-zTwoBase)

#define ZTWO_VADDR(x) ((void __iomem *)(((unsigned long)(x))+zTwoBase))


#define CUSTOM_PHYSADDR     (0xdff000)

#define amiga_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)

void amiga_chip_init (void);
void *amiga_chip_alloc(unsigned long size, const char *name);
void *amiga_chip_alloc_res(unsigned long size, struct resource *res);
void amiga_chip_free(void *ptr);
unsigned long amiga_chip_avail( void ); /*MILAN*/
extern volatile unsigned short amiga_audio_min_period;


static inline void amifb_video_off(void) { if (amiga_chipset == CS_ECS || amiga_chipset == CS_AGA) { /* program Denise/Lisa for a higher maximum play rate */ amiga_custom.htotal = 113; /* 31 kHz */ amiga_custom.vtotal = 223; /* 70 Hz */ amiga_custom.beamcon0 = 0x4390; /* HARDDIS, VAR{BEAM,VSY,HSY,CSY}EN */ /* suspend the monitor */ amiga_custom.hsstrt = amiga_custom.hsstop = 116; amiga_custom.vsstrt = amiga_custom.vsstop = 226; amiga_audio_min_period = 57; } }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)6189.71%150.00%
Al Viro710.29%150.00%
Total68100.00%2100.00%

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 ((*(volatile 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 ((*(volatile struct tod2000 *)(zTwoBase+0xDC0000))) #endif /* _M68K_AMIGAHW_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)150398.95%969.23%
Al Viro80.53%17.69%
Geert Uytterhoeven80.53%323.08%
Total1519100.00%13100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.