From 9c64c3e69fa60b3657d33e829a411cb37064a169 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Sat, 17 May 2025 21:54:24 -0400 Subject: kernel: pci: Add pci_add_device() Signed-off-by: Ian Moffett --- sys/dev/pci/pci.c | 11 +++++++++++ sys/include/dev/pci/pci.h | 2 ++ 2 files changed, 13 insertions(+) (limited to 'sys') diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c index 8328ffc..d59f68f 100644 --- a/sys/dev/pci/pci.c +++ b/sys/dev/pci/pci.c @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -39,6 +40,7 @@ #define pr_trace(fmt, ...) kprintf("pci: " fmt, ##__VA_ARGS__) static TAILQ_HEAD(, pci_device) device_list; +static struct spinlock devlist_lock = {0}; static bool pci_dev_exists(uint8_t bus, uint8_t slot, uint8_t func) @@ -262,6 +264,15 @@ pci_get_device(struct pci_lookup lookup, uint16_t lookup_type) return NULL; } + +void +pci_add_device(struct pci_device *dev) +{ + spinlock_acquire(&devlist_lock); + TAILQ_INSERT_TAIL(&device_list, dev, link); + spinlock_release(&devlist_lock); +} + int pci_init(void) { diff --git a/sys/include/dev/pci/pci.h b/sys/include/dev/pci/pci.h index 1d8b3a6..de6d8fb 100644 --- a/sys/include/dev/pci/pci.h +++ b/sys/include/dev/pci/pci.h @@ -85,6 +85,8 @@ int pci_map_bar(struct pci_device *dev, uint8_t barno, void **vap); void pci_writel(struct pci_device *dev, uint32_t offset, pcireg_t val); int pci_enable_msix(struct pci_device *dev, const struct msi_intr *intr); +void pci_add_device(struct pci_device *dev); + void pci_msix_eoi(void); int pci_init(void); -- cgit v1.2.3