diff --git a/docs/components/fconf/fconf_properties.rst b/docs/components/fconf/fconf_properties.rst new file mode 100644 index 000000000..5c28a7ae5 --- /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: + - 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: + - Physical loading base address of the configuration. + +- max-size [mandatory] + - value type: + - Maximum size of the configuration. + +- id [mandatory] + - value type: + - Image ID of the configuration. + diff --git a/docs/components/fconf.rst b/docs/components/fconf/index.rst similarity index 91% rename from docs/components/fconf.rst rename to docs/components/fconf/index.rst index 7352ac37a..0da56ec3b 100644 --- a/docs/components/fconf.rst +++ b/docs/components/fconf/index.rst @@ -81,6 +81,10 @@ Then, a wrapper has to be provided to match the ``FCONF_GET_PROPERTY()`` macro: 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 ``fconf_load_config()`` must be called to load the device tree containing 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 @@ can be used to fill the C data structure with the data from the config |DTB|. 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 @@ belong. 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 49986ca00..e3ce61489 100644 --- a/docs/components/index.rst +++ b/docs/components/index.rst @@ -10,7 +10,7 @@ Components 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 03aaf9bb6..7b5bd6ec9 100644 --- a/lib/fconf/fconf_dyn_cfg_getter.c +++ b/lib/fconf/fconf_dyn_cfg_getter.c @@ -48,8 +48,8 @@ int fconf_populate_dtb_registry(uintptr_t config) /* 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 2f2d265c5..ff079ab6f 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 98ea85760..7c111085d 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 147c8f366..1727e2e24 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 cab6f2bf4..4e460aa78 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 81e4cc12d..bb544a410 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 81e4cc12d..bb544a410 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 2719ab415..a5b4a583d 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 ba74b75bc..1f460f185 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 605cc08b7..da933e546 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 c5702ca3d..306bd89b9 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 {