Chameleon

Chameleon Svn Source Tree

Root/tags/2.0/i386/libsaio/pci_setup.c

Source at commit 1753 created 12 years 6 months ago.
By blackosx, Merge recent package installer changes from my branch in to trunk. Includes updates to Credits, installation log messages and localizable strings. Check for existence of EFI system partition before running the check for previous Chameleon installations. Only backup /Extra folder if necessary when running upgrade install.
1#include "libsaio.h"
2#include "boot.h"
3#include "bootstruct.h"
4#include "pci.h"
5#include "gma.h"
6#include "nvidia.h"
7#include "modules.h"
8
9
10extern bool setup_ati_devprop(pci_dt_t *ati_dev);
11extern void set_eth_builtin(pci_dt_t *eth_dev);
12extern void notify_usb_dev(pci_dt_t *pci_dev);
13extern void force_enable_hpet(pci_dt_t *lpc_dev);
14
15extern pci_dt_t *dram_controller_dev;
16
17void setup_pci_devs(pci_dt_t *pci_dt)
18{
19char *devicepath;
20bool do_eth_devprop, do_gfx_devprop, do_enable_hpet;
21pci_dt_t *current = pci_dt;
22
23do_eth_devprop = do_gfx_devprop = do_enable_hpet = false;
24
25getBoolForKey(kEthernetBuiltIn, &do_eth_devprop, &bootInfo->chameleonConfig);
26getBoolForKey(kGraphicsEnabler, &do_gfx_devprop, &bootInfo->chameleonConfig);
27getBoolForKey(kForceHPET, &do_enable_hpet, &bootInfo->chameleonConfig);
28
29while (current)
30{
31devicepath = get_pci_dev_path(current);
32
33switch (current->class_id)
34{
35case PCI_CLASS_BRIDGE_HOST:
36if (current->dev.addr == PCIADDR(0, 0, 0))
37dram_controller_dev = current;
38break;
39
40case PCI_CLASS_NETWORK_ETHERNET:
41if (do_eth_devprop)
42set_eth_builtin(current);
43break;
44
45case PCI_CLASS_DISPLAY_VGA:
46if (do_gfx_devprop)
47switch (current->vendor_id)
48{
49case PCI_VENDOR_ID_ATI:
50setup_ati_devprop(current);
51break;
52
53case PCI_VENDOR_ID_INTEL:
54setup_gma_devprop(current);
55break;
56
57case PCI_VENDOR_ID_NVIDIA:
58setup_nvidia_devprop(current);
59break;
60}
61break;
62
63case PCI_CLASS_SERIAL_USB:
64notify_usb_dev(current);
65break;
66
67case PCI_CLASS_BRIDGE_ISA:
68if (do_enable_hpet)
69force_enable_hpet(current);
70break;
71}
72
73execute_hook("PCIDevice", current, NULL, NULL, NULL);
74
75setup_pci_devs(current->children);
76current = current->next;
77}
78}
79

Archive Download this file

Revision: 1753