2 * (C) 2003 Linux Networx
4 #include <console/console.h>
5 #include <device/device.h>
6 #include <device/pci.h>
7 #include <device/pci_ids.h>
8 #include <device/pci_ops.h>
10 static void pcix_init(device_t dev)
15 /* Enable memory write and invalidate ??? */
16 byte = pci_read_config8(dev, 0x04);
18 pci_write_config8(dev, 0x04, byte);
20 /* Set drive strength */
21 word = pci_read_config16(dev, 0xe0);
23 pci_write_config16(dev, 0xe0, word);
24 word = pci_read_config16(dev, 0xe4);
26 pci_write_config16(dev, 0xe4, word);
29 word = pci_read_config16(dev, 0xe8);
31 pci_write_config16(dev, 0xe8, word);
36 static struct device_operations pcix_ops = {
37 .read_resources = pci_bus_read_resources,
38 .set_resources = pci_dev_set_resources,
40 .scan_bus = pci_scan_bridge,
43 static struct pci_driver pcix_driver __pci_driver = {
45 .vendor = PCI_VENDOR_ID_AMD,
50 static void ioapic_enable(device_t dev)
53 value = pci_read_config32(dev, 0x44);
55 value |= ((1 << 1) | (1 << 0));
57 value &= ~((1 << 1) | (1 << 0));
59 pci_write_config32(dev, 0x44, value);
62 value = pci_read_config32(dev, 0x4);
64 pci_write_config32(dev, 0x4, value);
70 static struct device_operations ioapic_ops = {
71 .read_resources = pci_dev_read_resources,
72 .set_resources = pci_dev_set_resources,
75 .enable = ioapic_enable,
78 static struct pci_driver ioapic_driver __pci_driver = {
80 .vendor = PCI_VENDOR_ID_AMD,