rockchip_pm/variants/
_macros.rs

1#[macro_export(local_inner_macros)]
2macro_rules! map {
3    // 空 map
4    () => {
5        {
6            ::alloc::collections::BTreeMap::new()
7        }
8    };
9    // 支持多个键值对
10    ( $( $key:expr => $value:expr ),+ $(,)? ) => {{
11        let mut map = ::alloc::collections::BTreeMap::new();
12        $( map.insert($key.into(), $value); )*
13        map
14    }};
15}
16
17macro_rules! define_pd {
18    ($name:ident, $value:expr) => {
19        pub const $name: PD = PD($value);
20    };
21}
22
23macro_rules! bit {
24    ($n:expr) => {
25        (1 << $n)
26    };
27    () => {};
28}
29
30// Make sure RockchipDomainInfo is in scope
31use super::RockchipDomainInfo;
32
33#[allow(clippy::too_many_arguments)]
34pub fn domain_m_o_r(
35    name: &'static str,
36    pwr_offset: u32,
37    pwr: i32,
38    status: i32,
39    mem_offset: u32,
40    mem_status: i32,
41    repair_status: i32,
42    req_offset: u32,
43    req: i32,
44    idle: i32,
45    ack: i32,
46    wakeup: bool,
47    keepon: bool,
48) -> RockchipDomainInfo {
49    RockchipDomainInfo {
50        name,
51        pwr_offset,
52        pwr_w_mask: (pwr << 16),
53        pwr_mask: pwr,
54        status_mask: status,
55        mem_offset,
56        mem_status_mask: mem_status,
57        repair_status_mask: repair_status,
58        req_offset,
59        req_w_mask: (req << 16),
60        req_mask: req,
61        idle_mask: idle,
62        ack_mask: ack,
63        active_wakeup: wakeup,
64        keepon_startup: keepon,
65        ..Default::default()
66    }
67}