svd-generator 0.2.0

Converts device information from flattened device tree into an SVD description
Documentation
use crate::svd::register::{create_cluster, jh7110};
use crate::Result;

/// Creates a StarFive JH7110 SYSCRG Clock I2C APB register.
pub fn create() -> Result<svd::RegisterCluster> {
    Ok(svd::RegisterCluster::Cluster(create_cluster(
        "clk_uart",
        "Clock UART",
        0x244,
        &[
            svd::RegisterCluster::Cluster(create_cluster(
                "uart02",
                "Clock UART U0-U2",
                0x0,
                &[
                    jh7110::create_register_icg("apb", "Clock UART APB", 0x0, None, None)?,
                    jh7110::create_register_icg("core", "Clock UART Core", 0x4, None, None)?,
                ],
                Some(
                    svd::DimElement::builder()
                        .dim(3)
                        .dim_increment(0x8)
                        .dim_index(Some(
                            [
                                String::from("_u0"),
                                String::from("_u1"),
                                String::from("_u2"),
                            ]
                            .into(),
                        ))
                        .build(svd::ValidateLevel::Strict)?,
                ),
            )?),
            svd::RegisterCluster::Cluster(create_cluster(
                "uart35",
                "Clock UART U3-U5",
                0x18,
                &[
                    jh7110::create_register_icg("apb", "Clock UART APB", 0x0, None, None)?,
                    jh7110::create_register_icg_divcfg(
                        "core",
                        "Clock UART Core",
                        0x4,
                        [131_071, 2_560, 2_560, 2_560],
                        None,
                        None,
                    )?,
                ],
                Some(
                    svd::DimElement::builder()
                        .dim(3)
                        .dim_increment(0x8)
                        .dim_index(Some(
                            [
                                String::from("_u3"),
                                String::from("_u4"),
                                String::from("_u5"),
                            ]
                            .into(),
                        ))
                        .build(svd::ValidateLevel::Strict)?,
                ),
            )?),
        ],
        None,
    )?))
}