aboutsummaryrefslogtreecommitdiff
path: root/drivers/ccm-11xx/src/ral_11xx/clock_root.rs
blob: 68c2f937a3c13a6b2a1419e67e761944d2caa6a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
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 {}
    ]
}