Chameleon

Chameleon Svn Source Tree

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

Source at commit 1158 created 13 years 16 days ago.
By azimutz, Match nvidia.c with the one on my branch (Chazi) adding dev id's from issue 99 and Asus G74SX (0DF4, 1251).
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: 1158