1 #include <console/console.h>
2 #include <device/device.h>
3 #include <device/pci.h>
4 #include <device/pci_ids.h>
7 void i82801dbm_enable(device_t dev)
11 uint16_t reg_old, reg;
13 // all 82801dbm device ares in bus 0
15 devfn = PCI_DEVFN(0x1f, 0); // lpc
16 lpc_dev = dev_find_slot(0, devfn); // 0
21 if ((lpc_dev->vendor != PCI_VENDOR_ID_INTEL) ||
22 (lpc_dev->device != PCI_DEVICE_ID_INTEL_82801DBM_1F0)) {
24 id = pci_read_config32(lpc_dev, PCI_VENDOR_ID);
25 if (id != (PCI_VENDOR_ID_INTEL | (PCI_DEVICE_ID_INTEL_82801DBM_1F0 << 16))) {
31 index = (dev->path.u.pci.devfn & 7);
32 if((dev->path.u.pci.devfn & ~0x7)==devfn) { // D=0x1f
40 reg_old = pci_read_config16(lpc_dev, FUNC_DIS);
42 reg &= ~(1<<index); // enable it
44 reg |= (1<<index); // disable it
47 pci_write_config16(lpc_dev, FUNC_DIS, reg);
49 reg = pci_read_config16(lpc_dev, FUNC_DIS);
53 struct chip_operations southbridge_intel_i82801dbm_control = {
54 .name = "Intel 82801dbm Southbridge",
55 .enable_dev = i82801dbm_enable,