Chameleon

Chameleon Svn Source Tree

Root/trunk/i386/libsaio/pci_setup.c

1#include "libsaio.h"
2#include "boot.h"
3#include "bootstruct.h"
4#include "pci.h"
5#include "nvidia.h"
6#include "modules.h"
7
8
9extern bool setup_ati_devprop(pci_dt_t *ati_dev);
10extern void set_eth_builtin(pci_dt_t *eth_dev);
11extern void notify_usb_dev(pci_dt_t *pci_dev);
12extern void force_enable_hpet(pci_dt_t *lpc_dev);
13
14extern pci_dt_t *dram_controller_dev;
15
16void setup_pci_devs(pci_dt_t *pci_dt)
17{
18char *devicepath;
19bool do_eth_devprop, do_gfx_devprop, do_enable_hpet;
20pci_dt_t *current = pci_dt;
21
22do_eth_devprop = do_gfx_devprop = do_enable_hpet = false;
23
24getBoolForKey(kEthernetBuiltIn, &do_eth_devprop, &bootInfo->bootConfig);
25getBoolForKey(kGraphicsEnabler, &do_gfx_devprop, &bootInfo->bootConfig);
26getBoolForKey(kForceHPET, &do_enable_hpet, &bootInfo->bootConfig);
27
28while (current)
29{
30devicepath = get_pci_dev_path(current);
31
32switch (current->class_id)
33{
34case PCI_CLASS_BRIDGE_HOST:
35if (current->dev.addr == PCIADDR(0, 0, 0))
36dram_controller_dev = current;
37break;
38
39case PCI_CLASS_NETWORK_ETHERNET:
40if (do_eth_devprop)
41set_eth_builtin(current);
42break;
43
44case PCI_CLASS_DISPLAY_VGA:
45if (do_gfx_devprop)
46switch (current->vendor_id)
47{
48case PCI_VENDOR_ID_ATI:
49setup_ati_devprop(current);
50break;
51
52case PCI_VENDOR_ID_INTEL:
53/* message to be removed once support for these cards is added */
54verbose("Intel VGA Controller [%04x:%04x] :: %s (currently NOT SUPPORTED)\n",
55current->vendor_id, current->device_id, devicepath);
56break;
57
58case PCI_VENDOR_ID_NVIDIA:
59setup_nvidia_devprop(current);
60break;
61}
62break;
63
64case PCI_CLASS_SERIAL_USB:
65notify_usb_dev(current);
66break;
67
68case PCI_CLASS_BRIDGE_ISA:
69if (do_enable_hpet)
70force_enable_hpet(current);
71break;
72}
73
74execute_hook("PCIDevice", current, NULL, NULL, NULL);
75
76setup_pci_devs(current->children);
77current = current->next;
78}
79}
80

Archive Download this file

Revision: 972