lowrisc/
padctrl.rs
1use kernel::utilities::registers::{register_bitfields, register_structs, ReadWrite};
8
9register_structs! {
10 pub PadCtrlRegisters {
11 (0x00 => pub regen: ReadWrite<u32, REGEN::Register>),
12 (0x04 => pub dio_pads: ReadWrite<u32, DIO_PADS::Register>),
13 (0x08 => pub mio_pads0: ReadWrite<u32, DIO_PADS::Register>),
14 (0x0c => pub mio_pads1: ReadWrite<u32, DIO_PADS::Register>),
15 (0x10 => pub mio_pads2: ReadWrite<u32, DIO_PADS::Register>),
16 (0x14 => pub mio_pads3: ReadWrite<u32, DIO_PADS::Register>),
17 (0x18 => @END),
18 }
19}
20
21register_bitfields![u32,
22 pub REGEN [
23 WEN OFFSET(0) NUMBITS(1) []
24 ],
25 pub DIO_PADS [
26 ATTR0_IO_INV OFFSET(0) NUMBITS(1) [],
27 ATTR0_OPEN_DRAIN OFFSET(1) NUMBITS(1) [],
28 ATTR0_PULL_DOWN OFFSET(2) NUMBITS(1) [],
29 ATTR0_PULL_UP OFFSET(3) NUMBITS(1) [],
30 ATTR0_KEEPER OFFSET(4) NUMBITS(1) [],
31 ATTR0_STRENGTH OFFSET(5) NUMBITS(1) [],
32 ATTR1_IO_INV OFFSET(8) NUMBITS(1) [],
33 ATTR1_OPEN_DRAIN OFFSET(9) NUMBITS(1) [],
34 ATTR1_PULL_DOWN OFFSET(10) NUMBITS(1) [],
35 ATTR1_PULL_UP OFFSET(11) NUMBITS(1) [],
36 ATTR1_KEEPER OFFSET(12) NUMBITS(1) [],
37 ATTR1_STRENGTH OFFSET(13) NUMBITS(1) [],
38 ATTR2_IO_INV OFFSET(16) NUMBITS(1) [],
39 ATTR2_OPEN_DRAIN OFFSET(17) NUMBITS(1) [],
40 ATTR2_PULL_DOWN OFFSET(18) NUMBITS(1) [],
41 ATTR2_PULL_UP OFFSET(19) NUMBITS(1) [],
42 ATTR2_KEEPER OFFSET(20) NUMBITS(1) [],
43 ATTR2_STRENGTH OFFSET(21) NUMBITS(1) [],
44 ATTR3_IO_INV OFFSET(24) NUMBITS(1) [],
45 ATTR3_OPEN_DRAIN OFFSET(25) NUMBITS(1) [],
46 ATTR3_PULL_DOWN OFFSET(26) NUMBITS(1) [],
47 ATTR3_PULL_UP OFFSET(27) NUMBITS(1) [],
48 ATTR3_KEEPER OFFSET(28) NUMBITS(1) [],
49 ATTR3_STRENGTH OFFSET(29) NUMBITS(1) []
50 ]
51];