11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** linux/atarihw.h -- This header defines some macros and pointers for
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds**                    the various Atari custom hardware registers.
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds**
51039592d6fe3221c406b02d7341ef4212bc25020David Woodhouse** Copyright 1994 by Björn Brauel
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds**
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** 5/1/94 Roman Hodek:
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds**   Added definitions for TT specific chips.
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds**
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** 1996-09-13 lars brinkhoff <f93labr@dd.chalmers.se>:
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds**   Finally added definitions for the matrix/codec and the DSP56001 host
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds**   interface.
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds**
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** This file is subject to the terms and conditions of the GNU General Public
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** License.  See the file COPYING in the main directory of this archive
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** for more details.
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds**
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _LINUX_ATARIHW_H_
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _LINUX_ATARIHW_H_
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/types.h>
244c3c522bcebe16a717d7a809fd14b11823794027Geert Uytterhoeven#include <asm/bootinfo-atari.h>
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/raw_io.h>
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern u_long atari_mch_cookie;
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern u_long atari_mch_type;
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern u_long atari_switches;
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int atari_rtc_year_offset;
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern int atari_dont_touch_floppy_select;
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
33125298d2daf7c9005d5bc26313a037b798c8de70Geert Uytterhoevenextern int atari_SCC_reset_done;
34125298d2daf7c9005d5bc26313a037b798c8de70Geert Uytterhoeven
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* convenience macros for testing machine type */
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MACH_IS_ST	((atari_mch_cookie >> 16) == ATARI_MCH_ST)
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MACH_IS_STE	((atari_mch_cookie >> 16) == ATARI_MCH_STE && \
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			 (atari_mch_cookie & 0xffff) == 0)
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MACH_IS_MSTE	((atari_mch_cookie >> 16) == ATARI_MCH_STE && \
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			 (atari_mch_cookie & 0xffff) == 0x10)
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MACH_IS_TT	((atari_mch_cookie >> 16) == ATARI_MCH_TT)
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MACH_IS_FALCON	((atari_mch_cookie >> 16) == ATARI_MCH_FALCON)
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MACH_IS_MEDUSA	(atari_mch_type == ATARI_MACH_MEDUSA)
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MACH_IS_AB40	(atari_mch_type == ATARI_MACH_AB40)
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* values for atari_switches */
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_IKBD	0x01
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_MIDI	0x02
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_SND6	0x04
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_SND7	0x08
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_OVSC_SHIFT	16
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_OVSC_IKBD	(ATARI_SWITCH_IKBD << ATARI_SWITCH_OVSC_SHIFT)
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_OVSC_MIDI	(ATARI_SWITCH_MIDI << ATARI_SWITCH_OVSC_SHIFT)
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_OVSC_SND6	(ATARI_SWITCH_SND6 << ATARI_SWITCH_OVSC_SHIFT)
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_OVSC_SND7	(ATARI_SWITCH_SND7 << ATARI_SWITCH_OVSC_SHIFT)
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARI_SWITCH_OVSC_MASK	0xffff0000
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Define several Hardware-Chips for indication so that for the ATARI we do
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * no longer decide whether it is a Falcon or other machine . It's just
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * important what hardware the machine uses
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* ++roman 08/08/95: rewritten from ORing constants to a C bitfield */
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARIHW_DECLARE(name)	unsigned name : 1
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARIHW_SET(name)	(atari_hw_present.name = 1)
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ATARIHW_PRESENT(name)	(atari_hw_present.name)
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct atari_hw_present {
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* video hardware */
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(STND_SHIFTER);	/* ST-Shifter - no base low ! */
731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(EXTD_SHIFTER);	/* STe-Shifter - 24 bit address */
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(TT_SHIFTER);	/* TT-Shifter */
751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(VIDEL_SHIFTER);	/* Falcon-Shifter */
761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* sound hardware */
771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(YM_2149);		/* Yamaha YM 2149 */
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(PCM_8BIT);		/* PCM-Sound in STe-ATARI */
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(CODEC);		/* CODEC Sound (Falcon) */
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* disk storage interfaces */
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(TT_SCSI);		/* Directly mapped NCR5380 */
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(ST_SCSI);		/* NCR5380 via ST-DMA (Falcon) */
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(ACSI);		/* Standard ACSI like in STs */
841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(IDE);		/* IDE Interface */
851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(FDCSPEED);		/* 8/16 MHz switch for FDC */
861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* other I/O hardware */
871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(ST_MFP);		/* The ST-MFP (there should be no Atari
881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds					   without it... but who knows?) */
891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(TT_MFP);		/* 2nd MFP */
901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(SCC);		/* Serial Communications Contr. */
911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(ST_ESCC);		/* SCC Z83230 in an ST */
921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(ANALOG_JOY);	/* Paddle Interface for STe
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds					   and Falcon */
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(MICROWIRE);		/* Microwire Interface */
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* DMA */
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(STND_DMA);		/* 24 Bit limited ST-DMA */
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(EXTD_DMA);		/* 32 Bit ST-DMA */
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(SCSI_DMA);		/* DMA for the NCR5380 */
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(SCC_DMA);		/* DMA for the SCC */
1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* real time clocks */
1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(TT_CLK);		/* TT compatible clock chip */
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(MSTE_CLK);		/* Mega ST(E) clock chip */
1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    /* supporting hardware */
1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(SCU);		/* System Control Unit */
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(BLITTER);		/* Blitter */
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(VME);		/* VME Bus */
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    ATARIHW_DECLARE(DSP56K);		/* DSP56k processor in Falcon */
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsextern struct atari_hw_present atari_hw_present;
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Reading the MFP port register gives a machine independent delay, since the
1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * MFP always has a 8 MHz clock. This avoids problems with the varying length
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * of nops on various machines. Somebody claimed that the tstb takes 600 ns.
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MFPDELAY() \
1183d92e8f3ae9ba21cac30370eb254ed9dc20df043Geert Uytterhoeven	__asm__ __volatile__ ( "tstb %0" : : "m" (st_mfp.par_dt_reg) : "cc" );
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Do cache push/invalidate for DMA read/write. This function obeys the
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * snooping on some machines (Medusa) and processors: The Medusa itself can
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * snoop, but only the '040 can source data from its cache to DMA writes i.e.,
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * reads from memory). Both '040 and '060 invalidate cache entries on snooped
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DMA reads (i.e., writes to memory).
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define atari_readb   raw_inb
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define atari_writeb  raw_outb
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define atari_inb_p   raw_inb
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define atari_outb_p  raw_outb
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/mm.h>
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/cacheflush.h>
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void dma_cache_maintenance( unsigned long paddr,
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds					  unsigned long len,
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds					  int writeflag )
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	if (writeflag) {
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		if (!MACH_IS_MEDUSA || CPU_IS_060)
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			cache_push( paddr, len );
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	}
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	else {
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds		if (!MACH_IS_MEDUSA)
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			cache_clear( paddr, len );
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	}
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** Shifter
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ST_LOW  0
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ST_MID  1
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ST_HIGH 2
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TT_LOW  7
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TT_MID  4
1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TT_HIGH 6
1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SHF_BAS (0xffff8200)
1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct SHIFTER
1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds {
1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char pad1;
1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char bas_hi;
1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char pad2;
1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char bas_md;
1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char pad3;
1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char volatile vcounthi;
1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char pad4;
1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char volatile vcountmid;
1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char pad5;
1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char volatile vcountlow;
1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char volatile syncmode;
1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char pad6;
1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char pad7;
1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char bas_lo;
1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds };
1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define shifter ((*(volatile struct SHIFTER *)SHF_BAS))
1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SHF_FBAS (0xffff820e)
1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct SHIFTER_F030
1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds {
1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short off_next;
1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short scn_width;
1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds };
1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define shifter_f030 ((*(volatile struct SHIFTER_F030 *)SHF_FBAS))
1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	SHF_TBAS (0xffff8200)
1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct SHIFTER_TT {
1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy0;
1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	bas_hi;			/* video mem base addr, high and mid byte */
1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy1;
1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	bas_md;
2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy2;
2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	vcount_hi;		/* pointer to currently displayed byte */
2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy3;
2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	vcount_md;
2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy4;
2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	vcount_lo;
2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short	st_sync;		/* ST compatible sync mode register, unused */
2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy5;
2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	bas_lo;			/* video mem addr, low byte */
2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy6[2+3*16];
2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/* $ffff8240: */
2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short	color_reg[16];	/* 16 color registers */
2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	st_shiftmode;	/* ST compatible shift mode register, unused */
2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char  char_dummy7;
2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short tt_shiftmode;	/* TT shift mode register */
2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
2181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	shifter_tt	((*(volatile struct SHIFTER_TT *)SHF_TBAS))
2191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* values for shifter_tt->tt_shiftmode */
2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SHIFTER_STLOW		0x0000
2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SHIFTER_STMID		0x0100
2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SHIFTER_STHIGH		0x0200
2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SHIFTER_TTLOW		0x0700
2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SHIFTER_TTMID		0x0400
2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SHIFTER_TTHIGH		0x0600
2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SHIFTER_MODEMASK	0x0700
2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define TT_SHIFTER_NUMMODE	0x0008
2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SHIFTER_PALETTE_MASK	0x000f
2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SHIFTER_GRAYMODE		0x1000
2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 256 TT palette registers */
2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_PALETTE_BASE	(0xffff8400)
2341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	tt_palette	((volatile u_short *)TT_PALETTE_BASE)
2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_PALETTE_RED_MASK		0x0f00
2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_PALETTE_GREEN_MASK	0x00f0
2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_PALETTE_BLUE_MASK	0x000f
2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** Falcon030 VIDEL Video Controller
2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** for description see File 'linux\tools\atari\hardware.txt
2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define f030_col ((u_long *)		0xffff9800)
2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define f030_xreg ((u_short*)		0xffff8282)
2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define f030_yreg ((u_short*)		0xffff82a2)
2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define f030_creg ((u_short*)		0xffff82c0)
2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define f030_sreg ((u_short*)		0xffff8260)
2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define f030_mreg ((u_short*)		0xffff820a)
2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define f030_linewidth ((u_short*)      0xffff820e)
2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define f030_hscroll ((u_char*)		0xffff8265)
2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define VIDEL_BAS (0xffff8260)
2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct VIDEL {
2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short st_shift;
2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short pad1;
2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char  xoffset_s;
2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char  xoffset;
2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short f_shift;
2601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char  pad2[0x1a];
2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short hht;
2621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short hbb;
2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short hbe;
2641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short hdb;
2651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short hde;
2661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short hss;
2671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char  pad3[0x14];
2681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short vft;
2691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short vbb;
2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short vbe;
2711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short vdb;
2721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short vde;
2731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short vss;
2741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char  pad4[0x12];
2751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short control;
2761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short mode;
2771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
2781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	videl	((*(volatile struct VIDEL *)VIDEL_BAS))
2791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
2811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** DMA/WD1772 Disk Controller
2821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
2831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
2841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FWD_BAS (0xffff8604)
2851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct DMA_WD
2861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds {
2871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short fdc_acces_seccount;
2881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short dma_mode_status;
2891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char dma_vhi;	/* Some extended ST-DMAs can handle 32 bit addresses */
2901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char dma_hi;
2911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy2;
2921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char dma_md;
2931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy3;
2941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char dma_lo;
2951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short fdc_speed;
2961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds };
2971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define dma_wd ((*(volatile struct DMA_WD *)FWD_BAS))
2981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* alias */
2991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	st_dma dma_wd
3001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* The two highest bytes of an extended DMA as a short; this is a must
3011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * for the Medusa.
3021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define st_dma_ext_dmahi (*((volatile unsigned short *)0xffff8608))
3041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
3061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** YM2149 Sound Chip
3071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** access in bytes
3081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define YM_BAS (0xffff8800)
3111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct SOUND_YM
3121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds {
3131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char rd_data_reg_sel;
3141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy1;
3151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char wd_data;
3161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds };
3171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define sound_ym ((*(volatile struct SOUND_YM *)YM_BAS))
3181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* TT SCSI DMA */
3201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SCSI_DMA_BAS	(0xffff8700)
3221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct TT_DMA {
3231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy0;
3241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dma_addr_hi;
3251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy1;
3261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dma_addr_hmd;
3271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy2;
3281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dma_addr_lmd;
3291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy3;
3301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dma_addr_lo;
3311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy4;
3321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dma_cnt_hi;
3331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy5;
3341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dma_cnt_hmd;
3351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy6;
3361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dma_cnt_lmd;
3371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy7;
3381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dma_cnt_lo;
3391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_long	dma_restdata;
3401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short	dma_ctrl;
3411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	tt_scsi_dma	((*(volatile struct TT_DMA *)TT_SCSI_DMA_BAS))
3431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* TT SCSI Controller 5380 */
3451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_5380_BAS	(0xffff8781)
3471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct TT_5380 {
3481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	scsi_data;
3491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy1;
3501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	scsi_icr;
3511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy2;
3521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	scsi_mode;
3531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy3;
3541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	scsi_tcr;
3551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy4;
3561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	scsi_idstat;
3571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy5;
3581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	scsi_dmastat;
3591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy6;
3601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	scsi_targrcv;
3611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy7;
3621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	scsi_inircv;
3631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	tt_scsi			((*(volatile struct TT_5380 *)TT_5380_BAS))
3651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	tt_scsi_regp	((volatile char *)TT_5380_BAS)
3661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
3691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** Falcon DMA Sound Subsystem
3701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
3711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MATRIX_BASE (0xffff8930)
3731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct MATRIX
3741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
3751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short source;
3761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short destination;
3771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char external_frequency_divider;
3781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char internal_frequency_divider;
3791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
3801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define falcon_matrix (*(volatile struct MATRIX *)MATRIX_BASE)
3811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
3821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CODEC_BASE (0xffff8936)
3831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct CODEC
3841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{
3851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char tracks;
3861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char input_source;
3871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CODEC_SOURCE_ADC        1
3881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CODEC_SOURCE_MATRIX     2
3891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char adc_source;
3901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ADC_SOURCE_RIGHT_PSG    1
3911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ADC_SOURCE_LEFT_PSG     2
3921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char gain;
3931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CODEC_GAIN_RIGHT        0x0f
3941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CODEC_GAIN_LEFT         0xf0
3951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char attenuation;
3961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CODEC_ATTENUATION_RIGHT 0x0f
3971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CODEC_ATTENUATION_LEFT  0xf0
3981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char unused1;
3991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char status;
4001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CODEC_OVERFLOW_RIGHT    1
4011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define CODEC_OVERFLOW_LEFT     2
4021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char unused2, unused3, unused4, unused5;
4031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char gpio_directions;
404398476195a561271654ecce0fa27330688d326dfGeert Uytterhoeven#define CODEC_GPIO_IN           0
405398476195a561271654ecce0fa27330688d326dfGeert Uytterhoeven#define CODEC_GPIO_OUT          1
4061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char unused6;
4071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char gpio_data;
4081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
4091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define falcon_codec (*(volatile struct CODEC *)CODEC_BASE)
4101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
4121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** Falcon Blitter
4131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/
4141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define BLT_BAS (0xffff8a00)
4161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct BLITTER
4181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds {
4191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short halftone[16];
4201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short src_x_inc;
4211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short src_y_inc;
4221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_long src_address;
4231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short endmask1;
4241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short endmask2;
4251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short endmask3;
4261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short dst_x_inc;
4271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short dst_y_inc;
4281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_long dst_address;
4291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short wd_per_line;
4301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short ln_per_bb;
4311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short hlf_op_reg;
4321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short log_op_reg;
4331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short lin_nm_reg;
4341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_short skew_reg;
4351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds };
4361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define blitter ((*(volatile struct BLITTER *)BLT_BAS))
4371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
4401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** SCC Z8530
4411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
4421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SCC_BAS (0xffff8c81)
4441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct SCC
4451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds {
4461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char cha_a_ctrl;
4471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy1;
4481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char cha_a_data;
4491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy2;
4501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char cha_b_ctrl;
4511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy3;
4521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char cha_b_data;
4531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds };
454de339e4b792aed799bec23251e83f594ac44ae04Geert Uytterhoeven# define atari_scc ((*(volatile struct SCC*)SCC_BAS))
4551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* The ESCC (Z85230) in an Atari ST. The channels are reversed! */
4571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define st_escc ((*(volatile struct SCC*)0xfffffa31))
4581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define st_escc_dsr ((*(volatile char *)0xfffffa39))
4591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* TT SCC DMA Controller (same chip as SCSI DMA) */
4611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SCC_DMA_BAS	(0xffff8c00)
4631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	tt_scc_dma	((*(volatile struct TT_DMA *)TT_SCC_DMA_BAS))
4641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
4661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** VIDEL Palette Register
4671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
4681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define FPL_BAS (0xffff9800)
4701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct VIDEL_PALETTE
4711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds {
4721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_long reg[256];
4731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds };
4741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define videl_palette ((*(volatile struct VIDEL_PALETTE*)FPL_BAS))
4751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
4781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** Falcon DSP Host Interface
4791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
4801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_HOST_INTERFACE_BASE (0xffffa200)
4821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct DSP56K_HOST_INTERFACE {
4831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char icr;
4841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ICR_RREQ	0x01
4851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ICR_TREQ	0x02
4861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ICR_HF0	0x08
4871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ICR_HF1	0x10
4881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ICR_HM0	0x20
4891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ICR_HM1	0x40
4901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ICR_INIT	0x80
4911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char cvr;
4931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_CVR_HV_MASK 0x1f
4941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_CVR_HC	0x80
4951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
4961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char isr;
4971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ISR_RXDF	0x01
4981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ISR_TXDE	0x02
4991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ISR_TRDY	0x04
5001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ISR_HF2	0x08
5011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ISR_HF3	0x10
5021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ISR_DMA	0x40
5031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DSP56K_ISR_HREQ	0x80
5041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char ivr;
5061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  union {
5081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    u_char b[4];
5091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    u_short w[2];
5101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    u_long l;
5111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  } data;
5121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
5131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define dsp56k_host_interface ((*(volatile struct DSP56K_HOST_INTERFACE *)DSP56K_HOST_INTERFACE_BASE))
5141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
5161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** MFP 68901
5171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
5181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MFP_BAS (0xfffffa01)
5201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct MFP
5211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds {
5221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char par_dt_reg;
5231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy1;
5241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char active_edge;
5251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy2;
5261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char data_dir;
5271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy3;
5281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char int_en_a;
5291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy4;
5301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char int_en_b;
5311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy5;
5321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char int_pn_a;
5331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy6;
5341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char int_pn_b;
5351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy7;
5361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char int_sv_a;
5371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy8;
5381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char int_sv_b;
5391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy9;
5401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char int_mk_a;
5411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy10;
5421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char int_mk_b;
5431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy11;
5441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char vec_adr;
5451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy12;
5461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char tim_ct_a;
5471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy13;
5481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char tim_ct_b;
5491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy14;
5501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char tim_ct_cd;
5511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy15;
5521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char tim_dt_a;
5531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy16;
5541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char tim_dt_b;
5551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy17;
5561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char tim_dt_c;
5571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy18;
5581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char tim_dt_d;
5591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy19;
5601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char sync_char;
5611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy20;
5621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char usart_ctr;
5631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy21;
5641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char rcv_stat;
5651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy22;
5661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char trn_stat;
5671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy23;
5681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char usart_dta;
5691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds };
5703d92e8f3ae9ba21cac30370eb254ed9dc20df043Geert Uytterhoeven# define st_mfp ((*(volatile struct MFP*)MFP_BAS))
5711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* TT's second MFP */
5731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_MFP_BAS	(0xfffffa81)
5751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define tt_mfp ((*(volatile struct MFP*)TT_MFP_BAS))
5761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* TT System Control Unit */
5791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
5801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_SCU_BAS	(0xffff8e01)
5811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct TT_SCU {
5821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	sys_mask;
5831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy1;
5841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	sys_stat;
5851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy2;
5861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	softint;
5871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy3;
5881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	vmeint;
5891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy4;
5901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	gp_reg1;
5911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy5;
5921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	gp_reg2;
5931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy6;
5941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	vme_mask;
5951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	char_dummy7;
5961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	vme_stat;
5971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
5981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	tt_scu	((*(volatile struct TT_SCU *)TT_SCU_BAS))
5991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* TT real time clock */
6011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_RTC_BAS	(0xffff8961)
6031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct TT_RTC {
6041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	regsel;
6051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dummy;
6061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	data;
6071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
6081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	tt_rtc	((*(volatile struct TT_RTC *)TT_RTC_BAS))
6091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
6121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds** ACIA 6850
6131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
6141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* constants for the ACIA registers */
6151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* baudrate selection and reset (Baudrate = clock/factor) */
6171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_DIV1  0
6181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_DIV16 1
6191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_DIV64 2
6201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_RESET 3
6211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* character format */
6231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_D7E2S (0<<2)	/* 7 data, even parity, 2 stop */
6241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_D7O2S (1<<2)	/* 7 data, odd parity, 2 stop */
6251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_D7E1S (2<<2)	/* 7 data, even parity, 1 stop */
6261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_D7O1S (3<<2)	/* 7 data, odd parity, 1 stop */
6271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_D8N2S (4<<2)	/* 8 data, no parity, 2 stop */
6281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_D8N1S (5<<2)	/* 8 data, no parity, 1 stop */
6291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_D8E1S (6<<2)	/* 8 data, even parity, 1 stop */
6301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_D8O1S (7<<2)	/* 8 data, odd parity, 1 stop */
6311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* transmit control */
6331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_RLTID (0<<5)	/* RTS low, TxINT disabled */
6341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_RLTIE (1<<5)	/* RTS low, TxINT enabled */
6351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_RHTID (2<<5)	/* RTS high, TxINT disabled */
6361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_RLTIDSB (3<<5)	/* RTS low, TxINT disabled, send break */
6371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* receive control */
6391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_RID (0<<7)		/* RxINT disabled */
6401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_RIE (1<<7)		/* RxINT enabled */
6411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* status fields of the ACIA */
6431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_RDRF 1		/* Receive Data Register Full */
6441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_TDRE (1<<1)	/* Transmit Data Register Empty */
6451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_DCD  (1<<2)	/* Data Carrier Detect */
6461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_CTS  (1<<3)	/* Clear To Send */
6471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_FE   (1<<4)	/* Framing Error */
6481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_OVRN (1<<5)	/* Receiver Overrun */
6491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_PE   (1<<6)	/* Parity Error */
6501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_IRQ  (1<<7)	/* Interrupt Request */
6511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ACIA_BAS (0xfffffc00)
6531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct ACIA
6541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds {
6551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char key_ctrl;
6561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy1;
6571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char key_data;
6581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy2;
6591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char mid_ctrl;
6601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char char_dummy3;
6611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds  u_char mid_data;
6621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds };
6631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define acia ((*(volatile struct ACIA*)ACIA_BAS))
6641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
6651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_DMASND_BAS (0xffff8900)
6661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct TT_DMASND {
6671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	int_ctrl;	/* Falcon: Interrupt control */
6681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	ctrl;
6691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad2;
6701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	bas_hi;
6711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad3;
6721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	bas_mid;
6731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad4;
6741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	bas_low;
6751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad5;
6761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	addr_hi;
6771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad6;
6781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	addr_mid;
6791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad7;
6801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	addr_low;
6811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad8;
6821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	end_hi;
6831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad9;
6841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	end_mid;
6851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad10;
6861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	end_low;
6871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad11[12];
6881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	track_select;	/* Falcon */
6891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	mode;
6901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	pad12[14];
6911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	/* Falcon only: */
6921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short	cbar_src;
6931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short cbar_dst;
6941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	ext_div;
6951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	int_div;
6961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	rec_track_select;
6971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	dac_src;
6981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	adc_src;
6991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char	input_gain;
7001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short	output_atten;
7011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define tt_dmasnd ((*(volatile struct TT_DMASND *)TT_DMASND_BAS))
7031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_MFP_INT_REPLAY     0x01
7051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_MFP_INT_RECORD     0x02
7061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_TIMERA_INT_REPLAY  0x04
7071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_TIMERA_INT_RECORD  0x08
7081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	DMASND_CTRL_OFF		  0x00
7101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	DMASND_CTRL_ON		  0x01
7111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	DMASND_CTRL_REPEAT	  0x02
7121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_CTRL_RECORD_ON     0x10
7131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_CTRL_RECORD_OFF    0x00
7141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_CTRL_RECORD_REPEAT 0x20
7151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_CTRL_SELECT_REPLAY 0x00
7161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_CTRL_SELECT_RECORD 0x80
7171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	DMASND_MODE_MONO	  0x80
7181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	DMASND_MODE_STEREO	  0x00
7191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_MODE_8BIT	  0x00
7201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASND_MODE_16BIT	  0x40	/* Falcon only */
7211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	DMASND_MODE_6KHZ	  0x00	/* Falcon: mute */
7221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	DMASND_MODE_12KHZ	  0x01
7231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	DMASND_MODE_25KHZ	  0x02
7241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	DMASND_MODE_50KHZ	  0x03
7251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASNDSetBase(bufstart)						\
7281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    do {								\
7291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	tt_dmasnd.bas_hi  = (unsigned char)(((bufstart) & 0xff0000) >> 16); \
7301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	tt_dmasnd.bas_mid = (unsigned char)(((bufstart) & 0x00ff00) >> 8); \
7311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	tt_dmasnd.bas_low = (unsigned char) ((bufstart) & 0x0000ff); \
7321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    } while( 0 )
7331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASNDGetAdr() ((tt_dmasnd.addr_hi << 16) +	\
7351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			(tt_dmasnd.addr_mid << 8) +	\
7361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds			(tt_dmasnd.addr_low))
7371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DMASNDSetEnd(bufend)				\
7391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    do {						\
7401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	tt_dmasnd.end_hi  = (unsigned char)(((bufend) & 0xff0000) >> 16); \
7411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	tt_dmasnd.end_mid = (unsigned char)(((bufend) & 0x00ff00) >> 8); \
7421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	tt_dmasnd.end_low = (unsigned char) ((bufend) & 0x0000ff); \
7431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    } while( 0 )
7441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	TT_MICROWIRE_BAS	(0xffff8922)
7471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct TT_MICROWIRE {
7481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short	data;
7491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_short	mask;
7501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
7511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds# define tt_microwire ((*(volatile struct TT_MICROWIRE *)TT_MICROWIRE_BAS))
7521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MW_LM1992_ADDR		0x0400
7541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MW_LM1992_VOLUME(dB)	\
7561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    (0x0c0 | ((dB) < -80 ? 0 : (dB) > 0 ? 40 : (((dB) + 80) / 2)))
7571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MW_LM1992_BALLEFT(dB)	\
7581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    (0x140 | ((dB) < -40 ? 0 : (dB) > 0 ? 20 : (((dB) + 40) / 2)))
7591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MW_LM1992_BALRIGHT(dB)	\
7601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    (0x100 | ((dB) < -40 ? 0 : (dB) > 0 ? 20 : (((dB) + 40) / 2)))
7611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MW_LM1992_TREBLE(dB)	\
7621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    (0x080 | ((dB) < -12 ? 0 : (dB) > 12 ? 12 : (((dB) / 2) + 6)))
7631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MW_LM1992_BASS(dB)	\
7641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds    (0x040 | ((dB) < -12 ? 0 : (dB) > 12 ? 12 : (((dB) / 2) + 6)))
7651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MW_LM1992_PSG_LOW	0x000
7671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MW_LM1992_PSG_HIGH	0x001
7681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	MW_LM1992_PSG_OFF	0x002
7691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MSTE_RTC_BAS	(0xfffffc21)
7711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct MSTE_RTC {
7731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char sec_ones;
7741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy1;
7751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char sec_tens;
7761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy2;
7771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char min_ones;
7781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy3;
7791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char min_tens;
7801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy4;
7811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char hr_ones;
7821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy5;
7831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char hr_tens;
7841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy6;
7851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char weekday;
7861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy7;
7871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char day_ones;
7881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy8;
7891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char day_tens;
7901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy9;
7911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char mon_ones;
7921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy10;
7931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char mon_tens;
7941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy11;
7951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char year_ones;
7961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy12;
7971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char year_tens;
7981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy13;
7991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char mode;
8001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy14;
8011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char test;
8021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char dummy15;
8031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	u_char reset;
8041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
8051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
8061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define mste_rtc ((*(volatile struct MSTE_RTC *)MSTE_RTC_BAS))
8071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
808736b24db32a806f79b43511e461321981bcfd5bfMichael Schmitz/*
809736b24db32a806f79b43511e461321981bcfd5bfMichael Schmitz** EtherNAT add-on card for Falcon - combined ethernet and USB adapter
810736b24db32a806f79b43511e461321981bcfd5bfMichael Schmitz*/
811736b24db32a806f79b43511e461321981bcfd5bfMichael Schmitz
812736b24db32a806f79b43511e461321981bcfd5bfMichael Schmitz#define ATARI_ETHERNAT_PHYS_ADDR	0x80000000
813736b24db32a806f79b43511e461321981bcfd5bfMichael Schmitz
8141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* linux/atarihw.h */
8151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
816