lowrisc/registers/
pwm_regs.rs1use kernel::utilities::registers::ReadWrite;
13use kernel::utilities::registers::{register_bitfields, register_structs};
14pub const PWM_PARAM_N_OUTPUTS: u32 = 6;
16pub const PWM_PARAM_NUM_ALERTS: u32 = 1;
18pub const PWM_PARAM_REG_WIDTH: u32 = 32;
20
21register_structs! {
22    pub PwmRegisters {
23        (0x0000 => pub(crate) alert_test: ReadWrite<u32, ALERT_TEST::Register>),
25        (0x0004 => pub(crate) regwen: ReadWrite<u32, REGWEN::Register>),
27        (0x0008 => pub(crate) cfg: ReadWrite<u32, CFG::Register>),
29        (0x000c => pub(crate) pwm_en: [ReadWrite<u32, PWM_EN::Register>; 1]),
31        (0x0010 => pub(crate) invert: [ReadWrite<u32, INVERT::Register>; 1]),
33        (0x0014 => pub(crate) pwm_param: [ReadWrite<u32, PWM_PARAM::Register>; 6]),
35        (0x002c => pub(crate) duty_cycle: [ReadWrite<u32, DUTY_CYCLE::Register>; 6]),
37        (0x0044 => pub(crate) blink_param: [ReadWrite<u32, BLINK_PARAM::Register>; 6]),
39        (0x005c => @END),
40    }
41}
42
43register_bitfields![u32,
44    pub(crate) ALERT_TEST [
45        FATAL_FAULT OFFSET(0) NUMBITS(1) [],
46    ],
47    pub(crate) REGWEN [
48        REGWEN OFFSET(0) NUMBITS(1) [],
49    ],
50    pub(crate) CFG [
51        CLK_DIV OFFSET(0) NUMBITS(27) [],
52        DC_RESN OFFSET(27) NUMBITS(4) [],
53        CNTR_EN OFFSET(31) NUMBITS(1) [],
54    ],
55    pub(crate) PWM_EN [
56        EN_0 OFFSET(0) NUMBITS(1) [],
57        EN_1 OFFSET(1) NUMBITS(1) [],
58        EN_2 OFFSET(2) NUMBITS(1) [],
59        EN_3 OFFSET(3) NUMBITS(1) [],
60        EN_4 OFFSET(4) NUMBITS(1) [],
61        EN_5 OFFSET(5) NUMBITS(1) [],
62    ],
63    pub(crate) INVERT [
64        INVERT_0 OFFSET(0) NUMBITS(1) [],
65        INVERT_1 OFFSET(1) NUMBITS(1) [],
66        INVERT_2 OFFSET(2) NUMBITS(1) [],
67        INVERT_3 OFFSET(3) NUMBITS(1) [],
68        INVERT_4 OFFSET(4) NUMBITS(1) [],
69        INVERT_5 OFFSET(5) NUMBITS(1) [],
70    ],
71    pub(crate) PWM_PARAM [
72        PHASE_DELAY_0 OFFSET(0) NUMBITS(16) [],
73        HTBT_EN_0 OFFSET(30) NUMBITS(1) [],
74        BLINK_EN_0 OFFSET(31) NUMBITS(1) [],
75    ],
76    pub(crate) DUTY_CYCLE [
77        A_0 OFFSET(0) NUMBITS(16) [],
78        B_0 OFFSET(16) NUMBITS(16) [],
79    ],
80    pub(crate) BLINK_PARAM [
81        X_0 OFFSET(0) NUMBITS(16) [],
82        Y_0 OFFSET(16) NUMBITS(16) [],
83    ],
84];
85
86