pci: Add function to get PCIe max read request size
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Wed, 10 Aug 2011 09:47:05 +0000 (17:47 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Wed, 10 Aug 2011 09:52:09 +0000 (17:52 +0800)
sys/bus/pci/pci.c
sys/bus/pci/pcivar.h

index 64d36b1..d8ed302 100644 (file)
@@ -948,6 +948,20 @@ pcie_set_max_readrq(device_t dev, uint16_t rqsize)
        }
 }
 
+uint16_t
+pcie_get_max_readrq(device_t dev)
+{
+       uint8_t expr_ptr;
+       uint16_t val;
+
+       expr_ptr = pci_get_pciecap_ptr(dev);
+       if (!expr_ptr)
+               panic("%s: not PCIe device\n", device_get_nameunit(dev));
+
+       val = pci_read_config(dev, expr_ptr + PCIER_DEVCTRL, 2);
+       return (val & PCIEM_DEVCTL_MAX_READRQ_MASK);
+}
+
 static void
 pci_read_vpd(device_t pcib, pcicfgregs *cfg)
 {
index 73711f1..918fcf6 100644 (file)
@@ -410,6 +410,7 @@ pci_is_vga_memory_range(u_long start, u_long end)
 
 int pcie_slot_implemented(device_t);
 void pcie_set_max_readrq(device_t, uint16_t);
+uint16_t pcie_get_max_readrq(device_t);
 
 /*
  * PCI power states are as defined by ACPI: