18c2ecf20Sopenharmony_ci/*
28c2ecf20Sopenharmony_ci * Definitions for the SGI MACE (Multimedia, Audio and Communications Engine)
38c2ecf20Sopenharmony_ci *
48c2ecf20Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public
58c2ecf20Sopenharmony_ci * License.  See the file "COPYING" in the main directory of this archive
68c2ecf20Sopenharmony_ci * for more details.
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci * Copyright (C) 2000 Harald Koerfgen
98c2ecf20Sopenharmony_ci * Copyright (C) 2004 Ladislav Michl
108c2ecf20Sopenharmony_ci */
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#ifndef __ASM_MACE_H__
138c2ecf20Sopenharmony_ci#define __ASM_MACE_H__
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci/*
168c2ecf20Sopenharmony_ci * Address map
178c2ecf20Sopenharmony_ci */
188c2ecf20Sopenharmony_ci#define MACE_BASE	0x1f000000	/* physical */
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci/*
218c2ecf20Sopenharmony_ci * PCI interface
228c2ecf20Sopenharmony_ci */
238c2ecf20Sopenharmony_cistruct mace_pci {
248c2ecf20Sopenharmony_ci	volatile unsigned int error_addr;
258c2ecf20Sopenharmony_ci	volatile unsigned int error;
268c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_MASTER_ABORT		BIT(31)
278c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_TARGET_ABORT		BIT(30)
288c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_DATA_PARITY_ERR		BIT(29)
298c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_RETRY_ERR			BIT(28)
308c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_ILLEGAL_CMD		BIT(27)
318c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_SYSTEM_ERR		BIT(26)
328c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_INTERRUPT_TEST		BIT(25)
338c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_PARITY_ERR		BIT(24)
348c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_OVERRUN			BIT(23)
358c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_RSVD			BIT(22)
368c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_MEMORY_ADDR		BIT(21)
378c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_CONFIG_ADDR		BIT(20)
388c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_MASTER_ABORT_ADDR_VALID	BIT(19)
398c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_TARGET_ABORT_ADDR_VALID	BIT(18)
408c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_DATA_PARITY_ADDR_VALID	BIT(17)
418c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_RETRY_ADDR_VALID		BIT(16)
428c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_SIG_TABORT		BIT(4)
438c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_DEVSEL_MASK		0xc0
448c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_DEVSEL_FAST		0
458c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_DEVSEL_MED		0x40
468c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_DEVSEL_SLOW		0x80
478c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_FBB			BIT(1)
488c2ecf20Sopenharmony_ci#define MACEPCI_ERROR_66MHZ			BIT(0)
498c2ecf20Sopenharmony_ci	volatile unsigned int control;
508c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_INT(x)			BIT(x)
518c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_INT_MASK		0xff
528c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_SERR_ENA		BIT(8)
538c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_ARB_N6			BIT(9)
548c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_PARITY_ERR		BIT(10)
558c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_MRMRA_ENA		BIT(11)
568c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_ARB_N3			BIT(12)
578c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_ARB_N4			BIT(13)
588c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_ARB_N5			BIT(14)
598c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_PARK_LIU		BIT(15)
608c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_INV_INT(x)		BIT(16+x)
618c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_INV_INT_MASK		0x00ff0000
628c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_OVERRUN_INT		BIT(24)
638c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_PARITY_INT		BIT(25)
648c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_SERR_INT		BIT(26)
658c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_IT_INT			BIT(27)
668c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_RE_INT			BIT(28)
678c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_DPED_INT		BIT(29)
688c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_TAR_INT			BIT(30)
698c2ecf20Sopenharmony_ci#define MACEPCI_CONTROL_MAR_INT			BIT(31)
708c2ecf20Sopenharmony_ci	volatile unsigned int rev;
718c2ecf20Sopenharmony_ci	unsigned int _pad[0xcf8/4 - 4];
728c2ecf20Sopenharmony_ci	volatile unsigned int config_addr;
738c2ecf20Sopenharmony_ci	union {
748c2ecf20Sopenharmony_ci		volatile unsigned char b[4];
758c2ecf20Sopenharmony_ci		volatile unsigned short w[2];
768c2ecf20Sopenharmony_ci		volatile unsigned int l;
778c2ecf20Sopenharmony_ci	} config_data;
788c2ecf20Sopenharmony_ci};
798c2ecf20Sopenharmony_ci#define MACEPCI_LOW_MEMORY		0x1a000000
808c2ecf20Sopenharmony_ci#define MACEPCI_LOW_IO			0x18000000
818c2ecf20Sopenharmony_ci#define MACEPCI_SWAPPED_VIEW		0
828c2ecf20Sopenharmony_ci#define MACEPCI_NATIVE_VIEW		0x40000000
838c2ecf20Sopenharmony_ci#define MACEPCI_IO			0x80000000
848c2ecf20Sopenharmony_ci#define MACEPCI_HI_MEMORY		0x280000000
858c2ecf20Sopenharmony_ci#define MACEPCI_HI_IO			0x100000000
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ci/*
888c2ecf20Sopenharmony_ci * Video interface
898c2ecf20Sopenharmony_ci */
908c2ecf20Sopenharmony_cistruct mace_video {
918c2ecf20Sopenharmony_ci	unsigned long xxx;	/* later... */
928c2ecf20Sopenharmony_ci};
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci/*
958c2ecf20Sopenharmony_ci * Ethernet interface
968c2ecf20Sopenharmony_ci */
978c2ecf20Sopenharmony_cistruct mace_ethernet {
988c2ecf20Sopenharmony_ci	volatile u64 mac_ctrl;
998c2ecf20Sopenharmony_ci	volatile unsigned long int_stat;
1008c2ecf20Sopenharmony_ci	volatile unsigned long dma_ctrl;
1018c2ecf20Sopenharmony_ci	volatile unsigned long timer;
1028c2ecf20Sopenharmony_ci	volatile unsigned long tx_int_al;
1038c2ecf20Sopenharmony_ci	volatile unsigned long rx_int_al;
1048c2ecf20Sopenharmony_ci	volatile unsigned long tx_info;
1058c2ecf20Sopenharmony_ci	volatile unsigned long tx_info_al;
1068c2ecf20Sopenharmony_ci	volatile unsigned long rx_buff;
1078c2ecf20Sopenharmony_ci	volatile unsigned long rx_buff_al1;
1088c2ecf20Sopenharmony_ci	volatile unsigned long rx_buff_al2;
1098c2ecf20Sopenharmony_ci	volatile unsigned long diag;
1108c2ecf20Sopenharmony_ci	volatile unsigned long phy_data;
1118c2ecf20Sopenharmony_ci	volatile unsigned long phy_regs;
1128c2ecf20Sopenharmony_ci	volatile unsigned long phy_trans_go;
1138c2ecf20Sopenharmony_ci	volatile unsigned long backoff_seed;
1148c2ecf20Sopenharmony_ci	/*===================================*/
1158c2ecf20Sopenharmony_ci	volatile unsigned long imq_reserved[4];
1168c2ecf20Sopenharmony_ci	volatile unsigned long mac_addr;
1178c2ecf20Sopenharmony_ci	volatile unsigned long mac_addr2;
1188c2ecf20Sopenharmony_ci	volatile unsigned long mcast_filter;
1198c2ecf20Sopenharmony_ci	volatile unsigned long tx_ring_base;
1208c2ecf20Sopenharmony_ci	/* Following are read-only registers for debugging */
1218c2ecf20Sopenharmony_ci	volatile unsigned long tx_pkt1_hdr;
1228c2ecf20Sopenharmony_ci	volatile unsigned long tx_pkt1_ptr[3];
1238c2ecf20Sopenharmony_ci	volatile unsigned long tx_pkt2_hdr;
1248c2ecf20Sopenharmony_ci	volatile unsigned long tx_pkt2_ptr[3];
1258c2ecf20Sopenharmony_ci	/*===================================*/
1268c2ecf20Sopenharmony_ci	volatile unsigned long rx_fifo;
1278c2ecf20Sopenharmony_ci};
1288c2ecf20Sopenharmony_ci
1298c2ecf20Sopenharmony_ci/*
1308c2ecf20Sopenharmony_ci * Peripherals
1318c2ecf20Sopenharmony_ci */
1328c2ecf20Sopenharmony_ci
1338c2ecf20Sopenharmony_ci/* Audio registers */
1348c2ecf20Sopenharmony_cistruct mace_audio {
1358c2ecf20Sopenharmony_ci	volatile unsigned long control;
1368c2ecf20Sopenharmony_ci	volatile unsigned long codec_control;		/* codec status control */
1378c2ecf20Sopenharmony_ci	volatile unsigned long codec_mask;		/* codec status input mask */
1388c2ecf20Sopenharmony_ci	volatile unsigned long codec_read;		/* codec status read data */
1398c2ecf20Sopenharmony_ci	struct {
1408c2ecf20Sopenharmony_ci		volatile unsigned long control;		/* channel control */
1418c2ecf20Sopenharmony_ci		volatile unsigned long read_ptr;	/* channel read pointer */
1428c2ecf20Sopenharmony_ci		volatile unsigned long write_ptr;	/* channel write pointer */
1438c2ecf20Sopenharmony_ci		volatile unsigned long depth;		/* channel depth */
1448c2ecf20Sopenharmony_ci	} chan[3];
1458c2ecf20Sopenharmony_ci};
1468c2ecf20Sopenharmony_ci
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ci/* register definitions for parallel port DMA */
1498c2ecf20Sopenharmony_cistruct mace_parport {
1508c2ecf20Sopenharmony_ci	/* 0 - do nothing,
1518c2ecf20Sopenharmony_ci	 * 1 - pulse terminal count to the device after buffer is drained */
1528c2ecf20Sopenharmony_ci#define MACEPAR_CONTEXT_LASTFLAG	BIT(63)
1538c2ecf20Sopenharmony_ci	/* Should not cross 4K page boundary */
1548c2ecf20Sopenharmony_ci#define MACEPAR_CONTEXT_DATA_BOUND	0x0000000000001000UL
1558c2ecf20Sopenharmony_ci#define MACEPAR_CONTEXT_DATALEN_MASK	0x00000fff00000000UL
1568c2ecf20Sopenharmony_ci#define MACEPAR_CONTEXT_DATALEN_SHIFT	32
1578c2ecf20Sopenharmony_ci	/* Can be arbitrarily aligned on any byte boundary on output,
1588c2ecf20Sopenharmony_ci	 * 64 byte aligned on input */
1598c2ecf20Sopenharmony_ci#define MACEPAR_CONTEXT_BASEADDR_MASK	0x00000000ffffffffUL
1608c2ecf20Sopenharmony_ci	volatile u64 context_a;
1618c2ecf20Sopenharmony_ci	volatile u64 context_b;
1628c2ecf20Sopenharmony_ci	/* 0 - mem->device, 1 - device->mem */
1638c2ecf20Sopenharmony_ci#define MACEPAR_CTLSTAT_DIRECTION	BIT(0)
1648c2ecf20Sopenharmony_ci	/* 0 - channel frozen, 1 - channel enabled */
1658c2ecf20Sopenharmony_ci#define MACEPAR_CTLSTAT_ENABLE		BIT(1)
1668c2ecf20Sopenharmony_ci	/* 0 - channel active, 1 - complete channel reset */
1678c2ecf20Sopenharmony_ci#define MACEPAR_CTLSTAT_RESET		BIT(2)
1688c2ecf20Sopenharmony_ci#define MACEPAR_CTLSTAT_CTXB_VALID	BIT(3)
1698c2ecf20Sopenharmony_ci#define MACEPAR_CTLSTAT_CTXA_VALID	BIT(4)
1708c2ecf20Sopenharmony_ci	volatile u64 cntlstat;		/* Control/Status register */
1718c2ecf20Sopenharmony_ci#define MACEPAR_DIAG_CTXINUSE		BIT(0)
1728c2ecf20Sopenharmony_ci	/* 1 - Dma engine is enabled and processing something */
1738c2ecf20Sopenharmony_ci#define MACEPAR_DIAG_DMACTIVE		BIT(1)
1748c2ecf20Sopenharmony_ci	/* Counter of bytes left */
1758c2ecf20Sopenharmony_ci#define MACEPAR_DIAG_CTRMASK		0x0000000000003ffcUL
1768c2ecf20Sopenharmony_ci#define MACEPAR_DIAG_CTRSHIFT		2
1778c2ecf20Sopenharmony_ci	volatile u64 diagnostic;	/* RO: diagnostic register */
1788c2ecf20Sopenharmony_ci};
1798c2ecf20Sopenharmony_ci
1808c2ecf20Sopenharmony_ci/* ISA Control and DMA registers */
1818c2ecf20Sopenharmony_cistruct mace_isactrl {
1828c2ecf20Sopenharmony_ci	volatile unsigned long ringbase;
1838c2ecf20Sopenharmony_ci#define MACEISA_RINGBUFFERS_SIZE	(8 * 4096)
1848c2ecf20Sopenharmony_ci
1858c2ecf20Sopenharmony_ci	volatile unsigned long misc;
1868c2ecf20Sopenharmony_ci#define MACEISA_FLASH_WE		BIT(0)	/* 1=> Enable FLASH writes */
1878c2ecf20Sopenharmony_ci#define MACEISA_PWD_CLEAR		BIT(1)	/* 1=> PWD CLEAR jumper detected */
1888c2ecf20Sopenharmony_ci#define MACEISA_NIC_DEASSERT		BIT(2)
1898c2ecf20Sopenharmony_ci#define MACEISA_NIC_DATA		BIT(3)
1908c2ecf20Sopenharmony_ci#define MACEISA_LED_RED			BIT(4)	/* 0=> Illuminate red LED */
1918c2ecf20Sopenharmony_ci#define MACEISA_LED_GREEN		BIT(5)	/* 0=> Illuminate green LED */
1928c2ecf20Sopenharmony_ci#define MACEISA_DP_RAM_ENABLE		BIT(6)
1938c2ecf20Sopenharmony_ci
1948c2ecf20Sopenharmony_ci	volatile unsigned long istat;
1958c2ecf20Sopenharmony_ci	volatile unsigned long imask;
1968c2ecf20Sopenharmony_ci#define MACEISA_AUDIO_SW_INT		BIT(0)
1978c2ecf20Sopenharmony_ci#define MACEISA_AUDIO_SC_INT		BIT(1)
1988c2ecf20Sopenharmony_ci#define MACEISA_AUDIO1_DMAT_INT		BIT(2)
1998c2ecf20Sopenharmony_ci#define MACEISA_AUDIO1_OF_INT		BIT(3)
2008c2ecf20Sopenharmony_ci#define MACEISA_AUDIO2_DMAT_INT		BIT(4)
2018c2ecf20Sopenharmony_ci#define MACEISA_AUDIO2_MERR_INT		BIT(5)
2028c2ecf20Sopenharmony_ci#define MACEISA_AUDIO3_DMAT_INT		BIT(6)
2038c2ecf20Sopenharmony_ci#define MACEISA_AUDIO3_MERR_INT		BIT(7)
2048c2ecf20Sopenharmony_ci#define MACEISA_RTC_INT			BIT(8)
2058c2ecf20Sopenharmony_ci#define MACEISA_KEYB_INT		BIT(9)
2068c2ecf20Sopenharmony_ci#define MACEISA_KEYB_POLL_INT		BIT(10)
2078c2ecf20Sopenharmony_ci#define MACEISA_MOUSE_INT		BIT(11)
2088c2ecf20Sopenharmony_ci#define MACEISA_MOUSE_POLL_INT		BIT(12)
2098c2ecf20Sopenharmony_ci#define MACEISA_TIMER0_INT		BIT(13)
2108c2ecf20Sopenharmony_ci#define MACEISA_TIMER1_INT		BIT(14)
2118c2ecf20Sopenharmony_ci#define MACEISA_TIMER2_INT		BIT(15)
2128c2ecf20Sopenharmony_ci#define MACEISA_PARALLEL_INT		BIT(16)
2138c2ecf20Sopenharmony_ci#define MACEISA_PAR_CTXA_INT		BIT(17)
2148c2ecf20Sopenharmony_ci#define MACEISA_PAR_CTXB_INT		BIT(18)
2158c2ecf20Sopenharmony_ci#define MACEISA_PAR_MERR_INT		BIT(19)
2168c2ecf20Sopenharmony_ci#define MACEISA_SERIAL1_INT		BIT(20)
2178c2ecf20Sopenharmony_ci#define MACEISA_SERIAL1_TDMAT_INT	BIT(21)
2188c2ecf20Sopenharmony_ci#define MACEISA_SERIAL1_TDMAPR_INT	BIT(22)
2198c2ecf20Sopenharmony_ci#define MACEISA_SERIAL1_TDMAME_INT	BIT(23)
2208c2ecf20Sopenharmony_ci#define MACEISA_SERIAL1_RDMAT_INT	BIT(24)
2218c2ecf20Sopenharmony_ci#define MACEISA_SERIAL1_RDMAOR_INT	BIT(25)
2228c2ecf20Sopenharmony_ci#define MACEISA_SERIAL2_INT		BIT(26)
2238c2ecf20Sopenharmony_ci#define MACEISA_SERIAL2_TDMAT_INT	BIT(27)
2248c2ecf20Sopenharmony_ci#define MACEISA_SERIAL2_TDMAPR_INT	BIT(28)
2258c2ecf20Sopenharmony_ci#define MACEISA_SERIAL2_TDMAME_INT	BIT(29)
2268c2ecf20Sopenharmony_ci#define MACEISA_SERIAL2_RDMAT_INT	BIT(30)
2278c2ecf20Sopenharmony_ci#define MACEISA_SERIAL2_RDMAOR_INT	BIT(31)
2288c2ecf20Sopenharmony_ci
2298c2ecf20Sopenharmony_ci	volatile unsigned long _pad[0x2000/8 - 4];
2308c2ecf20Sopenharmony_ci
2318c2ecf20Sopenharmony_ci	volatile unsigned long dp_ram[0x400];
2328c2ecf20Sopenharmony_ci	struct mace_parport parport;
2338c2ecf20Sopenharmony_ci};
2348c2ecf20Sopenharmony_ci
2358c2ecf20Sopenharmony_ci/* Keyboard & Mouse registers
2368c2ecf20Sopenharmony_ci * -> drivers/input/serio/maceps2.c */
2378c2ecf20Sopenharmony_cistruct mace_ps2port {
2388c2ecf20Sopenharmony_ci	volatile unsigned long tx;
2398c2ecf20Sopenharmony_ci	volatile unsigned long rx;
2408c2ecf20Sopenharmony_ci	volatile unsigned long control;
2418c2ecf20Sopenharmony_ci	volatile unsigned long status;
2428c2ecf20Sopenharmony_ci};
2438c2ecf20Sopenharmony_ci
2448c2ecf20Sopenharmony_cistruct mace_ps2 {
2458c2ecf20Sopenharmony_ci	struct mace_ps2port keyb;
2468c2ecf20Sopenharmony_ci	struct mace_ps2port mouse;
2478c2ecf20Sopenharmony_ci};
2488c2ecf20Sopenharmony_ci
2498c2ecf20Sopenharmony_ci/* I2C registers
2508c2ecf20Sopenharmony_ci * -> drivers/i2c/algos/i2c-algo-sgi.c */
2518c2ecf20Sopenharmony_cistruct mace_i2c {
2528c2ecf20Sopenharmony_ci	volatile unsigned long config;
2538c2ecf20Sopenharmony_ci#define MACEI2C_RESET		BIT(0)
2548c2ecf20Sopenharmony_ci#define MACEI2C_FAST		BIT(1)
2558c2ecf20Sopenharmony_ci#define MACEI2C_DATA_OVERRIDE	BIT(2)
2568c2ecf20Sopenharmony_ci#define MACEI2C_CLOCK_OVERRIDE	BIT(3)
2578c2ecf20Sopenharmony_ci#define MACEI2C_DATA_STATUS	BIT(4)
2588c2ecf20Sopenharmony_ci#define MACEI2C_CLOCK_STATUS	BIT(5)
2598c2ecf20Sopenharmony_ci	volatile unsigned long control;
2608c2ecf20Sopenharmony_ci	volatile unsigned long data;
2618c2ecf20Sopenharmony_ci};
2628c2ecf20Sopenharmony_ci
2638c2ecf20Sopenharmony_ci/* Timer registers */
2648c2ecf20Sopenharmony_citypedef union {
2658c2ecf20Sopenharmony_ci	volatile unsigned long ust_msc;
2668c2ecf20Sopenharmony_ci	struct reg {
2678c2ecf20Sopenharmony_ci		volatile unsigned int ust;
2688c2ecf20Sopenharmony_ci		volatile unsigned int msc;
2698c2ecf20Sopenharmony_ci	} reg;
2708c2ecf20Sopenharmony_ci} timer_reg;
2718c2ecf20Sopenharmony_ci
2728c2ecf20Sopenharmony_cistruct mace_timers {
2738c2ecf20Sopenharmony_ci	volatile unsigned long ust;
2748c2ecf20Sopenharmony_ci#define MACE_UST_PERIOD_NS	960
2758c2ecf20Sopenharmony_ci
2768c2ecf20Sopenharmony_ci	volatile unsigned long compare1;
2778c2ecf20Sopenharmony_ci	volatile unsigned long compare2;
2788c2ecf20Sopenharmony_ci	volatile unsigned long compare3;
2798c2ecf20Sopenharmony_ci
2808c2ecf20Sopenharmony_ci	timer_reg audio_in;
2818c2ecf20Sopenharmony_ci	timer_reg audio_out1;
2828c2ecf20Sopenharmony_ci	timer_reg audio_out2;
2838c2ecf20Sopenharmony_ci	timer_reg video_in1;
2848c2ecf20Sopenharmony_ci	timer_reg video_in2;
2858c2ecf20Sopenharmony_ci	timer_reg video_out;
2868c2ecf20Sopenharmony_ci};
2878c2ecf20Sopenharmony_ci
2888c2ecf20Sopenharmony_cistruct mace_perif {
2898c2ecf20Sopenharmony_ci	struct mace_audio audio;
2908c2ecf20Sopenharmony_ci	char _pad0[0x10000 - sizeof(struct mace_audio)];
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_ci	struct mace_isactrl ctrl;
2938c2ecf20Sopenharmony_ci	char _pad1[0x10000 - sizeof(struct mace_isactrl)];
2948c2ecf20Sopenharmony_ci
2958c2ecf20Sopenharmony_ci	struct mace_ps2 ps2;
2968c2ecf20Sopenharmony_ci	char _pad2[0x10000 - sizeof(struct mace_ps2)];
2978c2ecf20Sopenharmony_ci
2988c2ecf20Sopenharmony_ci	struct mace_i2c i2c;
2998c2ecf20Sopenharmony_ci	char _pad3[0x10000 - sizeof(struct mace_i2c)];
3008c2ecf20Sopenharmony_ci
3018c2ecf20Sopenharmony_ci	struct mace_timers timers;
3028c2ecf20Sopenharmony_ci	char _pad4[0x10000 - sizeof(struct mace_timers)];
3038c2ecf20Sopenharmony_ci};
3048c2ecf20Sopenharmony_ci
3058c2ecf20Sopenharmony_ci
3068c2ecf20Sopenharmony_ci/*
3078c2ecf20Sopenharmony_ci * ISA peripherals
3088c2ecf20Sopenharmony_ci */
3098c2ecf20Sopenharmony_ci
3108c2ecf20Sopenharmony_ci/* Parallel port */
3118c2ecf20Sopenharmony_cistruct mace_parallel {
3128c2ecf20Sopenharmony_ci};
3138c2ecf20Sopenharmony_ci
3148c2ecf20Sopenharmony_cistruct mace_ecp1284 {	/* later... */
3158c2ecf20Sopenharmony_ci};
3168c2ecf20Sopenharmony_ci
3178c2ecf20Sopenharmony_ci/* Serial port */
3188c2ecf20Sopenharmony_cistruct mace_serial {
3198c2ecf20Sopenharmony_ci	volatile unsigned long xxx;	/* later... */
3208c2ecf20Sopenharmony_ci};
3218c2ecf20Sopenharmony_ci
3228c2ecf20Sopenharmony_cistruct mace_isa {
3238c2ecf20Sopenharmony_ci	struct mace_parallel parallel;
3248c2ecf20Sopenharmony_ci	char _pad1[0x8000 - sizeof(struct mace_parallel)];
3258c2ecf20Sopenharmony_ci
3268c2ecf20Sopenharmony_ci	struct mace_ecp1284 ecp1284;
3278c2ecf20Sopenharmony_ci	char _pad2[0x8000 - sizeof(struct mace_ecp1284)];
3288c2ecf20Sopenharmony_ci
3298c2ecf20Sopenharmony_ci	struct mace_serial serial1;
3308c2ecf20Sopenharmony_ci	char _pad3[0x8000 - sizeof(struct mace_serial)];
3318c2ecf20Sopenharmony_ci
3328c2ecf20Sopenharmony_ci	struct mace_serial serial2;
3338c2ecf20Sopenharmony_ci	char _pad4[0x8000 - sizeof(struct mace_serial)];
3348c2ecf20Sopenharmony_ci
3358c2ecf20Sopenharmony_ci	volatile unsigned char rtc[0x10000];
3368c2ecf20Sopenharmony_ci};
3378c2ecf20Sopenharmony_ci
3388c2ecf20Sopenharmony_cistruct sgi_mace {
3398c2ecf20Sopenharmony_ci	char _reserved[0x80000];
3408c2ecf20Sopenharmony_ci
3418c2ecf20Sopenharmony_ci	struct mace_pci pci;
3428c2ecf20Sopenharmony_ci	char _pad0[0x80000 - sizeof(struct mace_pci)];
3438c2ecf20Sopenharmony_ci
3448c2ecf20Sopenharmony_ci	struct mace_video video_in1;
3458c2ecf20Sopenharmony_ci	char _pad1[0x80000 - sizeof(struct mace_video)];
3468c2ecf20Sopenharmony_ci
3478c2ecf20Sopenharmony_ci	struct mace_video video_in2;
3488c2ecf20Sopenharmony_ci	char _pad2[0x80000 - sizeof(struct mace_video)];
3498c2ecf20Sopenharmony_ci
3508c2ecf20Sopenharmony_ci	struct mace_video video_out;
3518c2ecf20Sopenharmony_ci	char _pad3[0x80000 - sizeof(struct mace_video)];
3528c2ecf20Sopenharmony_ci
3538c2ecf20Sopenharmony_ci	struct mace_ethernet eth;
3548c2ecf20Sopenharmony_ci	char _pad4[0x80000 - sizeof(struct mace_ethernet)];
3558c2ecf20Sopenharmony_ci
3568c2ecf20Sopenharmony_ci	struct mace_perif perif;
3578c2ecf20Sopenharmony_ci	char _pad5[0x80000 - sizeof(struct mace_perif)];
3588c2ecf20Sopenharmony_ci
3598c2ecf20Sopenharmony_ci	struct mace_isa isa;
3608c2ecf20Sopenharmony_ci	char _pad6[0x80000 - sizeof(struct mace_isa)];
3618c2ecf20Sopenharmony_ci};
3628c2ecf20Sopenharmony_ci
3638c2ecf20Sopenharmony_ciextern struct sgi_mace __iomem *mace;
3648c2ecf20Sopenharmony_ci
3658c2ecf20Sopenharmony_ci#endif /* __ASM_MACE_H__ */
366