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