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