diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-07-10 18:34:22 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-07-10 18:34:22 +0000 |
commit | c3589ef3cf33189d342a3ab638b558fd9249b220 (patch) | |
tree | 3d4f0ae5edc4f6405cb8c42a2813ef545e2ad307 /sys/src | |
parent | 51a351e84570e8ac4322ad202bfc57f648755019 (diff) |
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.
Diffstat (limited to 'sys/src')
-rw-r--r-- | sys/src/9/port/pci.c | 8 | ||||
-rw-r--r-- | sys/src/9/port/pci.h | 1 |
2 files changed, 5 insertions, 4 deletions
diff --git a/sys/src/9/port/pci.c b/sys/src/9/port/pci.c index af4144533..7bfd60179 100644 --- a/sys/src/9/port/pci.c +++ b/sys/src/9/port/pci.c @@ -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 diff --git a/sys/src/9/port/pci.h b/sys/src/9/port/pci.h index 7d4acb2f8..1e9eac508 100644 --- a/sys/src/9/port/pci.h +++ b/sys/src/9/port/pci.h @@ -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); |