Chameleon

Chameleon Svn Source Tree

Root/branches/azimutz/Chazi/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//Azi: this was already acting as a mini libsaio.h :P see bootstruct.h.
11//#include "libsaio.h"
12#include "libsa.h"
13#include "saio_types.h"
14#include "saio_internal.h"
15
16extern bool platformCPUFeature(uint32_t);
17extern void scan_platform(void);
18extern void dumpPhysAddr(const char * title, void * a, int len);
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_805
27#define CPUID_816
28#define CPUID_MAX7
29
30#define CPU_MODEL_YONAH0x0E
31#define CPU_MODEL_MEROM0x0F
32#define CPU_MODEL_PENRYN0x17
33#define CPU_MODEL_NEHALEM0x1A
34#define CPU_MODEL_ATOM0x1C
35#define CPU_MODEL_FIELDS0x1E// Lynnfield, Clarksfield, Jasper
36#define CPU_MODEL_DALES0x1F// Havendale, Auburndale
37#define CPU_MODEL_DALES_32NM0x25// Clarkdale, Arrandale
38#define CPU_MODEL_WESTMERE0x2C// Gulftown, Westmere-EP, Westmere-WS
39#define CPU_MODEL_NEHALEM_EX0x2E
40#define CPU_MODEL_WESTMERE_EX0x2F
41
42/* CPU Features */
43#define CPU_FEATURE_MMX0x00000001// MMX Instruction Set
44#define CPU_FEATURE_SSE0x00000002// SSE Instruction Set
45#define CPU_FEATURE_SSE20x00000004// SSE2 Instruction Set
46#define CPU_FEATURE_SSE30x00000008// SSE3 Instruction Set
47#define CPU_FEATURE_SSE410x00000010// SSE41 Instruction Set
48#define CPU_FEATURE_SSE420x00000020// SSE42 Instruction Set
49#define CPU_FEATURE_EM64T0x00000040// 64Bit Support
50#define CPU_FEATURE_HTT0x00000080// HyperThreading
51#define CPU_FEATURE_MOBILE0x00000100// Mobile CPU
52#define CPU_FEATURE_MSR0x00000200// MSR Support
53
54/* SMBIOS Memory Types */
55#define SMB_MEM_TYPE_UNDEFINED0
56#define SMB_MEM_TYPE_OTHER1
57#define SMB_MEM_TYPE_UNKNOWN2
58#define SMB_MEM_TYPE_DRAM3
59#define SMB_MEM_TYPE_EDRAM4
60#define SMB_MEM_TYPE_VRAM5
61#define SMB_MEM_TYPE_SRAM6
62#define SMB_MEM_TYPE_RAM7
63#define SMB_MEM_TYPE_ROM8
64#define SMB_MEM_TYPE_FLASH9
65#define SMB_MEM_TYPE_EEPROM10
66#define SMB_MEM_TYPE_FEPROM11
67#define SMB_MEM_TYPE_EPROM12
68#define SMB_MEM_TYPE_CDRAM13
69#define SMB_MEM_TYPE_3DRAM14
70#define SMB_MEM_TYPE_SDRAM15
71#define SMB_MEM_TYPE_SGRAM16
72#define SMB_MEM_TYPE_RDRAM17
73#define SMB_MEM_TYPE_DDR18
74#define SMB_MEM_TYPE_DDR219
75#define SMB_MEM_TYPE_FBDIMM20
76#define SMB_MEM_TYPE_DDR324// Supported in 10.5.6+ AppleSMBIOS
77
78/* Memory Configuration Types */
79#define SMB_MEM_CHANNEL_UNKNOWN0
80#define SMB_MEM_CHANNEL_SINGLE1
81#define SMB_MEM_CHANNEL_DUAL2
82#define SMB_MEM_CHANNEL_TRIPLE3
83
84/* Maximum number of ram slots */
85#define MAX_RAM_SLOTS8
86#define RAM_SLOT_ENUMERATOR{0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11}
87
88/* Maximum number of SPD bytes */
89#define MAX_SPD_SIZE256
90
91/* Size of SMBIOS UUID in bytes */
92#define UUID_LEN16
93
94typedef struct _RamSlotInfo_t
95{
96 uint32_tModuleSize;// Size of Module in MB
97 uint32_tFrequency;// in Mhz
98 const char*Vendor;
99 const char*PartNo;
100 const char*SerialNo;
101 char*spd;// SPD Dump
102 boolInUse;
103 uint8_tType;
104 uint8_tBankConnections;// table type 6, see (3.3.7)
105 uint8_tBankConnCnt;
106} RamSlotInfo_t;
107
108typedef struct _PlatformInfo_t
109{
110struct CPU
111{
112uint32_tFeatures;// CPU Features like MMX, SSE2, VT, MobileCPU
113uint32_tVendor;// Vendor
114uint32_tSignature;// Signature
115uint32_tStepping;// Stepping
116uint32_tModel;// Model
117uint32_tExtModel;// Extended Model
118uint32_tFamily;// Family
119uint32_tExtFamily;// Extended Family
120uint32_tNoCores;// No Cores per Package
121uint32_tNoThreads;// Threads per Package
122uint8_tMaxCoef;// Max Multiplier
123uint8_tMaxDiv;
124uint8_tCurrCoef;// Current Multiplier
125uint8_tCurrDiv;
126uint64_tTSCFrequency;// TSC Frequency Hz
127uint64_tFSBFrequency;// FSB Frequency Hz
128uint64_tCPUFrequency;// CPU Frequency Hz
129charBrandString[48];// 48 Byte Branding String
130uint32_tCPUID[CPUID_MAX][4];// CPUID 0..4, 80..81 Raw Values
131} CPU;
132
133struct RAM
134{
135uint64_tFrequency;// Ram Frequency
136uint32_tDivider;// Memory divider
137uint8_tCAS;// CAS 1/2/2.5/3/4/5/6/7
138uint8_tTRC;
139uint8_tTRP;
140uint8_tRAS;
141uint8_tChannels;// Channel Configuration Single,Dual or Triple
142uint8_tNoSlots;// Maximum no of slots available
143uint8_tType;// Standard SMBIOS v2.5 Memory Type
144RamSlotInfo_tDIMM[MAX_RAM_SLOTS];// Information about each slot
145} RAM;
146
147struct DMI
148{
149intMaxMemorySlots;// number of memory slots polulated by SMBIOS
150intCntMemorySlots;// number of memory slots counted
151intMemoryModules;// number of memory modules installed
152intDIMM[MAX_RAM_SLOTS];// Information and SPD mapping for each slot
153} DMI;
154uint8_tType;// System Type: 1=Desktop, 2=Portable... according ACPI2.0 (FACP: PM_Profile)
155} PlatformInfo_t;
156
157extern PlatformInfo_t Platform;
158
159#endif /* !__LIBSAIO_PLATFORM_H */
160

Archive Download this file

Revision: 515