#[repr(C)]pub struct DcfgArmSmmuDriver {
pub mmio_phys: u64,
pub num_context_banks_override: u32,
pub num_smr_override: u32,
pub irq_cnt: u32,
pub global_irq_cnt: u32,
pub irqs: [DcfgArmSmmuIrq; 128],
pub handoff_smr_cnt: u32,
pub handoff_smrs: [u32; 16],
}Fields§
§mmio_phys: u64Base physical address of the SMMU address space. This is also the start of Global Register Space 0 in the SMMU. The effective size of these registers will be determined at runtime from the ID registers present in this first page, specifically the number of context banks in IDR1.NUMCB.
See:
ARM System Memory Management Unit Architecture Specification SMMU architecture version 2.0 ARM IHI 0062D.c
for more details.
num_context_banks_override: u32The number of context banks that a driver should limit itself to using, or 0 if all discovered context banks are available for use.
num_smr_override: u32The number of stream match registers that a driver should limit itself to using, or 0 if all discovered SMRs are available for use.
irq_cnt: u32An array of context bank interrupt definitions discovered during device enumeration. |irq_cnt| reports the total number of valid members while |irqs|, while |global_irq_cnt| reports the total number of global interrupts in |irqs|, with the rest of the interrupts being context bank interrupts. So:
- IRQs [0, global_irq_cnt) are global interrupts
- IRQs [global_irq_cnt, irq_cnt) are context bank interrupts corresponding to context banks [0, irq_cnt - global_irq_cnt)
global_irq_cnt: u32§irqs: [DcfgArmSmmuIrq; 128]§handoff_smr_cnt: u32An array of stream IDs (defined using SMR value/mask encoding) which are being “handed off” from the bootloader to the HLOS. Downstream drivers should take care to preserve the existing configuration for these stream ids. |handoff_smr_cnt| reports the number of members of |handoff_smrs| which are valid.
Note: Stream ID ranges in SMRs are encoded using two 16 bit fields, a value field and a mask field. These two fields are packed into a single 32-bit integer, with the mask packed into the upper 16 bits, and the value packed into the lower 16 bits.
handoff_smrs: [u32; 16]Trait Implementations§
Source§impl Clone for DcfgArmSmmuDriver
impl Clone for DcfgArmSmmuDriver
Source§fn clone(&self) -> DcfgArmSmmuDriver
fn clone(&self) -> DcfgArmSmmuDriver
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more