use crate::device::{self, Pause};
use crate::pci;
use crate::pci::cap::PciCapList;
use crate::pci::config::{CommonHeader, DeviceHeader, EmulatedConfig, HeaderType, PciConfig};
use crate::pci::{Pci, PciBar};
#[derive(Debug)]
pub struct HostBridge {
pub config: EmulatedConfig,
}
impl Default for HostBridge {
fn default() -> Self {
Self::new()
}
}
impl HostBridge {
pub fn new() -> Self {
let header = DeviceHeader {
common: CommonHeader {
vendor: 0x1022,
device: 0x1480,
class: 0x06,
subclass: 0x00,
header_type: HeaderType::DEVICE,
..Default::default()
},
..Default::default()
};
let bars = [const { PciBar::Empty }; 6];
let config = EmulatedConfig::new_device(header, bars, PciCapList::new());
HostBridge { config }
}
}
impl Pause for HostBridge {
fn pause(&self) -> device::Result<()> {
Ok(())
}
fn resume(&self) -> device::Result<()> {
Ok(())
}
}
impl Pci for HostBridge {
fn name(&self) -> &str {
"host_bridge"
}
fn config(&self) -> &dyn PciConfig {
&self.config
}
fn reset(&self) -> pci::Result<()> {
Ok(())
}
}
#[cfg(test)]
#[path = "host_bridge_test.rs"]
mod tests;