diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2016-05-16 00:08:52 +0100 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2016-05-25 00:11:07 +0100 |
commit | e62203aac1876987e52f3be9db079bd4ad133b28 (patch) | |
tree | 8d12b01ca6e4790c5ef3e9da04ee646093a2008e /utils/regtools/desc | |
parent | 00a3658e5a5fdca7c0d4dc532c5721efb8418ee5 (diff) | |
download | rockbox-e62203aac1876987e52f3be9db079bd4ad133b28.tar.gz rockbox-e62203aac1876987e52f3be9db079bd4ad133b28.zip |
regtools: add headergen_v2
This new header generator works differently from the previous one:
- it uses the new format
- the generated macro follow a different style (see below)
- the generated macro are highly documented!
- it supports SCT-style platform or RMW-style ones
Compared to the old style, the new one generate a big set of macros per
register/field/enum (loosely related to iohw.h from Embedded C spec). The user
then calls generic (names are customizable) macros to perform operations:
reg_read(REG_A)
reg_read(REG_B(3))
reg_read_field(REG_A, FIELD_X)
reg_read_field(REG_B(3), COOL_FIELD)
reg_write(REG_A, 0x42)
reg_write_field(REG_A, FIELD_X(1), FIELD_Y(3), IRQ_V(FIQ))
reg_write_fielc(REG_B(3), COOL_FIELD_V(I_AM_COOL), BLA(42))
the following use RMW or SET/CLR variants, depending on target:
reg_set_field(REG_A, FLAG_U, FLAG_V)
reg_clr_field(REG_A, FIELD_X, FIELD_Y, IRQ)
reg_clr_field(REG_B(3), COOL_FIELD, BLA)
the following does clear followed by set, on SET/CLR targets:
reg_cs(REG_A, 0xff, 0x42)
reg_cs(REG_B(3), 0xaa, 0x55)
reg_cs_field(REG_A, FIELD_X(1), FIELD_Y(3), IRQ_V(FIQ))
reg_cs_field(REG_B(3), COOL_FIELD_V(I_AM_COOL))
The generator code is pretty long but has lots of documentation and lots of
macro names can be customized.
Change-Id: I5d6c5ec2406e58b5da11a5240c3a409a5bb5239a
Diffstat (limited to 'utils/regtools/desc')
-rw-r--r-- | utils/regtools/desc/regs-vsoc2000.xml | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/utils/regtools/desc/regs-vsoc2000.xml b/utils/regtools/desc/regs-vsoc2000.xml index 858c13254c..db51e8eb98 100644 --- a/utils/regtools/desc/regs-vsoc2000.xml +++ b/utils/regtools/desc/regs-vsoc2000.xml | |||
@@ -66,16 +66,30 @@ | |||
66 | <address>0x10</address> | 66 | <address>0x10</address> |
67 | </instance> | 67 | </instance> |
68 | <register> | 68 | <register> |
69 | <access>read-only</access> | ||
69 | <field> | 70 | <field> |
70 | <name>STATUS</name> | 71 | <name>STATUS</name> |
71 | <desc>Bit is set to 1 is the interrupt is pending, write a 1 to the clear variant to clear it. Secured interrupts can only be cleared or polled by secured processors (non-secure will always read 0 for those).</desc> | 72 | <desc>Bit is set to 1 is the interrupt is pending. Secured interrupts can only be polled by secured processors (non-secure will always read 0 for those).</desc> |
73 | <position>0</position> | ||
74 | <width>32</width> | ||
75 | </field> | ||
76 | </register> | ||
77 | </node> | ||
78 | <node> | ||
79 | <name>clear</name> | ||
80 | <title>Interrupt clear register</title> | ||
81 | <instance> | ||
82 | <name>CLEAR</name> | ||
83 | <address>0x14</address> | ||
84 | </instance> | ||
85 | <register> | ||
86 | <access>write-only</access> | ||
87 | <field> | ||
88 | <name>CLEAR</name> | ||
89 | <desc>Write 1 to clear a pending interrupt. Secured interrupts can only be cleared by secured processors.</desc> | ||
72 | <position>0</position> | 90 | <position>0</position> |
73 | <width>32</width> | 91 | <width>32</width> |
74 | </field> | 92 | </field> |
75 | <variant> | ||
76 | <type>clr</type> | ||
77 | <offset>8</offset> | ||
78 | </variant> | ||
79 | </register> | 93 | </register> |
80 | </node> | 94 | </node> |
81 | <node> | 95 | <node> |
@@ -335,7 +349,7 @@ | |||
335 | <offset>8</offset> | 349 | <offset>8</offset> |
336 | </variant> | 350 | </variant> |
337 | <variant> | 351 | <variant> |
338 | <type>mask</type> | 352 | <type>tog</type> |
339 | <offset>12</offset> | 353 | <offset>12</offset> |
340 | </variant> | 354 | </variant> |
341 | </register> | 355 | </register> |
@@ -391,11 +405,6 @@ | |||
391 | <register> | 405 | <register> |
392 | <width>8</width> | 406 | <width>8</width> |
393 | <access>read-only</access> | 407 | <access>read-only</access> |
394 | <variant> | ||
395 | <type>debug</type> | ||
396 | <offset>4</offset> | ||
397 | <access>write-only</access> | ||
398 | </variant> | ||
399 | </register> | 408 | </register> |
400 | </node> | 409 | </node> |
401 | </node> | 410 | </node> |