@@ -152,7 +152,7 @@ follows::
$ cd configurations/
$ ls
- autofdo
+ autofdo last_load_status load unload
$ cd autofdo/
$ ls
description preset1 preset3 preset5 preset7 preset9
@@ -247,9 +247,19 @@ Creating and Loading Custom Configurations
==========================================
Custom configurations and / or features can be dynamically loaded into the
-system by using a loadable module.
+system by using a loadable module, or by loading a binary configuration
+file in configfs.
+
+Loaded configurations can use previously loaded features. The system will
+ensure that it is not possible to unload a feature that is currently in
+use, by enforcing the unload order as the strict reverse of the load order.
+
+An example of a custom configuration module, and generators for binary
+configuration files are found in './samples/coresight'.
+
-An example of a custom configuration is found in ./samples/coresight.
+Using a Loadable Module
+-----------------------
This creates a new configuration that uses the existing built in
strobing feature, but provides a different set of presets.
@@ -258,6 +268,49 @@ When the module is loaded, then the configuration appears in the configfs
file system and is selectable in the same way as the built in configuration
described above.
-Configurations can use previously loaded features. The system will ensure
-that it is not possible to unload a feature that is currently in use, by
-enforcing the unload order as the strict reverse of the load order.
+The file 'coresight-cfg-sample.c' contains the configuration and module
+initialisation code needed to create the loadable module.
+
+This will be built alongside the kernel modules if select in KConfig.
+
+
+Using a Binary Configuration File
+---------------------------------
+
+Building the samples creates the 'coresight-cfg-filegen' program that will
+generate a configuration binary 'example1.cscfg' that can be loaded into the
+system using configfs. The configuration declared in the source file
+'coresight-cfg-filegen.c' is named 'autofdo3' - the name that will be used
+once loaded.
+
+The source files 'coresight-cfg-bufw.h' and 'coresight-cfg-bufw.c' provide a
+standard function to convert a configuration declared in 'C' into the correct
+binary buffer format. These files can be re-used to create new custom
+configurations.
+
+The program 'coresight-cfg-file-read' can read back and print a configuration
+binary. This is built using the reader from the driver code.
+
+There are additional attributes in the configurations directory - load, unload
+and last_load_status that can be used to load and unload configuration
+binary files. To load, 'cat' the binary config into the load attribute::
+
+ $ ls /config/cs-syscfg/configurations/
+ autofdo last_load_status load unload
+ $ cat example1.cscfg > /config/cs-syscfg/configurations/load
+ $ ls /config/cs-syscfg/configurations/
+ autofdo autofdo3 last_load_status load unload
+ $ cat /config/cs-syscfg/configurations/last_load_status
+ OK: configuration file loaded (autofdo3).
+
+To unload, use the same file in the unload attribute::
+
+ $ cat example1.cscfg > /config/cs-syscfg/configurations/unload
+ $ cat /config/cs-syscfg/configurations/last_load_status
+ OK: configuration file unloaded (autofdo3).
+ ls /config/cs-syscfg/configurations/
+ autofdo last_load_status load unload
+
+The generator and reader programs can also be built directly, separately from
+the kernel build by using the 'Makefile.host' file. This allows binaries to be
+created on the host machine when cross compiling.
Add documentation covering the configfs updates that allow binary configuration files to be loaded and unloaded, along with the demonstration programs in samples. Signed-off-by: Mike Leach <mike.leach@linaro.org> --- .../trace/coresight/coresight-config.rst | 65 +++++++++++++++++-- 1 file changed, 59 insertions(+), 6 deletions(-)