svd-generator 0.4.2

Converts device information from flattened device tree into an SVD description
Documentation
use crate::svd::{create_bit_range, create_field, create_register, create_register_properties};
use crate::Result;

/// Creates the RISC-V PLIC Pending register.
pub fn create(interrupts: usize) -> Result<svd::RegisterCluster> {
    let num_elem = interrupts.saturating_div(32) as u32 + (interrupts % 32 != 0) as u32;

    Ok(svd::RegisterCluster::Register(create_register(
        "pending",
        "RISC-V PLIC Pending: 32-bit register indicating if there is a pending interrupt. The bit index indicates the interrupt source, e.g. pending[0][31] is interrupt 31, pending[1][0] is interrupt 32",
        0x1000,
        create_register_properties(32, 0)?,
        Some(&[create_field(
                "pending",
                "",
                create_bit_range("[31:0]")?,
                svd::Access::ReadWrite,
                None,
            )?,
        ]),
        Some(svd::DimElement::builder()
            .dim(num_elem)
            .dim_increment(4)
            .build(svd::ValidateLevel::Strict)?),
    )?))
}