Merge changes from topic "fdt_wrappers_rework" into integration

* changes:
  plat/stm32: Use generic fdt_get_stdout_node_offset()
  fdt/wrappers: Introduce code to find UART DT node
  plat/stm32: Use generic fdt_get_reg_props_by_name()
diff --git a/Makefile b/Makefile
index f01a9ae..5c4f36c 100644
--- a/Makefile
+++ b/Makefile
@@ -94,12 +94,6 @@
 
 export Q ECHO
 
-# Default build string (git branch and commit)
-ifeq (${BUILD_STRING},)
-        BUILD_STRING	:=	$(shell git describe --always --dirty --tags 2> /dev/null)
-endif
-VERSION_STRING		:=	v${VERSION_MAJOR}.${VERSION_MINOR}(${BUILD_TYPE}):${BUILD_STRING}
-
 # The cert_create tool cannot generate certificates individually, so we use the
 # target 'certificates' to create them all
 ifneq (${GENERATE_COT},0)
@@ -281,6 +275,12 @@
         LOG_LEVEL	:=	20
 endif
 
+# Default build string (git branch and commit)
+ifeq (${BUILD_STRING},)
+        BUILD_STRING  :=  $(shell git describe --always --dirty --tags 2> /dev/null)
+endif
+VERSION_STRING    :=  v${VERSION_MAJOR}.${VERSION_MINOR}(${BUILD_TYPE}):${BUILD_STRING}
+
 ifeq (${AARCH32_INSTRUCTION_SET},A32)
 TF_CFLAGS_aarch32	+=	-marm
 else ifeq (${AARCH32_INSTRUCTION_SET},T32)
diff --git a/docs/components/fconf/fconf_properties.rst b/docs/components/fconf/fconf_properties.rst
new file mode 100644
index 0000000..5c28a7a
--- /dev/null
+++ b/docs/components/fconf/fconf_properties.rst
@@ -0,0 +1,32 @@
+DTB binding for FCONF properties
+================================
+
+This document describes the device tree format of |FCONF| properties. These
+properties are not related to a specific platform and can be queried from
+common code.
+
+Dynamic configuration
+~~~~~~~~~~~~~~~~~~~~~
+
+The |FCONF| framework expects a *dtb-registry* node with the following field:
+
+- compatible [mandatory]
+   - value type: <string>
+   - Must be the string "fconf,dyn_cfg-dtb_registry".
+
+Then a list of subnodes representing a configuration |DTB|, which can be used
+by |FCONF|. Each subnode should be named according to the information it
+contains, and must be formed with the following fields:
+
+- load-address [mandatory]
+    - value type: <u64>
+    - Physical loading base address of the configuration.
+
+- max-size [mandatory]
+    - value type: <u32>
+    - Maximum size of the configuration.
+
+- id [mandatory]
+    - value type: <u32>
+    - Image ID of the configuration.
+
diff --git a/docs/components/fconf.rst b/docs/components/fconf/index.rst
similarity index 90%
rename from docs/components/fconf.rst
rename to docs/components/fconf/index.rst
index 7352ac3..0da56ec 100644
--- a/docs/components/fconf.rst
+++ b/docs/components/fconf/index.rst
@@ -81,6 +81,10 @@
 This second level wrapper can be used to remap the ``FCONF_GET_PROPERTY()`` to
 anything appropriate: structure, array, function, etc..
 
+To ensure a good interpretation of the properties, this documentation must
+explain how the properties are described for a specific backend. Refer to the
+:ref:`binding-document` section for more information and example.
+
 Loading the property device tree
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
@@ -88,7 +92,7 @@
 the properties' values. This must be done after the io layer is initialized, as
 the |DTB| is stored on an external device (FIP).
 
-.. uml:: ../resources/diagrams/plantuml/fconf_bl1_load_config.puml
+.. uml:: ../../resources/diagrams/plantuml/fconf_bl1_load_config.puml
 
 Populating the properties
 ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -98,7 +102,7 @@
 This function will call all the ``populate()`` callbacks which have been
 registered with ``FCONF_REGISTER_POPULATOR()`` as described above.
 
-.. uml:: ../resources/diagrams/plantuml/fconf_bl2_populate.puml
+.. uml:: ../../resources/diagrams/plantuml/fconf_bl2_populate.puml
 
 Namespace guidance
 ~~~~~~~~~~~~~~~~~~
@@ -129,3 +133,12 @@
 Example:
  - Arm io framework: arm.io_policies.bl31_id
 
+.. _binding-document:
+
+Properties binding information
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. toctree::
+  :maxdepth: 1
+
+  fconf_properties
diff --git a/docs/components/index.rst b/docs/components/index.rst
index 49986ca..e3ce614 100644
--- a/docs/components/index.rst
+++ b/docs/components/index.rst
@@ -10,7 +10,7 @@
    arm-sip-service
    debugfs-design
    exception-handling
-   fconf
+   fconf/index
    firmware-update
    platform-interrupt-controller-API
    ras
diff --git a/lib/fconf/fconf_dyn_cfg_getter.c b/lib/fconf/fconf_dyn_cfg_getter.c
index 03aaf9b..7b5bd6e 100644
--- a/lib/fconf/fconf_dyn_cfg_getter.c
+++ b/lib/fconf/fconf_dyn_cfg_getter.c
@@ -48,8 +48,8 @@
 	/* As libfdt use void *, we can't avoid this cast */
 	const void *dtb = (void *)config;
 
-	/* Find the node offset point to "arm,dyn_cfg-dtb_registry" compatible property */
-	const char *compatible_str = "arm,dyn_cfg-dtb_registry";
+	/* Find the node offset point to "fconf,dyn_cfg-dtb_registry" compatible property */
+	const char *compatible_str = "fconf,dyn_cfg-dtb_registry";
 	node = fdt_node_offset_by_compatible(dtb, -1, compatible_str);
 	if (node < 0) {
 		ERROR("FCONF: Can't find %s compatible in dtb\n", compatible_str);
diff --git a/plat/arm/board/a5ds/fdts/a5ds_fw_config.dts b/plat/arm/board/a5ds/fdts/a5ds_fw_config.dts
index 2f2d265..ff079ab 100644
--- a/plat/arm/board/a5ds/fdts/a5ds_fw_config.dts
+++ b/plat/arm/board/a5ds/fdts/a5ds_fw_config.dts
@@ -10,7 +10,7 @@
 
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained in this dtb */
 		tb_fw-config {
diff --git a/plat/arm/board/fvp/fdts/fvp_fw_config.dts b/plat/arm/board/fvp/fdts/fvp_fw_config.dts
index 98ea857..7c11108 100644
--- a/plat/arm/board/fvp/fdts/fvp_fw_config.dts
+++ b/plat/arm/board/fvp/fdts/fvp_fw_config.dts
@@ -10,7 +10,7 @@
 
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained on this dtb */
 		tb_fw-config {
diff --git a/plat/arm/board/fvp_ve/fdts/fvp_ve_fw_config.dts b/plat/arm/board/fvp_ve/fdts/fvp_ve_fw_config.dts
index 147c8f3..1727e2e 100644
--- a/plat/arm/board/fvp_ve/fdts/fvp_ve_fw_config.dts
+++ b/plat/arm/board/fvp_ve/fdts/fvp_ve_fw_config.dts
@@ -10,7 +10,7 @@
 
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained on this dtb */
 		tb_fw-config {
diff --git a/plat/arm/board/juno/fdts/juno_fw_config.dts b/plat/arm/board/juno/fdts/juno_fw_config.dts
index cab6f2b..4e460aa 100644
--- a/plat/arm/board/juno/fdts/juno_fw_config.dts
+++ b/plat/arm/board/juno/fdts/juno_fw_config.dts
@@ -10,7 +10,7 @@
 
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained on this dtb */
 		tb_fw-config {
diff --git a/plat/arm/board/rddaniel/fdts/rddaniel_fw_config.dts b/plat/arm/board/rddaniel/fdts/rddaniel_fw_config.dts
index 81e4cc1..bb544a4 100644
--- a/plat/arm/board/rddaniel/fdts/rddaniel_fw_config.dts
+++ b/plat/arm/board/rddaniel/fdts/rddaniel_fw_config.dts
@@ -10,7 +10,7 @@
 
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained on this dtb */
 		tb_fw-config {
diff --git a/plat/arm/board/rddanielxlr/fdts/rddanielxlr_fw_config.dts b/plat/arm/board/rddanielxlr/fdts/rddanielxlr_fw_config.dts
index 81e4cc1..bb544a4 100644
--- a/plat/arm/board/rddanielxlr/fdts/rddanielxlr_fw_config.dts
+++ b/plat/arm/board/rddanielxlr/fdts/rddanielxlr_fw_config.dts
@@ -10,7 +10,7 @@
 
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained on this dtb */
 		tb_fw-config {
diff --git a/plat/arm/board/rde1edge/fdts/rde1edge_fw_config.dts b/plat/arm/board/rde1edge/fdts/rde1edge_fw_config.dts
index 2719ab4..a5b4a58 100644
--- a/plat/arm/board/rde1edge/fdts/rde1edge_fw_config.dts
+++ b/plat/arm/board/rde1edge/fdts/rde1edge_fw_config.dts
@@ -10,7 +10,7 @@
 
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained on this dtb */
 		tb_fw-config {
diff --git a/plat/arm/board/rdn1edge/fdts/rdn1edge_fw_config.dts b/plat/arm/board/rdn1edge/fdts/rdn1edge_fw_config.dts
index ba74b75..1f460f1 100644
--- a/plat/arm/board/rdn1edge/fdts/rdn1edge_fw_config.dts
+++ b/plat/arm/board/rdn1edge/fdts/rdn1edge_fw_config.dts
@@ -9,7 +9,7 @@
 /dts-v1/;
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained on this dtb */
 		tb_fw-config {
diff --git a/plat/arm/board/sgi575/fdts/sgi575_fw_config.dts b/plat/arm/board/sgi575/fdts/sgi575_fw_config.dts
index 605cc08..da933e5 100644
--- a/plat/arm/board/sgi575/fdts/sgi575_fw_config.dts
+++ b/plat/arm/board/sgi575/fdts/sgi575_fw_config.dts
@@ -10,7 +10,7 @@
 
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained on this dtb */
 		tb_fw-config {
diff --git a/plat/arm/board/sgm775/fdts/sgm775_fw_config.dts b/plat/arm/board/sgm775/fdts/sgm775_fw_config.dts
index c5702ca..306bd89 100644
--- a/plat/arm/board/sgm775/fdts/sgm775_fw_config.dts
+++ b/plat/arm/board/sgm775/fdts/sgm775_fw_config.dts
@@ -10,7 +10,7 @@
 
 / {
 	dtb-registry {
-		compatible = "arm,dyn_cfg-dtb_registry";
+		compatible = "fconf,dyn_cfg-dtb_registry";
 
 		/* tb_fw_config is temporarily contained on this dtb */
 		tb_fw-config {
diff --git a/plat/renesas/rcar/bl2_plat_setup.c b/plat/renesas/rcar/bl2_plat_setup.c
index 8910967..add2a4f 100644
--- a/plat/renesas/rcar/bl2_plat_setup.c
+++ b/plat/renesas/rcar/bl2_plat_setup.c
@@ -134,6 +134,7 @@
 
 	while (--i >= 0)
 		*string++ = num_buf[i];
+	*string = 0;
 }
 
 #if (RCAR_LOSSY_ENABLE == 1)