diff options
Diffstat (limited to 'src/devices/pcix_device.c')
-rw-r--r-- | src/devices/pcix_device.c | 59 |
1 files changed, 31 insertions, 28 deletions
diff --git a/src/devices/pcix_device.c b/src/devices/pcix_device.c index 42babe79dd..22dd06e5bd 100644 --- a/src/devices/pcix_device.c +++ b/src/devices/pcix_device.c @@ -26,20 +26,21 @@ static void pcix_tune_dev(device_t dev) { - unsigned cap; - unsigned status, orig_cmd, cmd; - unsigned max_read, max_tran; + u32 status; + u16 orig_cmd, cmd; + unsigned int cap, max_read, max_tran; - if (dev->hdr_type != PCI_HEADER_TYPE_NORMAL) { + if (dev->hdr_type != PCI_HEADER_TYPE_NORMAL) return; - } + cap = pci_find_capability(dev, PCI_CAP_ID_PCIX); - if (!cap) { + if (!cap) return; - } + printk(BIOS_DEBUG, "%s PCI-X tuning\n", dev_path(dev)); + status = pci_read_config32(dev, cap + PCI_X_STATUS); - orig_cmd = cmd = pci_read_config16(dev,cap + PCI_X_CMD); + orig_cmd = cmd = pci_read_config16(dev, cap + PCI_X_CMD); max_read = (status & PCI_X_STATUS_MAX_READ) >> 21; max_tran = (status & PCI_X_STATUS_MAX_SPLIT) >> 23; @@ -51,23 +52,26 @@ static void pcix_tune_dev(device_t dev) cmd &= ~PCI_X_CMD_MAX_SPLIT; cmd |= max_tran << 4; } - /* Don't attempt to handle PCI-X errors */ + + /* Don't attempt to handle PCI-X errors. */ cmd &= ~PCI_X_CMD_DPERR_E; - /* Enable Relaxed Ordering */ + + /* Enable Relaxed Ordering. */ cmd |= PCI_X_CMD_ERO; - if (orig_cmd != cmd) { + + if (orig_cmd != cmd) pci_write_config16(dev, cap + PCI_X_CMD, cmd); - } } static void pcix_tune_bus(struct bus *bus) { device_t child; - for(child = bus->children; child; child = child->sibling) + + for (child = bus->children; child; child = child->sibling) pcix_tune_dev(child); } -const char *pcix_speed(unsigned sstatus) +const char *pcix_speed(u16 sstatus) { static const char conventional[] = "Conventional PCI"; static const char pcix_66mhz[] = "66MHz PCI-X"; @@ -76,10 +80,11 @@ const char *pcix_speed(unsigned sstatus) static const char pcix_266mhz[] = "266MHz PCI-X"; static const char pcix_533mhz[] = "533MHZ PCI-X"; static const char unknown[] = "Unknown"; - const char *result; + result = unknown; - switch(PCI_X_SSTATUS_MFREQ(sstatus)) { + + switch (PCI_X_SSTATUS_MFREQ(sstatus)) { case PCI_X_SSTATUS_CONVENTIONAL_PCI: result = conventional; break; @@ -89,17 +94,14 @@ const char *pcix_speed(unsigned sstatus) case PCI_X_SSTATUS_MODE1_100MHZ: result = pcix_100mhz; break; - case PCI_X_SSTATUS_MODE1_133MHZ: result = pcix_133mhz; break; - case PCI_X_SSTATUS_MODE2_266MHZ_REF_66MHZ: case PCI_X_SSTATUS_MODE2_266MHZ_REF_100MHZ: case PCI_X_SSTATUS_MODE2_266MHZ_REF_133MHZ: result = pcix_266mhz; break; - case PCI_X_SSTATUS_MODE2_533MHZ_REF_66MHZ: case PCI_X_SSTATUS_MODE2_533MHZ_REF_100MHZ: case PCI_X_SSTATUS_MODE2_533MHZ_REF_133MHZ: @@ -111,20 +113,21 @@ const char *pcix_speed(unsigned sstatus) unsigned int pcix_scan_bridge(device_t dev, unsigned int max) { - unsigned pos; - unsigned sstatus; + unsigned int pos; + u16 sstatus; max = do_pci_scan_bridge(dev, max, pci_scan_bus); - /* Find the PCI-X capability */ + + /* Find the PCI-X capability. */ pos = pci_find_capability(dev, PCI_CAP_ID_PCIX); sstatus = pci_read_config16(dev, pos + PCI_X_SEC_STATUS); - if (PCI_X_SSTATUS_MFREQ(sstatus) != PCI_X_SSTATUS_CONVENTIONAL_PCI) { + if (PCI_X_SSTATUS_MFREQ(sstatus) != PCI_X_SSTATUS_CONVENTIONAL_PCI) pcix_tune_bus(dev->link_list); - } - /* Print the PCI-X bus speed */ - printk(BIOS_DEBUG, "PCI: %02x: %s\n", dev->link_list->secondary, pcix_speed(sstatus)); + /* Print the PCI-X bus speed. */ + printk(BIOS_DEBUG, "PCI: %02x: %s\n", dev->link_list->secondary, + pcix_speed(sstatus)); return max; } @@ -138,8 +141,8 @@ struct device_operations default_pcix_ops_bus = { .read_resources = pci_bus_read_resources, .set_resources = pci_dev_set_resources, .enable_resources = pci_bus_enable_resources, - .init = 0, - .scan_bus = pcix_scan_bridge, + .init = 0, + .scan_bus = pcix_scan_bridge, .enable = 0, .reset_bus = pci_bus_reset, .ops_pci = &pcix_bus_ops_pci, |