diff options
Diffstat (limited to 'drivers/ccm-11xx/src/ral_11xx/clock_root.rs')
| -rw-r--r-- | drivers/ccm-11xx/src/ral_11xx/clock_root.rs | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/drivers/ccm-11xx/src/ral_11xx/clock_root.rs b/drivers/ccm-11xx/src/ral_11xx/clock_root.rs new file mode 100644 index 0000000..68c2f93 --- /dev/null +++ b/drivers/ccm-11xx/src/ral_11xx/clock_root.rs @@ -0,0 +1,106 @@ +#[repr(C)] +#[allow(non_snake_case)] +pub struct RegisterBlock { + pub CONTROL: u32, + pub CONTROL_SET: u32, + pub CONTROL_CLR: u32, + pub CONTROL_TOG: u32, + _reserved0: [u8; 16], + pub STATUS0: u32, + pub STATUS1: u32, + _reserved1: [u8; 4], + pub CONFIG: u32, + pub AUTHEN: u32, + pub AUTHEN_SET: u32, + pub AUTHEN_CLR: u32, + pub AUTHEN_TOG: u32, + pub SETPOINT: [u32; 16], +} + +ral_registers::register! { + #[doc = "Clock root control"] + pub CONTROL<u32> RW [ + #[doc = "Clock divider"] + DIV start(0) width(8) RW {} + #[doc = "Clock multiplexer"] + MUX start(8) width(3) RW {} + #[doc = "OFF"] + OFF start(24) width(1) RW {} + ] +} + +pub use CONTROL as CONTROL_SET; +pub use CONTROL as CONTROL_CLR; +pub use CONTROL as CONTROL_TOG; + +#[allow(non_snake_case)] +pub mod STATUS0 { + pub use super::CONTROL::{DIV, MUX, OFF}; + pub use crate::STATUS0_RO::*; +} + +ral_registers::register! { + #[doc = "Clock root low power status"] + pub STATUS1<u32> RO [ + #[doc = "Target Setpoint"] + TARGET_SETPOINT start(16) width(4) RO {} + #[doc = "Current Setpoint"] + CURRENT_SETPOINT start(20) width(4) RO {} + #[doc = "Clock frequency decrease request"] + DOWN_REQUEST start(24) width(1) RO {} + #[doc = "Clock frequency decrease finish"] + DOWN_DONE start(25) width(1) RO {} + #[doc = "Clock frequency increase request"] + UP_REQUEST start(26) width(1) RO {} + #[doc = "Clock frequency increase finish"] + UP_DONE start(27) width(1) RO {} + ] +} + +ral_registers::register! { + #[doc = "Clock root configuration"] + pub CONFIG<u32> RO [ + #[doc = "Setpoint present"] + SETPOINT_PRESENT start(4) width(1) RO {} + ] +} + +ral_registers::register! { + #[doc = "Clock root access control"] + pub AUTHEN<u32> RW [ + #[doc = "User access"] + TZ_USER start(0) width(1) RW {} + #[doc = "Non-secure access"] + TZ_NS start(1) width(1) RW {} + #[doc = "Lock truszone setting"] + LOCK_TZ start(4) width(1) RW {} + #[doc = "Whitelist"] + WHITE_LIST start(8) width(4) RW {} + #[doc = "Lock Whitelist"] + LOCK_LIST start(12) width(1) RW {} + #[doc = "Low power and access control by domain"] + DOMAIN_MODE start(16) width(1) RW {} + #[doc = "Low power and access control by Setpoint"] + SETPOINT_MODE start(17) width(1) RW {} + #[doc = "Lock low power and access mode"] + LOCK_MODE start(20) width(1) RW {} + ] +} + +pub use AUTHEN as AUTHEN_SET; +pub use AUTHEN as AUTHEN_CLR; +pub use AUTHEN as AUTHEN_TOG; + +ral_registers::register! { + #[doc = "Setpoint setting"] + pub SETPOINT<u32> RW [ + #[doc = "Clock divider"] + DIV start(0) width(8) RW {} + #[doc = "Clock multiplexer"] + MUX start(8) width(3) RW {} + #[doc = "OFF"] + OFF start(24) width(1) RW {} + #[doc = "Grade"] + GRADE start(28) width(4) RW {} + ] +} |
