Merge branch 'linus'
[sfrench/cifs-2.6.git] / arch / i386 / mach-es7000 / es7000.h
1 /*
2  * Written by: Garry Forsgren, Unisys Corporation
3  *             Natalie Protasevich, Unisys Corporation
4  * This file contains the code to configure and interface 
5  * with Unisys ES7000 series hardware system manager.
6  *
7  * Copyright (c) 2003 Unisys Corporation.  All Rights Reserved.
8  *
9  * This program is free software; you can redistribute it and/or modify it
10  * under the terms of version 2 of the GNU General Public License as
11  * published by the Free Software Foundation.
12  *
13  * This program is distributed in the hope that it would be useful, but
14  * WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write the Free Software Foundation, Inc., 59
19  * Temple Place - Suite 330, Boston MA 02111-1307, USA.
20  *
21  * Contact information: Unisys Corporation, Township Line & Union Meeting 
22  * Roads-A, Unisys Way, Blue Bell, Pennsylvania, 19424, or:
23  *
24  * http://www.unisys.com
25  */
26
27 /*
28  * ES7000 chipsets
29  */
30
31 #define NON_UNISYS              0
32 #define ES7000_CLASSIC          1
33 #define ES7000_ZORRO            2
34
35
36 #define MIP_REG                 1
37 #define MIP_PSAI_REG            4
38
39 #define MIP_BUSY                1
40 #define MIP_SPIN                0xf0000
41 #define MIP_VALID               0x0100000000000000ULL
42 #define MIP_PORT(VALUE) ((VALUE >> 32) & 0xffff)
43
44 #define MIP_RD_LO(VALUE)        (VALUE & 0xffffffff)   
45
46 struct mip_reg_info {
47         unsigned long long mip_info;
48         unsigned long long delivery_info;
49         unsigned long long host_reg;
50         unsigned long long mip_reg;
51 };
52
53 struct part_info {
54         unsigned char type;   
55         unsigned char length;
56         unsigned char part_id;
57         unsigned char apic_mode;
58         unsigned long snum;    
59         char ptype[16];
60         char sname[64];
61         char pname[64];
62 };
63
64 struct psai {
65         unsigned long long entry_type;
66         unsigned long long addr;
67         unsigned long long bep_addr;
68 };
69
70 struct es7000_mem_info {
71         unsigned char type;   
72         unsigned char length;
73         unsigned char resv[6];
74         unsigned long long  start; 
75         unsigned long long  size; 
76 };
77
78 struct es7000_oem_table {
79         unsigned long long hdr;
80         struct mip_reg_info mip;
81         struct part_info pif;
82         struct es7000_mem_info shm;
83         struct psai psai;
84 };
85
86 #ifdef CONFIG_ACPI
87 struct acpi_table_sdt {
88         unsigned long pa;
89         unsigned long count;
90         struct {
91                 unsigned long pa;
92                 enum acpi_table_id id;
93                 unsigned long size;
94         }       entry[50];
95 };
96
97 struct oem_table {
98         struct acpi_table_header Header;
99         u32 OEMTableAddr;
100         u32 OEMTableSize;
101 };
102
103 extern int find_unisys_acpi_oem_table(unsigned long *oem_addr);
104 #endif
105
106 struct mip_reg {
107         unsigned long long off_0;
108         unsigned long long off_8;
109         unsigned long long off_10;
110         unsigned long long off_18;
111         unsigned long long off_20;
112         unsigned long long off_28;
113         unsigned long long off_30;
114         unsigned long long off_38;
115 };
116
117 #define MIP_SW_APIC             0x1020b
118 #define MIP_FUNC(VALUE)         (VALUE & 0xff)
119
120 extern int parse_unisys_oem (char *oemptr);
121 extern void setup_unisys(void);
122 extern int es7000_start_cpu(int cpu, unsigned long eip);
123 extern void es7000_sw_apic(void);