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 __attribute((packed)) IoHriMainStoreChipInfo1 {
65 	u32	chipMfgID;
66 	char	chipECLevel[4];
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	__attribute((packed)) IoHriMainStoreVpdFruData {
77 	char	fruLabel[8];
78 	u8	numberOfSlots;
79 	u8	pluggingType;
80 	u16	slotMapIndex;
81 };
82 
83 struct  __attribute((packed)) IoHriMainStoreAdrRangeBlock {
84 	void	*blockStart;
85 	void	*blockEnd;
86 	u32	blockProcChipId;
87 };
88 
89 #define MaxAreaAdrRangeBlocks 4
90 
91 struct __attribute((packed)) IoHriMainStoreArea4 {
92 	u32	msVpdFormat;
93 	u8	containedVpdType;
94 	u8	reserved1;
95 	u16	reserved2;
96 
97 	u64	msExists;
98 	u64	msFunctional;
99 
100 	u32	memorySize;
101 	u32	procNodeId;
102 
103 	u32	numAdrRangeBlocks;
104 	struct IoHriMainStoreAdrRangeBlock xAdrRangeBlock[MaxAreaAdrRangeBlocks];
105 
106 	struct IoHriMainStoreChipInfo1	chipInfo0;
107 	struct IoHriMainStoreChipInfo1	chipInfo1;
108 	struct IoHriMainStoreChipInfo1	chipInfo2;
109 	struct IoHriMainStoreChipInfo1	chipInfo3;
110 	struct IoHriMainStoreChipInfo1	chipInfo4;
111 	struct IoHriMainStoreChipInfo1	chipInfo5;
112 	struct IoHriMainStoreChipInfo1	chipInfo6;
113 	struct IoHriMainStoreChipInfo1	chipInfo7;
114 
115 	void	*msRamAreaArray;
116 	u32	msRamAreaArrayNumEntries;
117 	u32	msRamAreaArrayEntrySize;
118 
119 	u32	numaDimmExists;
120 	u32	numaDimmFunctional;
121 	void	*numaDimmArray;
122 	u32	numaDimmArrayNumEntries;
123 	u32	numaDimmArrayEntrySize;
124 
125 	struct IoHriMainStoreVpdIdData idData;
126 
127 	u64	powerData;
128 	u64	cardAssemblyPartNum;
129 	u64	chipSerialNum;
130 
131 	u64	reserved3;
132 	char	reserved4[16];
133 
134 	struct IoHriMainStoreVpdFruData fruData;
135 
136 	u8	vpdPortNum;
137 	u8	reserved5;
138 	u8	frameId;
139 	u8	rackUnit;
140 	char	asciiKeywordVpd[256];
141 	u32	reserved6;
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 */
166