ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-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 #define MIP_REG                 1
28 #define MIP_PSAI_REG            4
29
30 #define MIP_BUSY                1
31 #define MIP_SPIN                0xf0000
32 #define MIP_VALID               0x0100000000000000
33
34 #define MIP_RD_LO(VALUE)        (VALUE & 0xffffffff)   
35
36 struct mip_reg_info {
37         unsigned long long mip_info;
38         unsigned long long delivery_info;
39         unsigned long long host_reg;
40         unsigned long long mip_reg;
41 };
42
43 struct part_info {
44         unsigned char type;   
45         unsigned char length;
46         unsigned char part_id;
47         unsigned char apic_mode;
48         unsigned long snum;    
49         char ptype[16];
50         char sname[64];
51         char pname[64];
52 };
53
54 struct psai {
55         unsigned long long entry_type;
56         unsigned long long addr;
57         unsigned long long bep_addr;
58 };
59
60 struct es7000_mem_info {
61         unsigned char type;   
62         unsigned char length;
63         unsigned char resv[6];
64         unsigned long long  start; 
65         unsigned long long  size; 
66 };
67
68 struct es7000_oem_table {
69         unsigned long long hdr;
70         struct mip_reg_info mip;
71         struct part_info pif;
72         struct es7000_mem_info shm;
73         struct psai psai;
74 };
75
76 struct acpi_table_sdt {
77         unsigned long pa;
78         unsigned long count;
79         struct {
80                 unsigned long pa;
81                 enum acpi_table_id id;
82                 unsigned long size;
83         }       entry[50];
84 };
85
86 struct oem_table {
87         struct acpi_table_header Header;
88         u32 OEMTableAddr;
89         u32 OEMTableSize;
90 };
91
92 struct mip_reg {
93         unsigned long long off_0;
94         unsigned long long off_8;
95         unsigned long long off_10;
96         unsigned long long off_18;
97         unsigned long long off_20;
98         unsigned long long off_28;
99         unsigned long long off_30;
100         unsigned long long off_38;
101 };
102
103 #define MIP_SW_APIC             0x1020b
104 #define MIP_FUNC(VALUE)         (VALUE & 0xff)
105
106 extern void parse_unisys_oem (char *oemptr, int oem_entries);
107 extern int find_unisys_acpi_oem_table(unsigned long *oem_addr, int *length);
108 extern int es7000_start_cpu(int cpu, unsigned long eip);
109 extern void es7000_sw_apic(void);