ref: c3589ef3cf33189d342a3ab638b558fd9249b220
parent: 51a351e84570e8ac4322ad202bfc57f648755019
author: cinap_lenrek <[email protected]>
date: Sat Jul 10 14:34:22 EDT 2021
kernel: export pcienumcaps() for custom capability enumeration in drivers (virtio) This used to be a internal function, but virtio uses multiple structures with the same cap type to indicate the location of various register blocks in the pci bars so export it.
--- a/sys/src/9/port/pci.c
+++ b/sys/src/9/port/pci.c
@@ -910,8 +910,8 @@
pcicfgw16(p, PciPCR, p->pcr);
}
-static int
-enumcaps(Pcidev *p, int (*fmatch)(Pcidev*, int, int, int), int arg)
+int
+pcienumcaps(Pcidev *p, int (*fmatch)(Pcidev*, int, int, int), int arg)
{
int i, r, cap, off;
@@ -971,13 +971,13 @@
int
pcicap(Pcidev *p, int cap)
{
- return enumcaps(p, matchcap, cap);
+ return pcienumcaps(p, matchcap, cap);
}
int
pcihtcap(Pcidev *p, int cap)
{
- return enumcaps(p, matchhtcap, cap);
+ return pcienumcaps(p, matchhtcap, cap);
}
static int
--- a/sys/src/9/port/pci.h
+++ b/sys/src/9/port/pci.h
@@ -254,6 +254,7 @@
extern int pcicap(Pcidev *p, int cap);
extern int pcihtcap(Pcidev *p, int cap);
+extern int pcienumcaps(Pcidev *p, int (*fmatch)(Pcidev*, int, int, int), int arg);
extern int pcimsienable(Pcidev *p, uvlong addr, ulong data);
extern int pcimsidisable(Pcidev *p);