{% set template = namespace(registersToFields=dict()) %} {% if fields %} {# Create a dictionary linking a register to its associated fields #} {# for hierarchical display #} {% for key,field in fields|dictsort %} {% set rkey = field.register[12:] %} {% if rkey in template.registersToFields %} {% set _dummy = field.update({ 'key': key }) %} {{- template.registersToFields[rkey].append(field) or "" -}} {% else %} {% set _dummy = field.update({ 'key': key }) %} {% set _dummy = template.registersToFields.update({ rkey: [] }) %} {{- template.registersToFields[rkey].append(field) or "" -}} {% endif %} {% endfor %} {% endif %} {{ info.title }}

{{ info.title }}

{{ info.description }}

{% set registersArray = registers.items()|sort(attribute="1.address") %} {% set maxlengthReg = registers.items()|sort(attribute="1.length")|last %} {% set maxlength = maxlengthReg[1].length %} {% if maxlength == 0 %} {% set maxlength = 2 %} {% endif %} {% for key,register in registersArray %} {% if key in template.registersToFields %} {% set fields = template.registersToFields[key] %} {% for field in fields|sort(attribute="bitStart", reverse=True) %} {% set length = (field.bitStart - field.bitEnd) + 1 %} {% endfor %} {% else %} {% if register.length < maxlength %} {% endif %} {% endif %} {% endfor %}

Addr {{register.address}}

{{register.length}}-bytes
{% if register.readWrite == "R" %}
Read-only {% endif %} {% if register.readWrite == "W" %}
Write-only {% endif %} {% if register.readWrite == "n" %}
Inaccessible {% endif %} {% if register.signed %}
Signed value {% endif %}

{{ field.title }}

{{ field.description }}

[{{field.bitStart}}:{{field.bitEnd}}] | {{length}}-byte{% if length > 1 %}s{% endif %} {% if field.readWrite == "R" %}
Read-only {% endif %} {% if field.readWrite == "W" %}
Write-only {% endif %} {% if field.readWrite == "n" %}
Inaccessible {% endif %}

{{register.title}}

{{register.description}}

{% if functions %}

Functions

{% endif %}