mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-08 12:56:48 +00:00
Remove unused device.rs
file in mmio
This commit is contained in:
parent
d6e40933b8
commit
1130933546
@ -1,86 +0,0 @@
|
||||
// SPDX-License-Identifier: MPL-2.0
|
||||
|
||||
//! MMIO device common definitions or functions.
|
||||
|
||||
use int_to_c_enum::TryFromInt;
|
||||
use log::info;
|
||||
|
||||
use super::VIRTIO_MMIO_MAGIC;
|
||||
use crate::{
|
||||
device::io_mem::IoMem,
|
||||
mm::{paddr_to_vaddr, Paddr, VmIo},
|
||||
trap::IrqLine,
|
||||
};
|
||||
|
||||
/// MMIO Common device.
|
||||
/// TODO: Implement universal access to MMIO devices since we are temporarily
|
||||
/// using specific virtio device as implementation of CommonDevice.
|
||||
#[derive(Debug)]
|
||||
pub struct MmioCommonDevice {
|
||||
io_mem: IoMem,
|
||||
irq: IrqLine,
|
||||
}
|
||||
|
||||
impl MmioCommonDevice {
|
||||
pub(super) fn new(paddr: Paddr, handle: IrqLine) -> Self {
|
||||
// Read magic value
|
||||
// SAFETY: It only read the value and judge if the magic value fit 0x74726976
|
||||
unsafe {
|
||||
debug_assert_eq!(*(paddr_to_vaddr(paddr) as *const u32), VIRTIO_MMIO_MAGIC);
|
||||
}
|
||||
// SAFETY: This range is virtio-mmio device space.
|
||||
let io_mem = unsafe { IoMem::new(paddr..paddr + 0x200) };
|
||||
let res = Self {
|
||||
io_mem,
|
||||
irq: handle,
|
||||
};
|
||||
info!(
|
||||
"[Virtio]: Found Virtio mmio device, device id:{:?}, irq number:{:?}",
|
||||
res.device_id(),
|
||||
res.irq.num()
|
||||
);
|
||||
res
|
||||
}
|
||||
|
||||
/// Base address
|
||||
pub fn address(&self) -> Paddr {
|
||||
self.io_mem.paddr()
|
||||
}
|
||||
|
||||
/// Grants access to the MMIO
|
||||
pub fn io_mem(&self) -> &IoMem {
|
||||
&self.io_mem
|
||||
}
|
||||
|
||||
/// Device ID
|
||||
pub fn device_id(&self) -> u32 {
|
||||
self.io_mem.read_val::<u32>(8).unwrap()
|
||||
}
|
||||
|
||||
/// Version of the MMIO device.
|
||||
///
|
||||
/// FIXME: This function can only used in Virtio-mmio devices.
|
||||
pub fn version(&self) -> VirtioMmioVersion {
|
||||
VirtioMmioVersion::try_from(self.io_mem.read_val::<u32>(4).unwrap()).unwrap()
|
||||
}
|
||||
|
||||
/// Interrupt line
|
||||
pub fn irq(&self) -> &IrqLine {
|
||||
&self.irq
|
||||
}
|
||||
|
||||
/// Mutable Interrupt line
|
||||
pub fn irq_mut(&mut self) -> &mut IrqLine {
|
||||
&mut self.irq
|
||||
}
|
||||
}
|
||||
|
||||
/// Virtio MMIO version
|
||||
#[derive(Debug, Clone, Copy, TryFromInt, PartialEq, Eq, PartialOrd, Ord)]
|
||||
#[repr(u32)]
|
||||
pub enum VirtioMmioVersion {
|
||||
/// Legacy
|
||||
Legacy = 1,
|
||||
/// Modern
|
||||
Modern = 2,
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user