35#ifndef __PCIB_PRIVATE_H__
36#define __PCIB_PRIVATE_H__
38#include <sys/taskqueue.h>
46struct pcib_host_resources {
48 struct resource_list hr_rl;
51int pcib_host_res_init(device_t
pcib,
52 struct pcib_host_resources *hr);
53int pcib_host_res_free(device_t
pcib,
54 struct pcib_host_resources *hr);
55int pcib_host_res_decodes(
struct pcib_host_resources *hr,
int type,
56 rman_res_t
start, rman_res_t end, u_int flags);
57struct resource *pcib_host_res_alloc(
struct pcib_host_resources *hr,
59 rman_res_t end, rman_res_t
count, u_int flags);
60int pcib_host_res_adjust(
struct pcib_host_resources *hr,
61 device_t
dev,
int type,
struct resource *r, rman_res_t
start,
80 struct resource **res;
93#if defined(NEW_PCIB) && defined(PCI_RES_BUS)
110#define PCIB_SUBTRACTIVE 0x1
111#define PCIB_DISABLE_MSI 0x2
112#define PCIB_DISABLE_MSIX 0x4
113#define PCIB_ENABLE_ARI 0x8
114#define PCIB_HOTPLUG 0x10
115#define PCIB_HOTPLUG_CMD_PENDING 0x20
116#define PCIB_DETACH_PENDING 0x40
117#define PCIB_DETACHING 0x80
122 struct pcib_window io;
123 struct pcib_window mem;
124 struct pcib_window pmem;
146#define PCIB_HP_LOCK(sc) mtx_lock((sc)->pcie_hp_lock)
147#define PCIB_HP_UNLOCK(sc) mtx_unlock((sc)->pcie_hp_lock)
148#define PCIB_HP_LOCK_ASSERT(sc) mtx_assert((sc)->pcie_hp_lock, MA_OWNED)
150#define PCIB_SUPPORTED_ARI_VER 1
155 int slot,
int func, uint8_t *busnum);
156#if defined(NEW_PCIB) && defined(PCI_RES_BUS)
157struct resource *pci_domain_alloc_bus(
int domain, device_t
dev,
int *
rid,
158 rman_res_t
start, rman_res_t end, rman_res_t
count, u_int flags);
159int pci_domain_adjust_bus(
int domain, device_t
dev,
160 struct resource *r, rman_res_t
start, rman_res_t end);
161int pci_domain_release_bus(
int domain, device_t
dev,
int rid,
164 int *
rid, rman_res_t
start, rman_res_t end, rman_res_t
count,
175const char *pcib_child_name(device_t
child);
182 rman_res_t
start, rman_res_t end,
183 rman_res_t
count, u_int flags);
185int pcib_adjust_resource(device_t
bus, device_t
child,
int type,
186 struct resource *r, rman_res_t
start, rman_res_t end);
187int pcib_release_resource(device_t
dev, device_t
child,
int type,
int rid,
METHOD u_int32_t read_config
int host_pcib_get_busno(pci_read_config_fn read_config, int bus, int slot, int func, uint8_t *busnum)
int pcib_maxslots(device_t dev)
void pcib_bridge_init(device_t dev)
void pcib_attach_common(device_t dev)
int pcib_child_present(device_t dev, device_t child)
int pcib_attach(device_t dev)
uint32_t pci_read_config_fn(int b, int s, int f, int reg, int width)
DECLARE_CLASS(pcib_driver)
int pcib_alloc_msix(device_t pcib, device_t dev, int *irq)
int pcib_release_msix(device_t pcib, device_t dev, int irq)
int pcib_alloc_msi(device_t pcib, device_t dev, int count, int maxcount, int *irqs)
int pcib_release_msi(device_t pcib, device_t dev, int count, int *irqs)
struct resource * pcib_alloc_resource(device_t dev, device_t child, int type, int *rid, rman_res_t start, rman_res_t end, rman_res_t count, u_int flags)
int pcib_route_interrupt(device_t pcib, device_t dev, int pin)
int pcib_request_feature_allow(device_t pcib, device_t dev, enum pci_feature feature)
void pcib_decode_rid(device_t pcib, uint16_t rid, int *bus, int *slot, int *func)
int pcib_write_ivar(device_t dev, device_t child, int which, uintptr_t value)
int pcib_maxfuncs(device_t dev)
int pcib_attach_child(device_t dev)
int pcib_map_msi(device_t pcib, device_t dev, int irq, uint64_t *addr, uint32_t *data)
int pcib_read_ivar(device_t dev, device_t child, int which, uintptr_t *result)
int pcib_get_id(device_t pcib, device_t dev, enum pci_id_type type, uintptr_t *id)
int pcib_request_feature(device_t dev, enum pci_feature feature)
int pcib_detach(device_t dev)
struct timeout_task pcie_dll_task
struct resource * pcie_irq
struct mtx * pcie_hp_lock
struct timeout_task pcie_cc_task
struct timeout_task pcie_ab_task