1633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/*
2633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Definitions for the SGI CRIME (CPU, Rendering, Interconnect and Memory
3633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Engine)
4633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *
5633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * This file is subject to the terms and conditions of the GNU General Public
6633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * License.  See the file "COPYING" in the main directory of this archive
7633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * for more details.
8633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham *
9633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Copyright (C) 2000 Harald Koerfgen
10633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham */
11633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
12633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#ifndef __ASM_CRIME_H__
13633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define __ASM_CRIME_H__
14633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
15633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/*
16633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham * Address map
17633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham */
18633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_BASE	0x14000000	/* physical */
19633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
20633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamstruct sgi_crime {
21633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long id;
22633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_ID_MASK			0xff
23633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_ID_IDBITS			0xf0
24633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_ID_IDVALUE		0xa0
25633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_ID_REV			0x0f
26633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_REV_PETTY			0x00
27633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_REV_11			0x11
28633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_REV_13			0x13
29633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_REV_14			0x14
30633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
31633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long control;
32633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_MASK		0x3fff
33633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_TRITON_SYSADC	0x2000
34633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_CRIME_SYSADC	0x1000
35633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_HARD_RESET	0x0800
36633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_SOFT_RESET	0x0400
37633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_DOG_ENA		0x0200
38633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_ENDIANESS		0x0100
39633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_ENDIAN_BIG	0x0100
40633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_ENDIAN_LITTLE	0x0000
41633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_CQUEUE_HWM	0x000f
42633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_CQUEUE_SHFT	0
43633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_WBUF_HWM		0x00f0
44633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CONTROL_WBUF_SHFT		8
45633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
46633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long istat;
47633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long imask;
48633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long soft_int;
49633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long hard_int;
50633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACE_VID_IN1_INT		BIT(0)
51633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACE_VID_IN2_INT		BIT(1)
52633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACE_VID_OUT_INT		BIT(2)
53633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACE_ETHERNET_INT		BIT(3)
54633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACE_SUPERIO_INT		BIT(4)
55633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACE_MISC_INT			BIT(5)
56633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACE_AUDIO_INT			BIT(6)
57633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACE_PCI_BRIDGE_INT		BIT(7)
58633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACEPCI_SCSI0_INT		BIT(8)
59633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACEPCI_SCSI1_INT		BIT(9)
60633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACEPCI_SLOT0_INT		BIT(10)
61633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACEPCI_SLOT1_INT		BIT(11)
62633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACEPCI_SLOT2_INT		BIT(12)
63633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACEPCI_SHARED0_INT		BIT(13)
64633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACEPCI_SHARED1_INT		BIT(14)
65633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define MACEPCI_SHARED2_INT		BIT(15)
66633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_GBE0_INT			BIT(16)
67633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_GBE1_INT			BIT(17)
68633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_GBE2_INT			BIT(18)
69633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_GBE3_INT			BIT(19)
70633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CPUERR_INT		BIT(20)
71633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEMERR_INT		BIT(21)
72633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_RE_EMPTY_E_INT		BIT(22)
73633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_RE_FULL_E_INT		BIT(23)
74633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_RE_IDLE_E_INT		BIT(24)
75633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_RE_EMPTY_L_INT		BIT(25)
76633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_RE_FULL_L_INT		BIT(26)
77633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_RE_IDLE_L_INT    		BIT(27)
78633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_SOFT0_INT			BIT(28)
79633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_SOFT1_INT			BIT(29)
80633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_SOFT2_INT			BIT(30)
81633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_SYSCORERR_INT		CRIME_SOFT2_INT
82633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_VICE_INT			BIT(31)
83633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham/* Masks for deciding who handles the interrupt */
84633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MACE_INT_MASK		0x8f
85633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MACEISA_INT_MASK		0x70
86633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MACEPCI_INT_MASK		0xff00
87633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CRIME_INT_MASK		0xffff0000
88633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
89633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long watchdog;
90633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_DOG_POWER_ON_RESET	0x00010000
91633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_DOG_WARM_RESET		0x00080000
92633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_DOG_TIMEOUT		(CRIME_DOG_POWER_ON_RESET|CRIME_DOG_WARM_RESET)
93633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_DOG_VALUE			0x00007fff
94633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
95633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long timer;
96633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MASTER_FREQ		66666500	/* Crime upcounter frequency */
97633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_NS_PER_TICK		15		/* for delay_calibrate */
98633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
99633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long cpu_error_addr;
100633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CPU_ERROR_ADDR_MASK	0x3ffffffff
101633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
102633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long cpu_error_stat;
103633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CPU_ERROR_MASK		0x7		/* cpu error stat is 3 bits */
104633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CPU_ERROR_CPU_ILL_ADDR	0x4
105633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CPU_ERROR_VICE_WRT_PRTY	0x2
106633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_CPU_ERROR_CPU_WRT_PRTY	0x1
107633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
108633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	unsigned long _pad0[54];
109633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
110633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long mc_ctrl;
111633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long bank_ctrl[8];
112633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_BANK_CONTROL_MASK		0x11f	/* 9 bits 7:5 reserved */
113633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_BANK_CONTROL_ADDR		0x01f
114633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_BANK_CONTROL_SDRAM_SIZE	0x100
115633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MAXBANKS				8
116633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
117633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long mem_ref_counter;
118633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_REF_COUNTER_MASK	0x3ff		/* 10bit */
119633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
120633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long mem_error_stat;
121633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_STAT_MASK       0x0ff7ffff	/* 28-bit register */
122633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_MACE_ID		0x0000007f
123633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_MACE_ACCESS	0x00000080
124633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_RE_ID		0x00007f00
125633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_RE_ACCESS	0x00008000
126633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_GBE_ACCESS	0x00010000
127633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_VICE_ACCESS	0x00020000
128633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_CPU_ACCESS	0x00040000
129633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_RESERVED	0x00080000
130633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_SOFT_ERR	0x00100000
131633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_HARD_ERR	0x00200000
132633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_MULTIPLE	0x00400000
133633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_ECC		0x01800000
134633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_MEM_ECC_RD	0x00800000
135633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_MEM_ECC_RMW	0x01000000
136633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_INV		0x0e000000
137633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_INV_MEM_ADDR_RD	0x02000000
138633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_INV_MEM_ADDR_WR	0x04000000
139633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_INV_MEM_ADDR_RMW 0x08000000
140633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
141633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long mem_error_addr;
142633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_ADDR_MASK	0x3fffffff
143633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
144633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long mem_ecc_syn;
145633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_ECC_SYN_MASK	0xffffffff
146633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
147633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long mem_ecc_chk;
148633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_ECC_CHK_MASK	0xffffffff
149633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
150633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham	volatile unsigned long mem_ecc_repl;
151633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_MEM_ERROR_ECC_REPL_MASK	0xffffffff
152633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham};
153633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
154633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandhamextern struct sgi_crime __iomem *crime;
155633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
156633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#define CRIME_HI_MEM_BASE	0x40000000	/* this is where whole 1G of RAM is mapped */
157633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham
158633c3473533ad9f2cca069b22cc5d95cd4e3510bRaghu Gandham#endif /* __ASM_CRIME_H__ */
159