Chameleon

Chameleon Svn Source Tree

Root/branches/chucko/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
12extern bool platformCPUFeature(uint32_t);
13extern void scan_platform(void);
14extern void dumpPhysAddr(const char * title, void * a, int len);
15
16/* CPUID Vendor */
17#define CPUID_VENDOR_INTEL 0x756E6547
18#define CPUID_VENDOR_AMD 0x68747541
19
20/* CPUID index into cpuid_raw */
21#define CPUID_00
22#define CPUID_11
23#define CPUID_22
24#define CPUID_33
25#define CPUID_44
26#define CPUID_55
27#define CPUID_66
28#define CPUID_807
29#define CPUID_818
30#define CPUID_889
31#define CPUID_MAX10
32
33#define CPU_MODEL_PRESCOTT0x03// Celeron D, Pentium 4 (90nm)
34#define CPU_MODEL_NOCONA0x04// Xeon Nocona, Irwindale (90nm)
35#define CPU_MODEL_PRESLER0x06// Pentium 4, Pentium D (65nm)
36#define CPU_MODEL_PENTIUM_M0x09// Banias
37#define CPU_MODEL_DOTHAN0x0D// Dothan
38#define CPU_MODEL_YONAH0x0E// Sossaman, Yonah
39#define CPU_MODEL_MEROM0x0F// Allendale, Conroe, Kentsfield, Woodcrest, Clovertown, Tigerton, Merom
40#define CPU_MODEL_CONROE0x0F//
41#define CPU_MODEL_CELERON0x16//
42#define CPU_MODEL_PENRYN0x17// Wolfdale, Yorkfield, Harpertown, Penryn
43#define CPU_MODEL_WOLFDALE0x17//
44#define CPU_MODEL_NEHALEM0x1A// Bloomfield. Nehalem-EP, Nehalem-WS, Gainestown
45#define CPU_MODEL_ATOM0x1C// Pineview
46#define CPU_MODEL_XEON_MP0x1D// MP 7400
47#define CPU_MODEL_FIELDS0x1E// Lynnfield, Clarksfield, Jasper Forest
48#define CPU_MODEL_DALES0x1F// Havendale, Auburndale
49#define CPU_MODEL_DALES_32NM0x25// Clarkdale, Arrandale
50#define CPU_MODEL_ATOM_SAN0x26// Lincroft
51#define CPU_MODEL_LINCROFT0x27//
52#define CPU_MODEL_SANDYBRIDGE0x2A// Sandy Bridge
53#define CPU_MODEL_WESTMERE0x2C// Gulftown, Westmere-EP, Westmere-WS
54#define CPU_MODEL_JAKETOWN0x2D// Sandy Bridge-E, Sandy Bridge-EP
55#define CPU_MODEL_NEHALEM_EX0x2E// Beckton
56#define CPU_MODEL_WESTMERE_EX0x2F// Westmere-EX
57#define CPU_MODEL_ATOM_20000x36// Cedarview
58#define CPU_MODEL_IVYBRIDGE0x3A// Ivy Bridge
59#define CPU_MODEL_HASWELL0x3C// Haswell DT
60#define CPU_MODEL_IVYBRIDGE_XEON0x3E// Ivy Bridge Xeon
61#define CPU_MODEL_HASWELL_MB0x3F// Haswell MB
62//#define CPU_MODEL_HASWELL_H0x??// Haswell H
63#define CPU_MODEL_HASWELL_ULT0x45// Haswell ULT
64#define CPU_MODEL_CRYSTALWELL0x46// Haswell ULX
65
66/* CPU Features */
67#define CPU_FEATURE_MMX0x00000001// MMX Instruction Set
68#define CPU_FEATURE_SSE0x00000002// SSE Instruction Set
69#define CPU_FEATURE_SSE20x00000004// SSE2 Instruction Set
70#define CPU_FEATURE_SSE30x00000008// SSE3 Instruction Set
71#define CPU_FEATURE_SSE410x00000010// SSE41 Instruction Set
72#define CPU_FEATURE_SSE420x00000020// SSE42 Instruction Set
73#define CPU_FEATURE_EM64T0x00000040// 64Bit Support
74#define CPU_FEATURE_HTT0x00000080// HyperThreading
75#define CPU_FEATURE_MOBILE0x00000100// Mobile CPU
76#define CPU_FEATURE_MSR0x00000200// MSR Support
77
78/* SMBIOS Memory Types */
79#define SMB_MEM_TYPE_UNDEFINED0
80#define SMB_MEM_TYPE_OTHER1
81#define SMB_MEM_TYPE_UNKNOWN2
82#define SMB_MEM_TYPE_DRAM3
83#define SMB_MEM_TYPE_EDRAM4
84#define SMB_MEM_TYPE_VRAM5
85#define SMB_MEM_TYPE_SRAM6
86#define SMB_MEM_TYPE_RAM7
87#define SMB_MEM_TYPE_ROM8
88#define SMB_MEM_TYPE_FLASH9
89#define SMB_MEM_TYPE_EEPROM10
90#define SMB_MEM_TYPE_FEPROM11
91#define SMB_MEM_TYPE_EPROM12
92#define SMB_MEM_TYPE_CDRAM13
93#define SMB_MEM_TYPE_3DRAM14
94#define SMB_MEM_TYPE_SDRAM15
95#define SMB_MEM_TYPE_SGRAM16
96#define SMB_MEM_TYPE_RDRAM17
97#define SMB_MEM_TYPE_DDR18
98#define SMB_MEM_TYPE_DDR219
99#define SMB_MEM_TYPE_FBDIMM20
100#define SMB_MEM_TYPE_DDR324// Supported in 10.5.6+ AppleSMBIOS
101
102/* Memory Configuration Types */
103#define SMB_MEM_CHANNEL_UNKNOWN0
104#define SMB_MEM_CHANNEL_SINGLE1
105#define SMB_MEM_CHANNEL_DUAL2
106#define SMB_MEM_CHANNEL_TRIPLE3
107
108/* Maximum number of ram slots */
109#define MAX_RAM_SLOTS8
110#define RAM_SLOT_ENUMERATOR{0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11}
111
112/* Maximum number of SPD bytes */
113#define MAX_SPD_SIZE256
114
115/* Size of SMBIOS UUID in bytes */
116#define UUID_LEN16
117
118typedef struct _RamSlotInfo_t
119{
120uint32_tModuleSize;// Size of Module in MB
121uint32_tFrequency;// in Mhz
122const char*Vendor;
123const char*PartNo;
124const char*SerialNo;
125char*spd;// SPD Dump
126boolInUse;
127uint8_tType;
128uint8_tBankConnections;// table type 6, see (3.3.7)
129uint8_tBankConnCnt;
130} RamSlotInfo_t;
131
132//==============================================================================
133
134typedef struct _PlatformInfo_t {
135struct CPU {
136uint32_tFeatures;// CPU Features like MMX, SSE2, VT, MobileCPU
137uint32_tVendor;// Vendor
138uint32_tSignature;// Processor Signature
139uint32_tStepping;// Stepping
140uint32_tType;// Type
141uint32_tModel;// Model
142uint32_tExtModel;// Extended Model
143uint32_tFamily;// Family
144uint32_tExtFamily;// Extended Family
145uint32_tNoCores;// No Cores per Package
146uint32_tNoThreads;// Threads per Package
147uint8_tMaxCoef;// Max Multiplier
148uint8_tMaxDiv;
149uint8_tCurrCoef;// Current Multiplier
150uint8_tCurrDiv;
151uint64_tTSCFrequency;// TSC Frequency Hz
152uint64_tFSBFrequency;// FSB Frequency Hz
153uint64_tCPUFrequency;// CPU Frequency Hz
154uint32_tMaxRatio;// Max Bus Ratio
155uint32_tMinRatio;// Min Bus Ratio
156charBrandString[48];// 48 Byte Branding String
157uint32_tCPUID[CPUID_MAX][4];// CPUID 0..4, 80..81 Raw Values
158} CPU;
159
160struct RAM {
161uint64_tFrequency;// Ram Frequency
162uint32_tDivider;// Memory divider
163uint8_tCAS;// CAS 1/2/2.5/3/4/5/6/7
164uint8_tTRC;
165uint8_tTRP;
166uint8_tRAS;
167uint8_tChannels;// Channel Configuration Single,Dual or Triple
168uint8_tNoSlots;// Maximum no of slots available
169uint8_tType;// Standard SMBIOS v2.5 Memory Type
170RamSlotInfo_tDIMM[MAX_RAM_SLOTS];// Information about each slot
171} RAM;
172
173struct DMI {
174intMaxMemorySlots;// number of memory slots populated by SMBIOS
175intCntMemorySlots;// number of memory slots counted
176intMemoryModules;// number of memory modules installed
177intDIMM[MAX_RAM_SLOTS];// Information and SPD mapping for each slot
178} DMI;
179
180uint8_tType; // System Type: 1=Desktop, 2=Portable... according ACPI2.0 (FACP: PM_Profile)
181uint8_t*UUID;
182} PlatformInfo_t;
183
184extern PlatformInfo_t Platform;
185
186#endif /* !__LIBSAIO_PLATFORM_H */
187

Archive Download this file

Revision: 2329