Chameleon

Chameleon Svn Source Tree

Root/branches/cparm/i386/libsaio/platform.h

1/*
2 * platform.h
3 * AsereBLN: reworked and extended
4 *
5 */
6
7#ifndef __LIBSAIO_PLATFORM_H
8#define __LIBSAIO_PLATFORM_H
9
10#include "libsaio.h"
11#include "cpuid.h"
12#include "cpu_data.h"
13
14#define bitmask(h,l)((_Bit(h)|(_Bit(h)-1)) & ~(_Bit(l)-1))
15#define bitfield(x,h,l)(((x) & bitmask(h,l)) >> l)
16
17#define quad(hi,lo) (((uint64_t)(hi)) << 32 | (lo))
18
19/* Additional models supported by Chameleon (NOT SUPPORTED BY THE APPLE'S ORIGINAL KERNEL) */
20#define CPUID_MODEL_BANIAS 0x09
21#define CPUID_MODEL_DOTHAN 0x0D
22#define CPUID_MODEL_ATOM0x1C
23
24/* CPUID Vendor */
25#define CPUID_VENDOR_INTEL 0x756E6547
26#define CPUID_VENDOR_AMD 0x68747541
27
28/* SMBIOS Memory Types */
29#define SMB_MEM_TYPE_UNDEFINED0
30#define SMB_MEM_TYPE_OTHER1
31#define SMB_MEM_TYPE_UNKNOWN2
32#define SMB_MEM_TYPE_DRAM3
33#define SMB_MEM_TYPE_EDRAM4
34#define SMB_MEM_TYPE_VRAM5
35#define SMB_MEM_TYPE_SRAM6
36#define SMB_MEM_TYPE_RAM7
37#define SMB_MEM_TYPE_ROM8
38#define SMB_MEM_TYPE_FLASH9
39#define SMB_MEM_TYPE_EEPROM10
40#define SMB_MEM_TYPE_FEPROM11
41#define SMB_MEM_TYPE_EPROM12
42#define SMB_MEM_TYPE_CDRAM13
43#define SMB_MEM_TYPE_3DRAM14
44#define SMB_MEM_TYPE_SDRAM15
45#define SMB_MEM_TYPE_SGRAM16
46#define SMB_MEM_TYPE_RDRAM17
47#define SMB_MEM_TYPE_DDR18
48#define SMB_MEM_TYPE_DDR219
49#define SMB_MEM_TYPE_FBDIMM20
50#define SMB_MEM_TYPE_DDR324// Supported in 10.5.6+ AppleSMBIOS
51
52/* Memory Configuration Types */
53#define SMB_MEM_CHANNEL_UNKNOWN0
54#define SMB_MEM_CHANNEL_SINGLE1
55#define SMB_MEM_CHANNEL_DUAL2
56#define SMB_MEM_CHANNEL_TRIPLE3
57
58/* Maximum number of ram slots */
59#define MAX_RAM_SLOTS8
60#define RAM_SLOT_ENUMERATOR{0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11}
61
62/* Maximum number of SPD bytes */
63#define MAX_SPD_SIZE256
64
65/* Size of SMBIOS UUID in bytes */
66#define UUID_LEN16
67
68typedef struct _RamSlotInfo_t {
69 uint32_tModuleSize;// Size of Module in MB
70 uint32_tFrequency; // in Mhz
71 const char*Vendor;
72 const char*PartNo;
73 const char*SerialNo;
74 char*spd;// SPD Dump
75 boolInUse;
76 uint8_tType;
77 uint8_tBankConnections; // table type 6, see (3.3.7)
78 uint8_tBankConnCnt;
79
80} RamSlotInfo_t;
81
82#define envVendor "Vendor"
83#define envCPUIDMaxBasic "max_basic"
84#define envCPUIDMaxExt "max_ext"
85#define envMicrocodeVersion "Microcode"
86#define envSignature "Signature"
87#define envStepping "Stepping"
88#define envModel "Model"
89
90#define envFamily "Family"
91#define envExtModel "ExtModel"
92#define envExtFamily "ExtFamily"
93#define envBrand "Brand"
94#define envFeatures "Feat"
95#define envExtFeatures "ExtFeat"
96#define envSubCstates "sub_Csta"
97#define envExtensions "CPUIDext"
98#define envBrandString "BrandStr"
99
100#define envDynamicAcceleration "dynAcc"
101#define envInvariantAPICTimer "invAPIC"
102#define envFineGrainClockMod "fineGrain"
103#define envNoThreads "NoThreads"
104#define envNoCores "NoCores"
105#define envIsMobile "isMobile"
106#define envMaxCoef "MaxCoef"
107#define envMaxDiv "MaxDiv"
108#define envCurrCoef "CurrCoef"
109#define envCurrDiv "CurrDiv"
110#define envTSCFreq "TSCFreq"
111#define envFSBFreq "FSBFreq"
112#define envCPUFreq "CPUFreq"
113#define envIsServer "isServer"
114
115
116#define envCurrCoef "CurrCoef"
117#define envCurrDiv "CurrDiv"
118#define envTSCFreq "TSCFreq"
119#define envFSBFreq "FSBFreq"
120#define envCPUFreq "CPUFreq"
121
122#define envHardwareSignature "HdwSign"
123#define envType "Type"
124#define envUUID "UUID"
125#define envSysId "SysId"
126
127#define envgBootMode "gBootMode"
128#define envgBIOSDev "gBIOSDev"
129#define envSysConfigValid "IsSysConf"
130#define envgOverrideKernel "IsKover"
131#define envgEnableCDROMRescan "CDRescan"
132#define envgScanSingleDrive "1Drive"
133#define envgDeviceCount "DevCnt"
134#define envShouldboot "shldboot"
135
136
137#define envDriverExtSpec "DrvXSpec"
138#define envDriverSpec "DrvSpec"
139#define envDriverFileSpec "DrvFSpes"
140#define envDriverTempSpec "DrvTSpes"
141#define envDriverFileName "DrvFName"
142
143#define envkCache "kCache"
144#define envMKextName "MCache"
145
146#define envBootBanner "Banner"
147#define envBootPrompt "Prompt"
148#define envBootRescanPrompt "PromptBis"
149
150#define envgMenuRow "MenuRow"
151#define envgMenuHeight "MenuH"
152#define envgMenuItemCount "MenuCnt"
153#define envgMenuTop "MenuTop"
154#define envgMenuBottom "MenuB"
155#define envgMenuSelection "MenuSel"
156#define envgMenuStart "MenuStart"
157#define envgMenuEnd "MenuEnd"
158#define envArgCntRemaining "ArgCntRem"
159
160#define envgBootArgs"gBootArgs"
161
162#define envConvMem "ConvMem"
163#define envExtMem "ExtMem"
164#define envMemoryMap "MemoryMap"
165#define envMemoryMapCnt "MemMapCnt"
166
167
168#define envRamFrequency "RamFreq"
169#define envRamCas "tCAS"
170#define envRamTrc "tRCD"
171#define envRamRas "tRAS"
172#define envRamTrp "tRP"
173#define envRamChannels "RamChans"
174#define envRamType "RamType"
175#define envRamCas "tCAS"
176#define envRamCas "tCAS"
177#define envRamCas "tCAS"
178#define envRamCas "tCAS"
179#define envDMIMemModules "DmiMemMod"
180#define envDMIMaxMemorySlots "DmiMaxSlt"
181#define envDMICntMemorySlots "DmiCntSlt"
182#define envRamDimm "RamDimm"
183#define envDmiDimm "DmiDimm"
184
185#if UNUSED
186typedef struct _PlatformInfo_t {
187
188 struct CPU_t {
189 uint64_tFeatures;// CPU Features like MMX, SSE2, VT ...
190 uint64_tExtFeatures; // CPU Extended Features like SYSCALL, XD, EM64T, LAHF ...
191 uint32_tVendor;// Vendor
192 uint32_tSignature;// Signature
193 uint8_t Stepping;// Stepping
194 uint8_t Model;// Model
195 uint8_t ExtModel;// Extended Model
196 uint8_t Family;// Family
197 uint8_t ExtFamily;// Extended Family
198 uint32_tNoCores;// No Cores per Package
199 uint32_tNoThreads;// Threads per Package
200 uint8_tMaxCoef;// Max Multiplier
201 uint8_tMaxDiv;
202 uint8_tCurrCoef;// Current Multiplier
203 uint8_tCurrDiv;
204 uint64_tTSCFrequency;// TSC Frequency Hz
205 uint64_tFSBFrequency;// FSB Frequency Hz
206 uint64_tCPUFrequency;// CPU Frequency Hz
207 charBrandString[48];// 48 Byte Branding String
208 uint8_t Brand;
209 uint32_tMicrocodeVersion; // The microcode version number a.k.a. signature a.k.a. BIOS ID
210
211 bool isMobile;
212 bool isServer;// Unlike isMobile, if this value is set it will disable all kind of detection and enforce "Server" as platform (must be set by user)
213
214 boolean_tdynamic_acceleration;
215 boolean_tinvariant_APIC_timer;
216 boolean_tfine_grain_clock_mod;
217
218 uint32_t cpuid_max_basic;
219uint32_t cpuid_max_ext;
220 uint32_tsub_Cstates;
221 uint32_t extensions;
222
223 } CPU;
224
225 struct RAM_t {
226 uint64_tFrequency;// Ram Frequency
227 uint32_tDivider;// Memory divider
228 uint8_tCAS;// CAS 1/2/2.5/3/4/5/6/7
229 uint8_tTRC;
230 uint8_tTRP;
231 uint8_tRAS;
232 uint8_tChannels;// Channel Configuration Single,Dual or Triple
233 uint8_tNoSlots;// Maximum no of slots available
234 uint8_tType;// Standard SMBIOS v2.5 Memory Type
235 RamSlotInfo_tDIMM[MAX_RAM_SLOTS];// Information about each slot
236 } RAM;
237
238 struct DMI {
239 intMaxMemorySlots;// number of memory slots polulated by SMBIOS
240 intCntMemorySlots;// number of memory slots counted
241 intMemoryModules;// number of memory modules installed
242 intDIMM[MAX_RAM_SLOTS];// Information and SPD mapping for each slot
243 } DMI;
244
245uint8_tType;// System Type: 1=Desktop, 2=Portable... according ACPI2.0 (FACP: PreferredProfile)
246uint8_t*UUID; // SMBios UUID
247uint32_thardware_signature;
248int8_tsysid[16];
249
250} PlatformInfo_t;
251#endif
252
253#ifdef ShowCurrentDate
254#include "efi.h"
255extern char * Date(void);
256extern void rtc_time(EFI_TIME *time);
257#endif
258
259#endif /* !__LIBSAIO_PLATFORM_H */
260

Archive Download this file

Revision: 1840