feat(rmm): add PCIe IO info to Boot manifest

- Add PCIe and SMMUv3 related information to DTS for
  configurations with ENABLE_RME=1.
- Add entries for PCIe IO memory regions to Boot manifest
- Update RMMD_MANIFEST_VERSION_MINOR from 3 to 4.
- Read PCIe related information from DTB and write it to
  Boot manifest.
- Rename structures that used to describe DRAM layout
  and now describe both DRAM and PCIe IO memory regions:
  - ns_dram_bank -> memory_bank
  - ns_dram_info -> memory_info.

Change-Id: Ib75d1af86076f724f5c330074e231f1c2ba8e21d
Signed-off-by: AlexeiFedorov <Alexei.Fedorov@arm.com>
diff --git a/docs/components/rmm-el3-comms-spec.rst b/docs/components/rmm-el3-comms-spec.rst
index 79e1d2c..f1ca031 100644
--- a/docs/components/rmm-el3-comms-spec.rst
+++ b/docs/components/rmm-el3-comms-spec.rst
@@ -53,7 +53,7 @@
     consistency with the versioning schemes used in other parts of RMM.
 
 This document specifies the 0.4 version of Boot Interface ABI and RMM-EL3
-services specification and the 0.3 version of the Boot Manifest.
+services specification and the 0.4 version of the Boot Manifest.
 
 .. _rmm_el3_boot_interface:
 
@@ -182,12 +182,12 @@
 
 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.3`` and the rules explained
+The current version for the Boot Manifest is ``v0.4`` and the rules explained
 in :ref:`rmm_el3_ifc_versioning` apply on this version as well.
 
-The Boot Manifest v0.3 has the following fields:
+The Boot Manifest v0.4 has the following fields:
 
-   - version : Version of the Manifest (v0.3)
+   - version : Version of the Manifest (v0.4)
    - 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
@@ -720,61 +720,65 @@
 RMM-EL3 Boot Manifest structure
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-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 RMM-EL3 Boot Manifest v0.4 structure contains platform boot information passed
+from EL3 to RMM. The size of the Boot Manifest is 112 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          |
-+--------------+--------+----------------+----------------------------------------+
-| plat_console |   40   | console_list   | List of consoles available to RMM      |
-+--------------+--------+----------------+----------------------------------------+
++--------------------+--------+-------------------+----------------------------------------------+
+|   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   |    memory_info    | NS DRAM Layout Info structure                |
++--------------------+--------+-------------------+----------------------------------------------+
+| plat_console       |   40   |   console_list    | List of consoles available to RMM            |
++--------------------+--------+-------------------+----------------------------------------------+
+| plat_ncoh_region   |   64   |    memory_info    | Device non-coherent ranges Info structure    |
++--------------------+--------+-------------------+----------------------------------------------+
+| plat_coh_region    |   88   |    memory_info    | Device coherent ranges Info structure        |
++--------------------+--------+-------------------+----------------------------------------------+
 
-.. _ns_dram_info_struct:
+.. _memory_info_struct:
 
-NS DRAM Layout Info structure
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Memory Info structure
+~~~~~~~~~~~~~~~~~~~~~~
 
-NS DRAM Layout Info structure contains information about platform Non-secure
-DRAM layout. The members of this structure are shown in the table below:
+Memory Info structure contains information about platform memory layout.
+The members of this structure are shown in the table below:
 
 +-----------+--------+----------------+----------------------------------------+
 |   Name    | Offset |     Type       |               Description              |
 +===========+========+================+========================================+
-| num_banks |   0    |   uint64_t     | Number of NS DRAM banks                |
+| num_banks |   0    |   uint64_t     | Number of memory banks/device regions  |
 +-----------+--------+----------------+----------------------------------------+
-| banks     |   8    | ns_dram_bank * | Pointer to 'ns_dram_bank'[] array      |
+| banks     |   8    |  memory_bank * | Pointer to 'memory_bank'[] array       |
 +-----------+--------+----------------+----------------------------------------+
 | checksum  |   16   |   uint64_t     | Checksum                               |
 +-----------+--------+----------------+----------------------------------------+
 
 Checksum is calculated as two's complement sum of 'num_banks', 'banks' pointer
-and DRAM banks data array pointed by it.
+and memory banks data array pointed by it.
 
-.. _ns_dram_bank_struct:
+.. _memory_bank_struct:
 
-NS DRAM Bank structure
-~~~~~~~~~~~~~~~~~~~~~~
+Memory Bank/Device region structure
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-NS DRAM Bank structure contains information about each Non-secure DRAM bank:
+Memory Bank structure contains information about each memory bank/device region:
 
-+-----------+--------+----------------+----------------------------------------+
-|   Name    | Offset |     Type       |               Description              |
-+===========+========+================+========================================+
-|   base    |   0    |   uintptr_t    | Base address                           |
-+-----------+--------+----------------+----------------------------------------+
-|   size    |   8    |   uint64_t     | Size of bank in bytes                  |
-+-----------+--------+----------------+----------------------------------------+
++-----------+--------+----------------+--------------------------------------------+
+|   Name    | Offset |     Type       |                Description                 |
++===========+========+================+============================================+
+|   base    |   0    |   uintptr_t    | Base address                               |
++-----------+--------+----------------+--------------------------------------------+
+|   size    |   8    |   uint64_t     | Size of memory bank/device region in bytes |
++-----------+--------+----------------+--------------------------------------------+
 
 .. _console_list_struct:
 
@@ -784,15 +788,15 @@
 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                               |
-+--------------+--------+----------------+----------------------------------------+
++--------------+--------+----------------+-------------------------------------+
+|   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.
@@ -804,28 +808,28 @@
 
 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)                |
-+-----------+--------+---------------+----------------------------------------+
++-----------+--------+---------------+-----------------------------------------+
+|   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[8]     | 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)                 |
++-----------+--------+---------------+-----------------------------------------+
 
 .. _el3_token_sign_request_struct:
 
 EL3 Token Sign Request structure
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-This structure represents a realm attestation toekn signing request.
+This structure represents a realm attestation token signing request.
 
 +-------------+--------+---------------+-----------------------------------------+
 |   Name      | Offset |     Type      |               Description               |