class BusDeviceInterface
Defined at line 24 of file ../../src/devices/pci/drivers/pci/bus_device_interface.h
This interface allows for bridges/devices to communicate with the top level
Bus object to add and remove themselves from the device list of their
particular bus instance, obtain their BTIs, and make MSI allocations. This
becomes more important as multiple bus instances with differing segment
groups become a reality.
Public Methods
zx_status_t GetBti (const pci::Device *device,uint32_tindex,zx::bti *bti)
Get the BTI at |index| for a device.
uint16_t GetSegmentGroup ()
zx_status_t AllocateMsi (uint32_tcount,zx::msi *msi,msi_allocation_info_t *out_info)
Allocate |count| messagge signaled interrupts for a device.
zx_status_t GetMsiHandle (const zx::msi &allocation,uint32_toptions,uint16_tmsi_id,const zx::vmo &cfg_vmo,uint64_tcfg_offset,zx::interrupt *out_interrupt)
zx_status_t LinkDevice (fbl::RefPtr<pci::Device> device)
Add device to the Bus device tree.
zx_status_t UnlinkDevice (pci::Device * device)
Remove a device from the Bus device tree.
zx_status_t AddToSharedIrqList (pci::Device *device,uint32_tvector,zx::unowned_interruptirq_handle)
Shared IRQ handler list management for a device's legacy IRQ vector.
Note on lock hierarchy: Called while holding Device::dev_lock_; implementations
acquire Bus::devices_lock_. Note that Bus::HandleLegacyIrq acquires devices_lock_
before dev_lock_; concurrent deadlock is prevented because both operations execute
on the driver's synchronized dispatcher.
zx_status_t RemoveFromSharedIrqList (pci::Device * device, uint32_t vector)
void ~BusDeviceInterface ()
Defined at line 26 of file ../../src/devices/pci/drivers/pci/bus_device_interface.h