summaryrefslogtreecommitdiff
path: root/utils/regtools/desc
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2016-05-16 00:08:52 +0100
committerAmaury Pouly <amaury.pouly@gmail.com>2016-05-25 00:11:07 +0100
commite62203aac1876987e52f3be9db079bd4ad133b28 (patch)
tree8d12b01ca6e4790c5ef3e9da04ee646093a2008e /utils/regtools/desc
parent00a3658e5a5fdca7c0d4dc532c5721efb8418ee5 (diff)
downloadrockbox-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.xml31
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>