Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx
[linux-2.6] / arch / x86 / 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
88 struct oem_table {
89         struct acpi_table_header Header;
90         u32 OEMTableAddr;
91         u32 OEMTableSize;
92 };
93
94 extern int find_unisys_acpi_oem_table(unsigned long *oem_addr);
95 #endif
96
97 struct mip_reg {
98         unsigned long long off_0;
99         unsigned long long off_8;
100         unsigned long long off_10;
101         unsigned long long off_18;
102         unsigned long long off_20;
103         unsigned long long off_28;
104         unsigned long long off_30;
105         unsigned long long off_38;
106 };
107
108 #define MIP_SW_APIC             0x1020b
109 #define MIP_FUNC(VALUE)         (VALUE & 0xff)
110
111 extern int parse_unisys_oem (char *oemptr);
112 extern void setup_unisys(void);
113 extern int es7000_start_cpu(int cpu, unsigned long eip);
114 extern void es7000_sw_apic(void);