Pull release into acpica branch
[pandora-kernel.git] / arch / powerpc / platforms / iseries / main_store.h
1 /*
2  * Copyright (C) 2001  Mike Corrigan IBM Corporation
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17  */
18
19 #ifndef _ISERIES_MAIN_STORE_H
20 #define _ISERIES_MAIN_STORE_H
21
22 /* Main Store Vpd for Condor,iStar,sStar */
23 struct IoHriMainStoreSegment4 {
24         u8      msArea0Exists:1;
25         u8      msArea1Exists:1;
26         u8      msArea2Exists:1;
27         u8      msArea3Exists:1;
28         u8      reserved1:4;
29         u8      reserved2;
30
31         u8      msArea0Functional:1;
32         u8      msArea1Functional:1;
33         u8      msArea2Functional:1;
34         u8      msArea3Functional:1;
35         u8      reserved3:4;
36         u8      reserved4;
37
38         u32     totalMainStore;
39
40         u64     msArea0Ptr;
41         u64     msArea1Ptr;
42         u64     msArea2Ptr;
43         u64     msArea3Ptr;
44
45         u32     cardProductionLevel;
46
47         u32     msAdrHole;
48
49         u8      msArea0HasRiserVpd:1;
50         u8      msArea1HasRiserVpd:1;
51         u8      msArea2HasRiserVpd:1;
52         u8      msArea3HasRiserVpd:1;
53         u8      reserved5:4;
54         u8      reserved6;
55         u16     reserved7;
56
57         u8      reserved8[28];
58
59         u64     nonInterleavedBlocksStartAdr;
60         u64     nonInterleavedBlocksEndAdr;
61 };
62
63 /* Main Store VPD for Power4 */
64 struct IoHriMainStoreChipInfo1 {
65         u32     chipMfgID       __attribute((packed));
66         char    chipECLevel[4]  __attribute((packed));
67 };
68
69 struct IoHriMainStoreVpdIdData {
70         char    typeNumber[4];
71         char    modelNumber[4];
72         char    partNumber[12];
73         char    serialNumber[12];
74 };
75
76 struct IoHriMainStoreVpdFruData {
77         char    fruLabel[8]     __attribute((packed));
78         u8      numberOfSlots   __attribute((packed));
79         u8      pluggingType    __attribute((packed));
80         u16     slotMapIndex    __attribute((packed));
81 };
82
83 struct IoHriMainStoreAdrRangeBlock {
84         void    *blockStart      __attribute((packed));
85         void    *blockEnd        __attribute((packed));
86         u32     blockProcChipId __attribute((packed));
87 };
88
89 #define MaxAreaAdrRangeBlocks 4
90
91 struct IoHriMainStoreArea4 {
92         u32     msVpdFormat                     __attribute((packed));
93         u8      containedVpdType                __attribute((packed));
94         u8      reserved1                       __attribute((packed));
95         u16     reserved2                       __attribute((packed));
96
97         u64     msExists                        __attribute((packed));
98         u64     msFunctional                    __attribute((packed));
99
100         u32     memorySize                      __attribute((packed));
101         u32     procNodeId                      __attribute((packed));
102
103         u32     numAdrRangeBlocks               __attribute((packed));
104         struct IoHriMainStoreAdrRangeBlock xAdrRangeBlock[MaxAreaAdrRangeBlocks]        __attribute((packed));
105
106         struct IoHriMainStoreChipInfo1  chipInfo0       __attribute((packed));
107         struct IoHriMainStoreChipInfo1  chipInfo1       __attribute((packed));
108         struct IoHriMainStoreChipInfo1  chipInfo2       __attribute((packed));
109         struct IoHriMainStoreChipInfo1  chipInfo3       __attribute((packed));
110         struct IoHriMainStoreChipInfo1  chipInfo4       __attribute((packed));
111         struct IoHriMainStoreChipInfo1  chipInfo5       __attribute((packed));
112         struct IoHriMainStoreChipInfo1  chipInfo6       __attribute((packed));
113         struct IoHriMainStoreChipInfo1  chipInfo7       __attribute((packed));
114
115         void    *msRamAreaArray                 __attribute((packed));
116         u32     msRamAreaArrayNumEntries        __attribute((packed));
117         u32     msRamAreaArrayEntrySize         __attribute((packed));
118
119         u32     numaDimmExists                  __attribute((packed));
120         u32     numaDimmFunctional              __attribute((packed));
121         void    *numaDimmArray                  __attribute((packed));
122         u32     numaDimmArrayNumEntries         __attribute((packed));
123         u32     numaDimmArrayEntrySize          __attribute((packed));
124
125         struct IoHriMainStoreVpdIdData idData   __attribute((packed));
126
127         u64     powerData                       __attribute((packed));
128         u64     cardAssemblyPartNum             __attribute((packed));
129         u64     chipSerialNum                   __attribute((packed));
130
131         u64     reserved3                       __attribute((packed));
132         char    reserved4[16]                   __attribute((packed));
133
134         struct IoHriMainStoreVpdFruData fruData __attribute((packed));
135
136         u8      vpdPortNum                      __attribute((packed));
137         u8      reserved5                       __attribute((packed));
138         u8      frameId                         __attribute((packed));
139         u8      rackUnit                        __attribute((packed));
140         char    asciiKeywordVpd[256]            __attribute((packed));
141         u32     reserved6                       __attribute((packed));
142 };
143
144
145 struct IoHriMainStoreSegment5 {
146         u16     reserved1;
147         u8      reserved2;
148         u8      msVpdFormat;
149
150         u32     totalMainStore;
151         u64     maxConfiguredMsAdr;
152
153         struct IoHriMainStoreArea4      *msAreaArray;
154         u32     msAreaArrayNumEntries;
155         u32     msAreaArrayEntrySize;
156
157         u32     msAreaExists;
158         u32     msAreaFunctional;
159
160         u64     reserved3;
161 };
162
163 extern u64      xMsVpd[];
164
165 #endif  /* _ISERIES_MAIN_STORE_H */