Chameleon

Chameleon Svn Source Tree

Root/branches/meklortOld/i386/modules/Memory/Memory.c

Source at commit 1146 created 12 years 10 months ago.
By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing).
1/*
2 * DRAM Controller Module
3 * Scans the dram controller and notifies OS X of the memory modules.
4 *This was converted from boot2 code to a boot2 module.
5 *
6 */
7
8#include "libsaio.h"
9#include "pci.h"
10#include "platform.h"
11#include "dram_controllers.h"
12#include "spd.h"
13#include "mem.h"
14#include "boot.h"
15#include "bootstruct.h"
16#include "modules.h"
17
18pci_dt_t * dram_controller_dev = NULL;
19pci_dt_t * smbus_controller_dev = NULL;
20
21
22void Memory_hook(void* arg1, void* arg2, void* arg3, void* arg4);
23void Memory_PCIDevice_hook(void* arg1, void* arg2, void* arg3, void* arg4);
24
25
26void Memory_start()
27{
28register_hook_callback("PCIDevice", &Memory_PCIDevice_hook);
29register_hook_callback("ScanMemory", &Memory_hook);
30
31}
32
33void Memory_PCIDevice_hook(void* arg1, void* arg2, void* arg3, void* arg4)
34{
35pci_dt_t* current = arg1;
36if(current->class_id == PCI_CLASS_BRIDGE_HOST)
37{
38dram_controller_dev = current;
39}
40else if(is_smbus_controller(current))
41{
42smbus_controller_dev = current;
43}
44
45}
46
47void Memory_hook(void* arg1, void* arg2, void* arg3, void* arg4)
48{
49bool useAutodetection = true;
50 getBoolForKey(kUseMemDetect, &useAutodetection, &bootInfo->bootConfig);
51
52
53 if (useAutodetection) {
54
55if (dram_controller_dev!=NULL) {
56scan_dram_controller(dram_controller_dev); // Rek: pci dev ram controller direct and fully informative scan ...
57}
58scan_memory(Platform); // unfortunately still necesary for some comp where spd cant read correct speed
59
60if(smbus_controller_dev)
61{
62scan_spd(Platform, smbus_controller_dev);
63}
64 }
65
66}

Archive Download this file

Revision: 1146