docs(rmm): document console struct in rmm boot manifest

This change adds documentation for the console_list and
console_info structures added to the RMM Boot Manifest v0.3.

Signed-off-by: Harry Moulton <harry.moulton@arm.com>
Change-Id: I3a4f9a4f1d34259bc69c0ab497cbfbc268d7a994
This commit is contained in:
Harry Moulton 2024-03-28 10:16:50 +00:00
parent 32904472cc
commit 88f7c87b8a

View file

@ -53,7 +53,7 @@ are explained below:
consistency with the versioning schemes used in other parts of RMM.
This document specifies the 0.2 version of Boot Interface ABI and RMM-EL3
services specification and the 0.2 version of the Boot Manifest.
services specification and the 0.3 version of the Boot Manifest.
.. _rmm_el3_boot_interface:
@ -182,17 +182,20 @@ platform information.
This Boot Manifest is versioned independently of the Boot Interface, to help
evolve the former independent of the latter.
The current version for the Boot Manifest is ``v0.2`` and the rules explained
The current version for the Boot Manifest is ``v0.3`` and the rules explained
in :ref:`rmm_el3_ifc_versioning` apply on this version as well.
The Boot Manifest v0.2 has the following fields:
The Boot Manifest v0.3 has the following fields:
- version : Version of the Manifest (v0.2)
- version : Version of the Manifest (v0.3)
- plat_data : Pointer to the platform specific data and not specified by this
document. These data are optional and can be NULL.
- plat_dram : Structure encoding the NS DRAM information on the platform. This
field is also optional and platform can choose to zero out this structure if
field is optional and platform can choose to zero out this structure if
RMM does not need EL3 to send this information during the boot.
- plat_console : Structure encoding the list of consoles for RMM use on the
platform. This field is optional and platform can choose to not populate
the console list if this is not needed by the RMM for this platform.
For the current version of the Boot Manifest, the core manifest contains a pointer
to the platform data. EL3 must ensure that the whole Boot Manifest, including
@ -533,23 +536,25 @@ _____
RMM-EL3 Boot Manifest structure
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The RMM-EL3 Boot Manifest v0.2 structure contains platform boot information passed
from EL3 to RMM. The size of the Boot Manifest is 40 bytes.
The RMM-EL3 Boot Manifest v0.3 structure contains platform boot information passed
from EL3 to RMM. The size of the Boot Manifest is 64 bytes.
The members of the RMM-EL3 Boot Manifest structure are shown in the following
table:
+-----------+--------+----------------+----------------------------------------+
| Name | Offset | Type | Description |
+===========+========+================+========================================+
| version | 0 | uint32_t | Boot Manifest version |
+-----------+--------+----------------+----------------------------------------+
| padding | 4 | uint32_t | Reserved, set to 0 |
+-----------+--------+----------------+----------------------------------------+
| plat_data | 8 | uintptr_t | Pointer to Platform Data section |
+-----------+--------+----------------+----------------------------------------+
| plat_dram | 16 | ns_dram_info | NS DRAM Layout Info structure |
+-----------+--------+----------------+----------------------------------------+
+--------------+--------+----------------+----------------------------------------+
| Name | Offset | Type | Description |
+==============+========+================+========================================+
| version | 0 | uint32_t | Boot Manifest version |
+--------------+--------+----------------+----------------------------------------+
| padding | 4 | uint32_t | Reserved, set to 0 |
+--------------+--------+----------------+----------------------------------------+
| plat_data | 8 | uintptr_t | Pointer to Platform Data section |
+--------------+--------+----------------+----------------------------------------+
| plat_dram | 16 | ns_dram_info | NS DRAM Layout Info structure |
+--------------+--------+----------------+----------------------------------------+
| plat_console | 40 | console_list | List of consoles available to RMM |
+--------------+--------+----------------+----------------------------------------+
.. _ns_dram_info_struct:
@ -587,5 +592,47 @@ NS DRAM Bank structure contains information about each Non-secure DRAM bank:
| size | 8 | uint64_t | Size of bank in bytes |
+-----------+--------+----------------+----------------------------------------+
.. _console_list_struct:
Console List structure
~~~~~~~~~~~~~~~~~~~~~~
Console List structure contains information about the available consoles for RMM.
The members of this structure are shown in the table below:
+--------------+--------+----------------+----------------------------------------+
| Name | Offset | Type | Description |
+==============+========+================+========================================+
| num_consoles | 0 | uint64_t | Number of consoles |
+--------------+--------+----------------+----------------------------------------+
| consoles | 8 | console_info * | Pointer to 'console_info'[] array |
+--------------+--------+----------------+----------------------------------------+
| checksum | 16 | uint64_t | Checksum |
+--------------+--------+----------------+----------------------------------------+
Checksum is calculated as two's complement sum of 'num_consoles', 'consoles'
pointer and the consoles array pointed by it.
.. _console_info_struct:
Console Info structure
~~~~~~~~~~~~~~~~~~~~~~
Console Info structure contains information about each Console available to RMM.
+-----------+--------+---------------+----------------------------------------+
| Name | Offset | Type | Description |
+===========+========+===============+========================================+
| base | 0 | uintptr_t | Console Base address |
+-----------+--------+---------------+----------------------------------------+
| map_pages | 8 | uint64_t | Num of pages to map for console MMIO |
+-----------+--------+---------------+----------------------------------------+
| name | 16 | char[] | Name of console |
+-----------+--------+---------------+----------------------------------------+
| clk_in_hz | 24 | uint64_t | UART clock (in hz) for console |
+-----------+--------+---------------+----------------------------------------+
| baud_rate | 32 | uint64_t | Baud rate |
+-----------+--------+---------------+----------------------------------------+
| flags | 40 | uint64_t | Additional flags (RES0) |
+-----------+--------+---------------+----------------------------------------+