CMSIS-Pack:
  - api documentation improved
  - added bash_script to support pack generation on Linux or Windows
  - added custom attribute to component element
  - added TrustZone-disabled value to software model selection
diff --git a/ARM.CMSIS.pdsc b/ARM.CMSIS.pdsc
index c25e1cb..e560721 100644
--- a/ARM.CMSIS.pdsc
+++ b/ARM.CMSIS.pdsc
@@ -14,6 +14,8 @@
        - Enhanced MVE support for Armv8.1-MML
       CMSIS-RTOS2:
         - RTX 5.5.2 (see revision history for details)
+	  CMSIS-Pack: 
+	    - added custom attribute to components that require custom implementation
     </release>
     <release version="5.6.0" date="2019-07-10">
       CMSIS-Core(M): 5.3.0 (see revision history for details)
@@ -3601,63 +3603,63 @@
     </component>
 
     <!-- CMSIS-Driver Custom components -->
-    <component Cclass="CMSIS Driver" Cgroup="USART" Csub="Custom" Cversion="2.3.0" Capiversion="2.3.0">
+    <component Cclass="CMSIS Driver" Cgroup="USART" Csub="Custom" Cversion="2.3.0" Capiversion="2.3.0" custom="1">
       <description>Access to #include Driver_USART.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_USART.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_USART.c" select="USART Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="SPI" Csub="Custom" Cversion="2.2.0" Capiversion="2.2.0">
+    <component Cclass="CMSIS Driver" Cgroup="SPI" Csub="Custom" Cversion="2.2.0" Capiversion="2.2.0" custom="1">
       <description>Access to #include Driver_SPI.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_SPI.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_SPI.c" select="SPI Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="SAI" Csub="Custom" Cversion="1.1.0" Capiversion="1.1.0">
+    <component Cclass="CMSIS Driver" Cgroup="SAI" Csub="Custom" Cversion="1.1.0" Capiversion="1.1.0" custom="1">
       <description>Access to #include Driver_SAI.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_SAI.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_SAI.c" select="SAI Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="I2C" Csub="Custom" Cversion="2.3.0" Capiversion="2.3.0">
+    <component Cclass="CMSIS Driver" Cgroup="I2C" Csub="Custom" Cversion="2.3.0" Capiversion="2.3.0" custom="1">
       <description>Access to #include Driver_I2C.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_I2C.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_I2C.c" select="I2C Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="CAN" Csub="Custom" Cversion="1.2.0" Capiversion="1.2.0">
+    <component Cclass="CMSIS Driver" Cgroup="CAN" Csub="Custom" Cversion="1.2.0" Capiversion="1.2.0" custom="1">
       <description>Access to #include Driver_CAN.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_CAN.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_CAN.c" select="CAN Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="Flash" Csub="Custom" Cversion="2.2.0" Capiversion="2.2.0">
+    <component Cclass="CMSIS Driver" Cgroup="Flash" Csub="Custom" Cversion="2.2.0" Capiversion="2.2.0" custom="1">
       <description>Access to #include Driver_Flash.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_Flash.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_Flash.c" select="Flash Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="MCI" Csub="Custom" Cversion="2.3.0" Capiversion="2.3.0">
+    <component Cclass="CMSIS Driver" Cgroup="MCI" Csub="Custom" Cversion="2.3.0" Capiversion="2.3.0" custom="1">
       <description>Access to #include Driver_MCI.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_MCI.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_MCI.c" select="MCI Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="NAND" Csub="Custom" Cversion="2.3.0" Capiversion="2.3.0">
+    <component Cclass="CMSIS Driver" Cgroup="NAND" Csub="Custom" Cversion="2.3.0" Capiversion="2.3.0" custom="1">
       <description>Access to #include Driver_NAND.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_NAND.h" />
         <!-- <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_NAND.c" select="NAND Flash Driver"/> -->
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="Ethernet" Csub="Custom" Cversion="2.1.0" Capiversion="2.1.0">
+    <component Cclass="CMSIS Driver" Cgroup="Ethernet" Csub="Custom" Cversion="2.1.0" Capiversion="2.1.0" custom="1">
       <description>Access to #include Driver_ETH_PHY/MAC.h files and code templates for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_ETH_MAC.h" />
@@ -3666,35 +3668,35 @@
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_ETH_MAC.c" select="Ethernet PHY and MAC Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="Ethernet MAC" Csub="Custom" Cversion="2.1.0" Capiversion="2.1.0">
+    <component Cclass="CMSIS Driver" Cgroup="Ethernet MAC" Csub="Custom" Cversion="2.1.0" Capiversion="2.1.0" custom="1">
       <description>Access to #include Driver_ETH_MAC.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_ETH_MAC.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_ETH_MAC.c" select="Ethernet MAC Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="Ethernet PHY" Csub="Custom" Cversion="2.1.0" Capiversion="2.1.0">
+    <component Cclass="CMSIS Driver" Cgroup="Ethernet PHY" Csub="Custom" Cversion="2.1.0" Capiversion="2.1.0" custom="1">
       <description>Access to #include Driver_ETH_PHY.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_ETH_PHY.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_ETH_PHY.c" select="Ethernet PHY Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="USB Device" Csub="Custom" Cversion="2.2.0" Capiversion="2.2.0">
+    <component Cclass="CMSIS Driver" Cgroup="USB Device" Csub="Custom" Cversion="2.2.0" Capiversion="2.2.0" custom="1">
       <description>Access to #include Driver_USBD.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_USBD.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_USBD.c" select="USB Device Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="USB Host" Csub="Custom" Cversion="2.2.0" Capiversion="2.2.0">
+    <component Cclass="CMSIS Driver" Cgroup="USB Host" Csub="Custom" Cversion="2.2.0" Capiversion="2.2.0" custom="1">
       <description>Access to #include Driver_USBH.h file and code template for custom implementation</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_USBH.h" />
         <file category="sourceC" attr="template" name="CMSIS/Driver/DriverTemplates/Driver_USBH.c" select="USB Host Driver"/>
       </files>
     </component>
-    <component Cclass="CMSIS Driver" Cgroup="WiFi" Csub="Custom" Cversion="1.0.0" Capiversion="1.0.0">
+    <component Cclass="CMSIS Driver" Cgroup="WiFi" Csub="Custom" Cversion="1.0.0" Capiversion="1.0.0" custom="1">
       <description>Access to #include Driver_WiFi.h file</description>
       <files>
         <file category="header" name="CMSIS/Driver/Include/Driver_WiFi.h"/>
diff --git a/CMSIS/DoxyGen/Pack/Pack.dxy b/CMSIS/DoxyGen/Pack/Pack.dxy
index da83763..311c0ee 100644
--- a/CMSIS/DoxyGen/Pack/Pack.dxy
+++ b/CMSIS/DoxyGen/Pack/Pack.dxy
@@ -38,7 +38,7 @@
 # could be handy for archiving the generated documentation or if some version
 # control system is used.
 
-PROJECT_NUMBER         = "Version 1.6.0"
+PROJECT_NUMBER         = "Version 1.6.1"
 
 # Using the PROJECT_BRIEF tag one can provide an optional one line description
 # for a project that appears at the top of each page and should give viewer a
diff --git a/CMSIS/DoxyGen/Pack/src/General.txt b/CMSIS/DoxyGen/Pack/src/General.txt
index 9b1923b..1a67dac 100644
--- a/CMSIS/DoxyGen/Pack/src/General.txt
+++ b/CMSIS/DoxyGen/Pack/src/General.txt
@@ -91,6 +91,8 @@
     <td>1.6.1</td>
     <td>Modifications compared to Version 1.6.0
 - added \ref bash_script to support pack generation on Linux or Windows
+- added \b custom attribute to \ref element_component "component element"
+- added \b TrustZone-disabled value to \ref DsecureEnum "software model selection"
     </td>
   </tr>
   <tr>
diff --git a/CMSIS/DoxyGen/Pack/src/apis_schema.txt b/CMSIS/DoxyGen/Pack/src/apis_schema.txt
index 6d51753..631fb0e 100644
--- a/CMSIS/DoxyGen/Pack/src/apis_schema.txt
+++ b/CMSIS/DoxyGen/Pack/src/apis_schema.txt
@@ -9,8 +9,45 @@
 The <b>apis</b> allow to distribute the Application Programming Interface Specifications decoupled from actual implementation. One example is the CMSIS-RTOS API,
 which is specified as part of CMSIS, however, the actual RTOS implementation is provided by different vendors.
 
-Unlike a software component, an API is not selectable. An API consists of a name, a brief description as well as one or more header files, and a document containing
-a detailed specification of the API.
+An API consists of a name, a brief description as well as one or more header files, and a document containing a detailed specification of the API.
+
+The API typically defines one or more header files and optionally an include directory. It should have also related documentation that describes the API.
+
+\b Example:
+
+\code
+<api Cclass="ACloud IF" Cgroup="TRNG" Capiversion="1.2.0"> 
+  <files> 
+    <file category="header" name="include/trng.h"/> 
+    <file category="include" name="include/somestuff"/> 
+    <file category="doc" name="html/trng.html"/> 
+  </files> 
+</api> 
+\endcode
+
+The API can be used either in the same software pack or other software packs.  Having the API definition in one central software pack provides the
+benefit that implementations are consistent.
+
+The include file and directory are <b>included in the application project</b> when a \b component is selected that specifics the same \b Cclass and \b Cgroup.
+The selection of a software component adds therefore both to a project: the files specified by the \ref element_component "component element" and the files specified by the \ref element_api "api element".
+Therefore, the component that is based on the API should not contain the header file that defines the API.
+
+\b Example: this component adds also the api header file above
+
+\code
+<component Cclass="ACloud IF" Cgroup="TRNG" Csub="Emulation" Capiversion="1.1.0"> 
+  <description>Software simulation of random number generator</description> 
+  <files> 
+    <file category="sourceC" name="source/trng_emulation.c"/> 
+  </files> 
+</component> 
+\endcode
+Optionally, it is possible to request a minimum API version using the \b Capiversion attribute.
+
+It is also possible to expose a combination of API definitions.  An example for that is the CMSIS-Driver for Ethernet that is defined as:
+  - <b>Ethernet MAC</b> interface
+  - <b>Ethernet PHY</b> interface
+  - <b>Ethernet</b> interface that defines both MAC and PHY (this defines two API header files)
 
 <p>&nbsp;</p>
 <hr>
@@ -63,7 +100,7 @@
 
 \section element_api /package/apis/api
 
-Application Programming Interfaces (apis) are C/C++ interface specifications that allow components to interwork 
+Application Programming Interfaces (apis) are C/C++ interface specifications that allow components to inter-work 
 by either implementing or using a set of functions, data types, and definitions. This element is mandatory and can exist multiple times.
 
 \b Example:
diff --git a/CMSIS/DoxyGen/Pack/src/components_schema.txt b/CMSIS/DoxyGen/Pack/src/components_schema.txt
index 8b10c23..ab9cc5c 100644
--- a/CMSIS/DoxyGen/Pack/src/components_schema.txt
+++ b/CMSIS/DoxyGen/Pack/src/components_schema.txt
@@ -460,8 +460,8 @@
   </tr>
   <tr>
     <td>Capiversion</td>
-    <td>For components that are based on an API, it defines the version of the API used by this component.
-        It ensures that the API header file with this or any higher version is acceptable for using that component.
+    <td>For components that are based on an \ref pdsc_apis_pg "API header files", it defines the version of the API used by this component.
+        It ensures that the API header file with the same or higher version is acceptable for using that component.
         The version format is described in \ref VersionType "Version Type".		
 	</td>
     <td>VersionType</td>
@@ -474,6 +474,13 @@
     <td>optional</td>
   </tr>
   <tr>
+    <td>custom</td>
+    <td>When set to \token{true}, the component requires a custom implementation. This attribute should suppress the automatic component resolver, so it 
+	requires always manual selection.</td>
+    <td>xs:boolean </td>
+    <td>0..1 </td>
+  </tr>
+  <tr>
     <td>maxInstances</td>
     <td>Maximum allowed instances of a component in a project. Default is \token{1} for one instance. The range is [\token{1..10}].</td>
     <td>xs:integer</td>
@@ -493,12 +500,6 @@
     <td>optional</td>
   </tr>
   <tr>
-    <th>Child Elements</th>
-    <th>Description</th>
-    <th>Type</th>
-    <th>Occurrence</th>
-  </tr>
-  <tr>
     <td>deprecated</td>
     <td>When set to \token{true}, then the component is deprecated and no longer maintained. Default is \token{false} to indicate an actively maintained component.</td>
     <td>xs:boolean </td>
@@ -511,6 +512,12 @@
     <td>1..1</td>
   </tr>
   <tr>
+    <th>Child Elements</th>
+    <th>Description</th>
+    <th>Type</th>
+    <th>Occurrence</th>
+  </tr>
+  <tr>
     <td>RTE_Components_h</td>
     <td>Source code that is copied into the file \ref RTE_Components_h when the component is selected by the run time environment configuration.</td>
     <td>xs:string </td>
diff --git a/CMSIS/DoxyGen/Pack/src/devices_schema.txt b/CMSIS/DoxyGen/Pack/src/devices_schema.txt
index 4262a0e..1e58c5d 100644
--- a/CMSIS/DoxyGen/Pack/src/devices_schema.txt
+++ b/CMSIS/DoxyGen/Pack/src/devices_schema.txt
@@ -2398,14 +2398,13 @@
 
 <p>&nbsp;</p>		
 
-\anchor DsecureEnum <b>Table: Software Model Secure </b>
+\anchor DsecureEnum <b>Table: Software Model Selection </b>
 
 The table shows predefined values that identify whether an application will run in secure mode.
 The values can be used in the elements:
 - \ref element_accept  
 - \ref element_require 
 - \ref element_deny  
-- \ref element_processor
 
 <table class="cmtable" summary="Enumeration: DsecureEnum">
   <tr>
@@ -2414,11 +2413,15 @@
   </tr>
   <tr>
     <td class="XML-Token">Secure</td>
-    <td>Application is built to run in secure mode</td>
+    <td>Application is built to run in secure mode.</td>
   </tr>
   <tr>
     <td class="XML-Token">Non-secure</td>
-    <td>Application is built to run in non-secure mode</td>
+    <td>Application is built to run in non-secure mode.</td>
+  </tr>
+  <tr>
+    <td class="XML-Token">TrustZone-disabled</td>
+    <td>Application is built with TrustZone security disabled.</td>
   </tr>
 </table>