rockchip_pm/variants/
mod.rs1use alloc::collections::btree_map::BTreeMap;
2
3use crate::RkBoard;
4
5#[macro_use]
6mod _macros;
7
8mod rk3588;
9
10pub type DomainMap = BTreeMap<PowerDomain, RockchipDomainInfo>;
11
12#[repr(transparent)]
13#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord)]
14pub struct PowerDomain(pub usize);
15
16impl From<u32> for PowerDomain {
17 fn from(value: u32) -> Self {
18 PowerDomain(value as usize)
19 }
20}
21
22#[allow(dead_code)]
23#[derive(Clone, Debug, Default)]
24pub struct RockchipPmuInfo {
25 pub pwr_offset: u32,
26 pub status_offset: u32,
27 pub req_offset: u32,
28 pub idle_offset: u32,
29 pub ack_offset: u32,
30 pub mem_pwr_offset: u32,
31 pub chain_status_offset: u32,
32 pub mem_status_offset: u32,
33 pub repair_status_offset: u32,
34 pub clk_ungate_offset: u32,
35 pub mem_sd_offset: u32,
36 pub core_pwrcnt_offset: u32,
37 pub gpu_pwrcnt_offset: u32,
38 pub core_power_transition_time: u32,
39 pub gpu_power_transition_time: u32,
40
41 pub domains: DomainMap,
42}
43
44impl RockchipPmuInfo {
45 pub fn new(board: RkBoard) -> Self {
46 match board {
47 RkBoard::Rk3588 => rk3588::pmu_info(),
48 RkBoard::Rk3568 => unimplemented!(),
49 }
50 }
51}
52
53#[allow(dead_code)]
54#[derive(Debug, Clone, Default)]
55pub struct RockchipDomainInfo {
56 pub name: &'static str,
57 pub pwr_mask: i32,
58 pub status_mask: i32,
59 pub req_mask: i32,
60 pub idle_mask: i32,
61 pub ack_mask: i32,
62 pub active_wakeup: bool,
63 pub pwr_w_mask: i32,
64 pub req_w_mask: i32,
65 pub mem_status_mask: i32,
66 pub repair_status_mask: i32,
67 pub clk_ungate_mask: i32,
68 pub clk_ungate_w_mask: i32,
69 pub mem_num: i32,
70 pub keepon_startup: bool,
71 pub always_on: bool,
72 pub pwr_offset: u32,
73 pub mem_offset: u32,
74 pub req_offset: u32,
75}