svd-generator 0.4.2

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

/// Creates a Synopsys DesignWare Ethernet MAC Control register definition.
pub fn create() -> Result<svd::RegisterCluster> {
    Ok(svd::RegisterCluster::Register(create_register(
        "control",
        "Control",
        0x0,
        create_register_properties(32, 0)?,
        Some(&[
            create_field(
                "re",
                "Receiver Enable",
                create_bit_range("[2:2]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "te",
                "Transmitter Enable",
                create_bit_range("[3:3]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "dc",
                "Deferral Check",
                create_bit_range("[5:5]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field_enum(
                "bolmt",
                "Back Off Limit",
                create_bit_range("[7:6]")?,
                svd::Access::ReadWrite,
                &[create_enum_values(&[
                    create_enum_value("bolmt10", "Back Off Limit 10", 0b00)?,
                    create_enum_value("bolmt8", "Back Off Limit 8", 0b01)?,
                    create_enum_value("bolmt4", "Back Off Limit 4", 0b10)?,
                    create_enum_value("bolmt1", "Back Off Limit 1", 0b11)?,
                ])?],
                None,
            )?,
            create_field(
                "astp",
                "Automatic Pad Stripping",
                create_bit_range("[8:8]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "drty",
                "Disable Retry",
                create_bit_range("[10:10]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "dbf",
                "Disable Broadcast Frames",
                create_bit_range("[11:11]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "lcc",
                "Late Collision Control",
                create_bit_range("[12:12]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "hp",
                "Hash/Perfect Filtering Mode",
                create_bit_range("[13:13]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "ho",
                "Hash Only Filtering Mode",
                create_bit_range("[15:15]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "pb",
                "Pass Bad Frames",
                create_bit_range("[16:16]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "if",
                "Inverse Filtering",
                create_bit_range("[17:17]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "pr",
                "Promiscuous Mode",
                create_bit_range("[18:18]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "pm",
                "Pass All Multicast",
                create_bit_range("[19:19]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "f",
                "Full Duplex Mode",
                create_bit_range("[20:20]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "om",
                "Loopback Operating Mode",
                create_bit_range("[21:21]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "ext_loopback",
                "Extended Loopback Operating Mode",
                create_bit_range("[22:22]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "dro",
                "Disable Receive Own",
                create_bit_range("[23:23]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "ps",
                "Port Select",
                create_bit_range("[27:27]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "hbd",
                "Heartbeat Disable",
                create_bit_range("[28:28]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "ble",
                "Big/Little Endian Mode",
                create_bit_range("[30:30]")?,
                svd::Access::ReadWrite,
                None,
            )?,
            create_field(
                "ra",
                "Receive All Mode",
                create_bit_range("[31:31]")?,
                svd::Access::ReadWrite,
                None,
            )?,
        ]),
        None,
    )?))
}