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