+ exca = get_conf_word(d, PCI_CB_LEGACY_MODE_BASE);
+ if (exca)
+ printf("\t16-bit legacy interface ports at %04x\n", exca);
+ show_caps(d, PCI_CB_CAPABILITY_LIST);
+}
+
+static void
+show_htype_unknown(struct device *d)
+{
+ struct pci_dev *p = d->dev;
+ u64 base, limit, flags;
+ const char *str;
+ int i, bits;
+
+ if (pacc->buscentric)
+ return;
+
+ show_bases(d, 6, 1);
+ for (i = 0; i < 4; i++)
+ {
+ if (!p->bridge_base_addr[i])
+ continue;
+ base = p->bridge_base_addr[i];
+ limit = base + p->bridge_size[i] - 1;
+ flags = p->bridge_flags[i];
+ if (flags & PCI_IORESOURCE_IO)
+ {
+ bits = (flags & PCI_IORESOURCE_IO_16BIT_ADDR) ? 16 : 32;
+ str = "\tI/O behind bridge";
+ }
+ else if (flags & PCI_IORESOURCE_MEM)
+ {
+ bits = (flags & PCI_IORESOURCE_MEM_64) ? 64 : 32;
+ if (flags & PCI_IORESOURCE_PREFETCH)
+ str = "\tPrefetchable memory behind bridge";
+ else
+ str = "\tMemory behind bridge";
+ }
+ else
+ {
+ bits = 0;
+ str = "\tUnknown resource behind bridge";
+ }
+ show_range(str, base, limit, bits, 0);
+ }
+ show_rom(d, -1);
+}
+
+static void
+show_verbose(struct device *d)
+{
+ struct pci_dev *p = d->dev;
+ int unknown_config_data = 0;
+ word class = p->device_class;
+ byte htype = d->no_config_access ? -1 : (get_conf_byte(d, PCI_HEADER_TYPE) & 0x7f);
+ byte bist;
+ byte max_lat, min_gnt;
+ char *dt_node, *iommu_group;
+
+ show_terse(d);
+
+ pci_fill_info(p, PCI_FILL_IRQ | PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES |
+ PCI_FILL_PHYS_SLOT | PCI_FILL_NUMA_NODE | PCI_FILL_DT_NODE | PCI_FILL_IOMMU_GROUP |
+ PCI_FILL_BRIDGE_BASES | PCI_FILL_CLASS_EXT | PCI_FILL_SUBSYS);
+