]> git.lizzy.rs Git - plan9front.git/commitdiff
kernel: export pcienumcaps() for custom capability enumeration in drivers (virtio)
authorcinap_lenrek <cinap_lenrek@felloff.net>
Sat, 10 Jul 2021 18:34:22 +0000 (18:34 +0000)
committercinap_lenrek <cinap_lenrek@felloff.net>
Sat, 10 Jul 2021 18:34:22 +0000 (18:34 +0000)
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.

sys/src/9/port/pci.c
sys/src/9/port/pci.h

index af4144533062adba486e52142a364d4b81d9bc26..7bfd60179bb0ba33d853692147b7941651983616 100644 (file)
@@ -910,8 +910,8 @@ pciclrmwi(Pcidev* p)
        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 @@ matchhtcap(Pcidev *p, int cap, int off, int arg)
 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
index 7d4acb2f852d22535d036bb37be52d1635a22225..1e9eac5082aaafe26b3af40f02bf13348bbbac9b 100644 (file)
@@ -254,6 +254,7 @@ extern void pciclrmwi(Pcidev* p);
 
 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);