svd-generator 0.4.1

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

/// Creates StarFive JH7110 Crypto CRYPTO registers.
pub fn create() -> Result<svd::RegisterCluster> {
    Ok(svd::RegisterCluster::Cluster(create_cluster(
        "crypto",
        "JH7110 Crypto CRYPTO registers",
        0x400,
        &[
            svd::RegisterCluster::Register(create_register(
                "cacr",
                "JH7110 Crypto CA Control Register",
                0x0,
                create_register_properties(32, 0)?,
                Some(&[
                    create_field(
                        "start",
                        "Crypto Start",
                        create_bit_range("[0:0]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "reset",
                        "Crypto Reset",
                        create_bit_range("[1:1]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "ie",
                        "Crypto Interrupt Enable",
                        create_bit_range("[2:2]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "fifo_mode",
                        "Crypto FIFO Mode",
                        create_bit_range("[4:4]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "not_r2",
                        "Crypto Not R2",
                        create_bit_range("[5:5]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "ecc_sub",
                        "Crypto ECC Sub",
                        create_bit_range("[6:6]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "pre_expf",
                        "Crypto Pre EXPF",
                        create_bit_range("[7:7]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "cmd",
                        "Crypto Command - 0: PRE (R^2 mod N and N0'), 1: AAN ((A + A) mod N, ==> A), 2: AMEN (A ^ E mod N ==> A), 3: AAEN (A + E mod N ==> A), 4: ADEN (A - E mod N ==> A), 5: ARN (A * $ mod N ==> A), 6: AERN (A * E * R mod N ==> A), 7: AARN (A * A * R mod N ==> A), 8: ECC2P (ECC2P ==> A), 9: ECCPQ (ECCPQ ==> A)",
                        create_bit_range("[11:8]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "ctrl_dummy",
                        "Crypto Control Dummy",
                        create_bit_range("[13:13]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "ctrl_false",
                        "Crypto Control False",
                        create_bit_range("[14:14]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "cln_done",
                        "Crypto CLN Done",
                        create_bit_range("[15:15]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "opsize",
                        "Crypto OPSIZE",
                        create_bit_range("[21:16]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "exposize",
                        "Crypto EXPOSIZE",
                        create_bit_range("[29:24]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                    create_field(
                        "bigendian",
                        "Crypto Big Endian",
                        create_bit_range("[31:31]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                ]),
                None,
            )?),
            svd::RegisterCluster::Register(create_register(
                "casr",
                "JH7110 Crypto CA Status Register",
                0x4,
                create_register_properties(32, 0)?,
                Some(&[
                    create_field(
                        "done",
                        "Crypto Done",
                        create_bit_range("[0:0]")?,
                        svd::Access::ReadOnly,
                        None,
                    )?,
                ]),
                None,
            )?),
            svd::RegisterCluster::Register(create_register(
                "caar",
                "JH7110 Crypto CAAR",
                0x8,
                create_register_properties(32, 0)?,
                Some(&[
                    create_field(
                        "caar",
                        "Crypto CAAR",
                        create_bit_range("[31:0]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                ]),
                None,
            )?),
            svd::RegisterCluster::Register(create_register(
                "caer",
                "JH7110 Crypto CAER",
                0x108,
                create_register_properties(32, 0)?,
                Some(&[
                    create_field(
                        "caer",
                        "Crypto CAER",
                        create_bit_range("[31:0]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                ]),
                None,
            )?),
            svd::RegisterCluster::Register(create_register(
                "canr",
                "JH7110 Crypto CANR",
                0x208,
                create_register_properties(32, 0)?,
                Some(&[
                    create_field(
                        "canr",
                        "Crypto CANR",
                        create_bit_range("[31:0]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                ]),
                None,
            )?),
            svd::RegisterCluster::Register(create_register(
                "caafr",
                "JH7110 Crypto CAAFR",
                0x308,
                create_register_properties(32, 0)?,
                Some(&[
                    create_field(
                        "caafr",
                        "Crypto CAAFR",
                        create_bit_range("[31:0]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                ]),
                None,
            )?),
            svd::RegisterCluster::Register(create_register(
                "caefr",
                "JH7110 Crypto CAEFR",
                0x30c,
                create_register_properties(32, 0)?,
                Some(&[
                    create_field(
                        "caefr",
                        "Crypto CAEFR",
                        create_bit_range("[31:0]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                ]),
                None,
            )?),
            svd::RegisterCluster::Register(create_register(
                "canfr",
                "JH7110 Crypto CANFR",
                0x310,
                create_register_properties(32, 0)?,
                Some(&[
                    create_field(
                        "canfr",
                        "Crypto CANFR",
                        create_bit_range("[31:0]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                ]),
                None,
            )?),
            svd::RegisterCluster::Register(create_register(
                "fifo_counter",
                "JH7110 Crypto FIFO Counter",
                0x314,
                create_register_properties(32, 0)?,
                Some(&[
                    create_field(
                        "fifo_counter",
                        "Crypto FIFO Counter",
                        create_bit_range("[31:0]")?,
                        svd::Access::ReadWrite,
                        None,
                    )?,
                ]),
                None,
            )?),
        ],
        None,
    )?))
}