Chameleon Applications

Chameleon Applications Svn Source Tree

Root/branches/iFabio/Chameleon/i386/libsaio/platform.h

Source at commit 307 created 12 years 11 months ago.
By ifabio, merge changes from trunk (929). Also merge the module changes from Azimutz branche (fix compile error) Also edited the info.plist into AHCIPortInjector.kext: http://forum.voodooprojects.org/index.php/topic,1170.0.html
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 index into cpuid_raw */
17#define CPUID_00
18#define CPUID_11
19#define CPUID_22
20#define CPUID_33
21#define CPUID_44
22#define CPUID_805
23#define CPUID_816
24#define CPUID_MAX7
25
26#define CPU_MODEL_YONAH0x0E
27#define CPU_MODEL_MEROM0x0F
28#define CPU_MODEL_PENRYN0x17
29#define CPU_MODEL_NEHALEM0x1A
30#define CPU_MODEL_ATOM0x1C
31#define CPU_MODEL_FIELDS0x1E/* Lynnfield, Clarksfield, Jasper */
32#define CPU_MODEL_DALES0x1F/* Havendale, Auburndale */
33#define CPU_MODEL_DALES_32NM0x25/* Clarkdale, Arrandale */
34#define CPU_MODEL_SANDY0x2a/* Sandy bridge */
35#define CPU_MODEL_WESTMERE0x2C/* Gulftown, Westmere-EP, Westmere-WS */
36#define CPU_MODEL_SANDY_XEON0x2D
37#define CPU_MODEL_NEHALEM_EX0x2E
38#define CPU_MODEL_WESTMERE_EX0x2F
39
40/* CPU Features */
41#define CPU_FEATURE_MMX0x00000001// MMX Instruction Set
42#define CPU_FEATURE_SSE0x00000002// SSE Instruction Set
43#define CPU_FEATURE_SSE20x00000004// SSE2 Instruction Set
44#define CPU_FEATURE_SSE30x00000008// SSE3 Instruction Set
45#define CPU_FEATURE_SSE410x00000010// SSE41 Instruction Set
46#define CPU_FEATURE_SSE420x00000020// SSE42 Instruction Set
47#define CPU_FEATURE_EM64T0x00000040// 64Bit Support
48#define CPU_FEATURE_HTT0x00000080// HyperThreading
49#define CPU_FEATURE_MOBILE0x00000100// Mobile CPU
50#define CPU_FEATURE_MSR0x00000200// MSR Support
51
52/* SMBIOS Memory Types */
53#define SMB_MEM_TYPE_UNDEFINED0
54#define SMB_MEM_TYPE_OTHER1
55#define SMB_MEM_TYPE_UNKNOWN2
56#define SMB_MEM_TYPE_DRAM3
57#define SMB_MEM_TYPE_EDRAM4
58#define SMB_MEM_TYPE_VRAM5
59#define SMB_MEM_TYPE_SRAM6
60#define SMB_MEM_TYPE_RAM7
61#define SMB_MEM_TYPE_ROM8
62#define SMB_MEM_TYPE_FLASH9
63#define SMB_MEM_TYPE_EEPROM10
64#define SMB_MEM_TYPE_FEPROM11
65#define SMB_MEM_TYPE_EPROM12
66#define SMB_MEM_TYPE_CDRAM13
67#define SMB_MEM_TYPE_3DRAM14
68#define SMB_MEM_TYPE_SDRAM15
69#define SMB_MEM_TYPE_SGRAM16
70#define SMB_MEM_TYPE_RDRAM17
71#define SMB_MEM_TYPE_DDR18
72#define SMB_MEM_TYPE_DDR219
73#define SMB_MEM_TYPE_FBDIMM20
74#define SMB_MEM_TYPE_DDR324// Supported in 10.5.6+ AppleSMBIOS
75
76/* Memory Configuration Types */
77#define SMB_MEM_CHANNEL_UNKNOWN0
78#define SMB_MEM_CHANNEL_SINGLE1
79#define SMB_MEM_CHANNEL_DUAL2
80#define SMB_MEM_CHANNEL_TRIPLE3
81
82/* Maximum number of ram slots */
83#define MAX_RAM_SLOTS8
84#define RAM_SLOT_ENUMERATOR{0, 2, 4, 1, 3, 5, 6, 8, 10, 7, 9, 11}
85
86/* Maximum number of SPD bytes */
87#define MAX_SPD_SIZE256
88
89/* Size of SMBIOS UUID in bytes */
90#define UUID_LEN16
91
92typedef struct _RamSlotInfo_t {
93 uint32_tModuleSize;// Size of Module in MB
94 uint32_tFrequency;// in Mhz
95 const char*Vendor;
96 const char*PartNo;
97 const char*SerialNo;
98 char*spd;// SPD Dump
99 boolInUse;
100 uint8_tType;
101 uint8_tBankConnections;// table type 6, see (3.3.7)
102 uint8_tBankConnCnt;
103
104} RamSlotInfo_t;
105
106typedef struct _PlatformInfo_t {
107struct CPU {
108uint32_tFeatures;// CPU Features like MMX, SSE2, VT, MobileCPU
109uint32_tVendor;// Vendor
110uint32_tSignature;// Signature
111uint32_tStepping;// Stepping
112uint32_tModel;// Model
113uint32_tExtModel;// Extended Model
114uint32_tFamily;// Family
115uint32_tExtFamily;// Extended Family
116uint32_tNoCores;// No Cores per Package
117uint32_tNoThreads;// Threads per Package
118uint8_tMaxCoef;// Max Multiplier
119uint8_tMaxDiv;
120uint8_tCurrCoef;// Current Multiplier
121uint8_tCurrDiv;
122uint64_tTSCFrequency;// TSC Frequency Hz
123uint64_tFSBFrequency;// FSB Frequency Hz
124uint64_tCPUFrequency;// CPU Frequency Hz
125uint32_tMaxRatio;// Max Bus Ratio
126uint32_tMinRatio;// Min Bus Ratio
127charBrandString[48];// 48 Byte Branding String
128uint32_tCPUID[CPUID_MAX][4];// CPUID 0..4, 80..81 Raw Values
129} CPU;
130
131struct RAM {
132uint64_tFrequency;// Ram Frequency
133uint32_tDivider;// Memory divider
134uint8_tCAS;// CAS 1/2/2.5/3/4/5/6/7
135uint8_tTRC;
136uint8_tTRP;
137uint8_tRAS;
138uint8_tChannels;// Channel Configuration Single,Dual or Triple
139uint8_tNoSlots;// Maximum no of slots available
140uint8_tType;// Standard SMBIOS v2.5 Memory Type
141RamSlotInfo_tDIMM[MAX_RAM_SLOTS];// Information about each slot
142} RAM;
143
144struct DMI {
145intMaxMemorySlots;// number of memory slots polulated by SMBIOS
146intCntMemorySlots;// number of memory slots counted
147intMemoryModules;// number of memory modules installed
148intDIMM[MAX_RAM_SLOTS];// Information and SPD mapping for each slot
149} DMI;
150
151uint8_tType;// System Type: 1=Desktop, 2=Portable... according ACPI2.0 (FACP: PM_Profile)
152uint8_t*UUID;
153} PlatformInfo_t;
154
155extern PlatformInfo_t Platform;
156
157#endif /* !__LIBSAIO_PLATFORM_H */
158

Archive Download this file

Revision: 307