diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2014-02-17 22:19:49 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2014-02-17 22:19:49 +0000 |
| commit | 050e7f09368c96dc9cdee81995fcb82e735211ce (patch) | |
| tree | f9d3924ebb846b11a1cc05883412913d274d6119 /sys/dev/pci/pci.c | |
| parent | d6823d65b670637515322777a8f1d201a50b067d (diff) | |
Notes
Diffstat (limited to 'sys/dev/pci/pci.c')
| -rw-r--r-- | sys/dev/pci/pci.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 6362193ed10a..bded23197749 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -995,7 +995,7 @@ pci_read_vpd(device_t pcib, pcicfgregs *cfg) state = -2; break; } - dflen = byte2; + cfg->vpd.vpd_ros[off].len = dflen = byte2; if (dflen == 0 && strncmp(cfg->vpd.vpd_ros[off].keyword, "RV", 2) == 0) { @@ -1196,6 +1196,17 @@ pci_get_vpd_readonly_method(device_t dev, device_t child, const char *kw, return (ENXIO); } +struct pcicfg_vpd * +pci_fetch_vpd_list(device_t dev) +{ + struct pci_devinfo *dinfo = device_get_ivars(dev); + pcicfgregs *cfg = &dinfo->cfg; + + if (!cfg->vpd.vpd_cached && cfg->vpd.vpd_reg != 0) + pci_read_vpd(device_get_parent(device_get_parent(dev)), cfg); + return (&cfg->vpd); +} + /* * Find the requested extended capability and return the offset in * configuration space via the pointer provided. The function returns |
