[rtems-central commit] spec: Generalize register block specification

Sebastian Huber sebh at rtems.org
Fri Sep 24 14:01:33 UTC 2021


Module:    rtems-central
Branch:    master
Commit:    90ebc09b20ad5cb416a349d7f6e5c90efe9a7ae9
Changeset: http://git.rtems.org/rtems-central/commit/?id=90ebc09b20ad5cb416a349d7f6e5c90efe9a7ae9

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Sep 24 14:47:06 2021 +0200

spec: Generalize register block specification

---

 .../tests/spec-interface/irqamp-timestamp.yml      |  1 -
 rtemsspec/tests/spec-interface/irqamp.yml          |  1 -
 spec/dev/grlib/if/ahbstat.yml                      |  1 -
 spec/dev/grlib/if/ahbtrace.yml                     |  1 -
 spec/dev/grlib/if/apbuart.yml                      |  1 -
 spec/dev/grlib/if/dsu4.yml                         |  1 -
 spec/dev/grlib/if/ftmctrl.yml                      |  1 -
 spec/dev/grlib/if/gptimer-timer.yml                |  1 -
 spec/dev/grlib/if/gptimer.yml                      |  1 -
 spec/dev/grlib/if/gr1553b.yml                      |  1 -
 spec/dev/grlib/if/gr740thsens.yml                  |  1 -
 spec/dev/grlib/if/grcan.yml                        |  1 -
 spec/dev/grlib/if/grclkgate.yml                    |  1 -
 spec/dev/grlib/if/grethgbit.yml                    |  1 -
 spec/dev/grlib/if/grgpio.yml                       |  1 -
 spec/dev/grlib/if/grgprbank.yml                    |  1 -
 spec/dev/grlib/if/grgpreg.yml                      |  1 -
 spec/dev/grlib/if/griommu.yml                      |  1 -
 spec/dev/grlib/if/grpci2.yml                       |  1 -
 spec/dev/grlib/if/grspw2.yml                       |  1 -
 spec/dev/grlib/if/grspwrouter.yml                  |  1 -
 spec/dev/grlib/if/irqamp-timestamp.yml             |  1 -
 spec/dev/grlib/if/irqamp.yml                       |  1 -
 spec/dev/grlib/if/l2cache.yml                      |  1 -
 spec/dev/grlib/if/l4stat.yml                       |  1 -
 spec/dev/grlib/if/memscrub.yml                     |  1 -
 spec/dev/grlib/if/mmctrl.yml                       |  1 -
 spec/dev/grlib/if/spictrl.yml                      |  1 -
 spec/dev/grlib/if/spwpnp.yml                       |  1 -
 spec/dev/grlib/if/spwrmap.yml                      |  1 -
 spec/dev/grlib/if/spwtdp.yml                       |  1 -
 .../interface-register-block-member-directive.yml  |  4 ++--
 spec/spec/interface-register-block-type.yml        | 19 -------------------
 spec/spec/interface-register-block.yml             | 22 ++++++++++++----------
 34 files changed, 14 insertions(+), 62 deletions(-)

diff --git a/rtemsspec/tests/spec-interface/irqamp-timestamp.yml b/rtemsspec/tests/spec-interface/irqamp-timestamp.yml
index 9ec01ea..05d2ed5 100644
--- a/rtemsspec/tests/spec-interface/irqamp-timestamp.yml
+++ b/rtemsspec/tests/spec-interface/irqamp-timestamp.yml
@@ -36,7 +36,6 @@ definition:
 register-prefix: IRQAMP
 register-block-group: IRQ(A)MP Timestamp
 register-block-size: 16
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/rtemsspec/tests/spec-interface/irqamp.yml b/rtemsspec/tests/spec-interface/irqamp.yml
index beccec9..2a7a8cf 100644
--- a/rtemsspec/tests/spec-interface/irqamp.yml
+++ b/rtemsspec/tests/spec-interface/irqamp.yml
@@ -43,7 +43,6 @@ definition:
 register-prefix: null
 register-block-group: IRQ(A)MP
 register-block-size: 1024
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/ahbstat.yml b/spec/dev/grlib/if/ahbstat.yml
index 3e870e8..bffc307 100644
--- a/spec/dev/grlib/if/ahbstat.yml
+++ b/spec/dev/grlib/if/ahbstat.yml
@@ -28,7 +28,6 @@ definition:
 register-prefix: null
 register-block-group: AHBSTAT
 register-block-size: 8
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/ahbtrace.yml b/spec/dev/grlib/if/ahbtrace.yml
index 57e03e2..4d69ab9 100644
--- a/spec/dev/grlib/if/ahbtrace.yml
+++ b/spec/dev/grlib/if/ahbtrace.yml
@@ -58,7 +58,6 @@ definition:
 register-prefix: null
 register-block-group: AHBTRACE
 register-block-size: 32
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/apbuart.yml b/spec/dev/grlib/if/apbuart.yml
index 968101c..0c35eca 100644
--- a/spec/dev/grlib/if/apbuart.yml
+++ b/spec/dev/grlib/if/apbuart.yml
@@ -43,7 +43,6 @@ definition:
 register-prefix: null
 register-block-group: APBUART
 register-block-size: 20
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/dsu4.yml b/spec/dev/grlib/if/dsu4.yml
index b10391e..34a83c3 100644
--- a/spec/dev/grlib/if/dsu4.yml
+++ b/spec/dev/grlib/if/dsu4.yml
@@ -148,7 +148,6 @@ definition:
 register-prefix: null
 register-block-group: DSU4
 register-block-size: 4194344
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/ftmctrl.yml b/spec/dev/grlib/if/ftmctrl.yml
index ebeaf6f..329c804 100644
--- a/spec/dev/grlib/if/ftmctrl.yml
+++ b/spec/dev/grlib/if/ftmctrl.yml
@@ -38,7 +38,6 @@ definition:
 register-prefix: null
 register-block-group: FTMCTRL
 register-block-size: 28
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/gptimer-timer.yml b/spec/dev/grlib/if/gptimer-timer.yml
index d79ce1f..7d08cc7 100644
--- a/spec/dev/grlib/if/gptimer-timer.yml
+++ b/spec/dev/grlib/if/gptimer-timer.yml
@@ -38,7 +38,6 @@ definition:
 register-prefix: gptimer
 register-block-group: GPTIMER TIMER
 register-block-size: 16
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/gptimer.yml b/spec/dev/grlib/if/gptimer.yml
index e029ab7..27f0a1c 100644
--- a/spec/dev/grlib/if/gptimer.yml
+++ b/spec/dev/grlib/if/gptimer.yml
@@ -46,7 +46,6 @@ definition:
 register-prefix: null
 register-block-group: GPTIMER
 register-block-size: 256
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/gr1553b.yml b/spec/dev/grlib/if/gr1553b.yml
index 8de3cf1..92e293a 100644
--- a/spec/dev/grlib/if/gr1553b.yml
+++ b/spec/dev/grlib/if/gr1553b.yml
@@ -178,7 +178,6 @@ definition:
 register-prefix: null
 register-block-group: GR1553B
 register-block-size: 228
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/gr740thsens.yml b/spec/dev/grlib/if/gr740thsens.yml
index 073d6ee..7726467 100644
--- a/spec/dev/grlib/if/gr740thsens.yml
+++ b/spec/dev/grlib/if/gr740thsens.yml
@@ -33,7 +33,6 @@ definition:
 register-prefix: null
 register-block-group: GR740THSENS
 register-block-size: 12
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/grcan.yml b/spec/dev/grlib/if/grcan.yml
index 54ba977..3be6db0 100644
--- a/spec/dev/grlib/if/grcan.yml
+++ b/spec/dev/grlib/if/grcan.yml
@@ -113,7 +113,6 @@ definition:
 register-prefix: null
 register-block-group: GRCAN
 register-block-size: 800
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/grclkgate.yml b/spec/dev/grlib/if/grclkgate.yml
index 6671903..19ed5a8 100644
--- a/spec/dev/grlib/if/grclkgate.yml
+++ b/spec/dev/grlib/if/grclkgate.yml
@@ -38,7 +38,6 @@ definition:
 register-prefix: null
 register-block-group: GRCLKGATE
 register-block-size: 16
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/grethgbit.yml b/spec/dev/grlib/if/grethgbit.yml
index dce8678..ffd07ee 100644
--- a/spec/dev/grlib/if/grethgbit.yml
+++ b/spec/dev/grlib/if/grethgbit.yml
@@ -63,7 +63,6 @@ definition:
 register-prefix: null
 register-block-group: GRETH_GBIT
 register-block-size: 48
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/grgpio.yml b/spec/dev/grlib/if/grgpio.yml
index 9d88c21..d90fdd1 100644
--- a/spec/dev/grlib/if/grgpio.yml
+++ b/spec/dev/grlib/if/grgpio.yml
@@ -128,7 +128,6 @@ definition:
 register-prefix: null
 register-block-group: GRGPIO
 register-block-size: 128
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/grgprbank.yml b/spec/dev/grlib/if/grgprbank.yml
index aaedec5..f179b31 100644
--- a/spec/dev/grlib/if/grgprbank.yml
+++ b/spec/dev/grlib/if/grgprbank.yml
@@ -63,7 +63,6 @@ definition:
 register-prefix: null
 register-block-group: GPRBANK
 register-block-size: 36
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/grgpreg.yml b/spec/dev/grlib/if/grgpreg.yml
index 5ec8f6f..59effe6 100644
--- a/spec/dev/grlib/if/grgpreg.yml
+++ b/spec/dev/grlib/if/grgpreg.yml
@@ -23,7 +23,6 @@ definition:
 register-prefix: null
 register-block-group: GRGPREG
 register-block-size: 4
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/griommu.yml b/spec/dev/grlib/if/griommu.yml
index 567d4fb..c226e24 100644
--- a/spec/dev/grlib/if/griommu.yml
+++ b/spec/dev/grlib/if/griommu.yml
@@ -118,7 +118,6 @@ definition:
 register-prefix: null
 register-block-group: GRIOMMU
 register-block-size: 272
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/grpci2.yml b/spec/dev/grlib/if/grpci2.yml
index b08f5ac..e73ef93 100644
--- a/spec/dev/grlib/if/grpci2.yml
+++ b/spec/dev/grlib/if/grpci2.yml
@@ -113,7 +113,6 @@ definition:
 register-prefix: null
 register-block-group: GRPCI2
 register-block-size: 160
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/grspw2.yml b/spec/dev/grlib/if/grspw2.yml
index f3723f6..ee0cdd7 100644
--- a/spec/dev/grlib/if/grspw2.yml
+++ b/spec/dev/grlib/if/grspw2.yml
@@ -73,7 +73,6 @@ definition:
 register-prefix: null
 register-block-group: GRSPW2
 register-block-size: 52
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/grspwrouter.yml b/spec/dev/grlib/if/grspwrouter.yml
index cd7f9d3..34874c1 100644
--- a/spec/dev/grlib/if/grspwrouter.yml
+++ b/spec/dev/grlib/if/grspwrouter.yml
@@ -178,7 +178,6 @@ definition:
 register-prefix: null
 register-block-group: GRSPWROUTER
 register-block-size: 188
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/irqamp-timestamp.yml b/spec/dev/grlib/if/irqamp-timestamp.yml
index 54b4835..28e2de5 100644
--- a/spec/dev/grlib/if/irqamp-timestamp.yml
+++ b/spec/dev/grlib/if/irqamp-timestamp.yml
@@ -38,7 +38,6 @@ definition:
 register-prefix: IRQAMP
 register-block-group: IRQ(A)MP Timestamp
 register-block-size: 16
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/irqamp.yml b/spec/dev/grlib/if/irqamp.yml
index 5639316..bafc5eb 100644
--- a/spec/dev/grlib/if/irqamp.yml
+++ b/spec/dev/grlib/if/irqamp.yml
@@ -101,7 +101,6 @@ definition:
 register-prefix: null
 register-block-group: IRQ(A)MP
 register-block-size: 1024
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/l2cache.yml b/spec/dev/grlib/if/l2cache.yml
index 2f4d4cd..389ad5a 100644
--- a/spec/dev/grlib/if/l2cache.yml
+++ b/spec/dev/grlib/if/l2cache.yml
@@ -88,7 +88,6 @@ definition:
 register-prefix: null
 register-block-group: L2CACHE
 register-block-size: 132
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/l4stat.yml b/spec/dev/grlib/if/l4stat.yml
index 800cb15..0715f49 100644
--- a/spec/dev/grlib/if/l4stat.yml
+++ b/spec/dev/grlib/if/l4stat.yml
@@ -53,7 +53,6 @@ definition:
 register-prefix: null
 register-block-group: L4STAT
 register-block-size: 388
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/memscrub.yml b/spec/dev/grlib/if/memscrub.yml
index ac58a34..f29914c 100644
--- a/spec/dev/grlib/if/memscrub.yml
+++ b/spec/dev/grlib/if/memscrub.yml
@@ -78,7 +78,6 @@ definition:
 register-prefix: null
 register-block-group: MEMSCRUB
 register-block-size: 52
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/mmctrl.yml b/spec/dev/grlib/if/mmctrl.yml
index 96159fc..296e61c 100644
--- a/spec/dev/grlib/if/mmctrl.yml
+++ b/spec/dev/grlib/if/mmctrl.yml
@@ -53,7 +53,6 @@ definition:
 register-prefix: null
 register-block-group: MMCTRL
 register-block-size: 52
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/spictrl.yml b/spec/dev/grlib/if/spictrl.yml
index 89d204a..0f0953b 100644
--- a/spec/dev/grlib/if/spictrl.yml
+++ b/spec/dev/grlib/if/spictrl.yml
@@ -63,7 +63,6 @@ definition:
 register-prefix: null
 register-block-group: SPICTRL
 register-block-size: 64
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/spwpnp.yml b/spec/dev/grlib/if/spwpnp.yml
index 9cdbea1..79c514a 100644
--- a/spec/dev/grlib/if/spwpnp.yml
+++ b/spec/dev/grlib/if/spwpnp.yml
@@ -87,7 +87,6 @@ definition:
 register-prefix: null
 register-block-group: SpaceWire Plug-and-Play
 register-block-size: 49156
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/spwrmap.yml b/spec/dev/grlib/if/spwrmap.yml
index adef54d..5d83e9c 100644
--- a/spec/dev/grlib/if/spwrmap.yml
+++ b/spec/dev/grlib/if/spwrmap.yml
@@ -177,7 +177,6 @@ definition:
 register-prefix: null
 register-block-group: SpaceWire Remote Memory Access Protocol (RMAP)
 register-block-size: 4104
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/dev/grlib/if/spwtdp.yml b/spec/dev/grlib/if/spwtdp.yml
index 7d82f70..6cbb1ba 100644
--- a/spec/dev/grlib/if/spwtdp.yml
+++ b/spec/dev/grlib/if/spwtdp.yml
@@ -203,7 +203,6 @@ definition:
 register-prefix: null
 register-block-group: SPWTDP
 register-block-size: 296
-register-block-type: memory
 registers:
 - bits:
   - default:
diff --git a/spec/spec/interface-register-block-member-directive.yml b/spec/spec/interface-register-block-member-directive.yml
index faa3072..3f66161 100644
--- a/spec/spec/interface-register-block-member-directive.yml
+++ b/spec/spec/interface-register-block-member-directive.yml
@@ -17,8 +17,8 @@ spec-info:
         spec-type: interface-register-block-member
       offset:
         description: |
-          It shall be the offset in bytes from the register block begin to the
-          register member.
+          It shall be the offset from the register block begin to the register
+          member in units of the address space granule.
         spec-type: int
       variants:
         description: null
diff --git a/spec/spec/interface-register-block-type.yml b/spec/spec/interface-register-block-type.yml
deleted file mode 100644
index 22185dd..0000000
--- a/spec/spec/interface-register-block-type.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
-copyrights:
-- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
-enabled-by: true
-links:
-- role: spec-member
-  uid: root
-spec-description: null
-spec-example: null
-spec-info:
-  str:
-    assert:
-      in:
-      - memory
-    description: |
-      It specifies the register block type.
-spec-name: Register Block Type
-spec-type: interface-register-block-type
-type: spec
diff --git a/spec/spec/interface-register-block.yml b/spec/spec/interface-register-block.yml
index c0f04a1..ed7c82c 100644
--- a/spec/spec/interface-register-block.yml
+++ b/spec/spec/interface-register-block.yml
@@ -43,11 +43,9 @@ spec-info:
         spec-type: str
       register-block-size:
         description: |
-          It shall be the size in bytes of the register block.
+          It shall be the size of the register block in units of the address
+          space granule.
         spec-type: int
-      register-block-type:
-        description: null
-        spec-type: interface-register-block-type
       register-prefix:
         description: |
           If the value is present, then it will be used to prefix register bit
@@ -56,13 +54,17 @@ spec-info:
         spec-type: optional-str
     description: |
       This set of attributes specifies a register block.  A register block may
-      be used to specify the memory-mapped interface to the hardware.  Register
-      blocks consist of register block members specified by the ``definition``
-      attribute.  Register block members are either instances of registers
-      specified by the ``registers`` attribute or instances of other register
-      blocks specified by links with the
+      be used to specify the interface of devices which use a linear address
+      space.  Register blocks consist of register block members specified by
+      the ``definition`` attribute.  Register block members are either
+      instances of registers specified by the ``registers`` attribute or
+      instances of other register blocks specified by links with the
       ${interface-register-block-include-role:/spec-name}.  Registers consists
-      of bit fields (see ${interface-register-bits:/spec-name}.
+      of bit fields (see ${interface-register-bits:/spec-name}.  The register
+      block members are placed into the address space of the device relative to
+      the base address of the register block.  Register member offests and the
+      register block size are specified in units of the address space granule.
+      The address space granule is usually 8-bits also known as one byte.
     generic-attributes:
       description: null
       key-spec-type: name



More information about the vc mailing list