Re: [U-Boot] [PATCH v3 2/2] fit: Support compat string property in configuration node

2019-05-14 Thread Simon Glass
Hi Julius,

On Mon, 13 May 2019 at 19:15, Julius Werner  wrote:
>
> > Can you please add a change log, as this is a v3 patch.
>
> I didn't change anything in this one. (Should I have not called it v3
> then? Sorry, I'm not familiar with the submission process here. I
> thought letting the individual patches in the series have different
> version numbers for the same set would be more confusing.)

If there are no changes for a version, the patch should say so.

Do you use patman for submission? It does all of this for you reliably
each time.

For this one, there should be a documentation update too. Also, for
the series I think you should add a new example to the docs, since you
are adding two new features.

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v3 2/2] fit: Support compat string property in configuration node

2019-05-13 Thread Julius Werner
> Can you please add a change log, as this is a v3 patch.

I didn't change anything in this one. (Should I have not called it v3
then? Sorry, I'm not familiar with the submission process here. I
thought letting the individual patches in the series have different
version numbers for the same set would be more confusing.)
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH v3 2/2] fit: Support compat string property in configuration node

2019-05-13 Thread Simon Glass
Hi,

> This patch adds support for an optional optimization to compatible
> string matching where the compatible string property from the root node
> of the kernel FDT can be copied into the configuration node of the FIT
> image. This is most useful when using compressed FDTs or when using FDT
> overlays, where the traditional extraction of the compatible string from
> the kernel FDT itself is not easily possible.
>
> Signed-off-by: Julius Werner 
> ---
>  common/image-fit.c | 67 +++---
>  1 file changed, 39 insertions(+), 28 deletions(-)

Can you please add a change log, as this is a v3 patch.

Regards,
Simon
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH v3 2/2] fit: Support compat string property in configuration node

2019-05-03 Thread Julius Werner
This patch adds support for an optional optimization to compatible
string matching where the compatible string property from the root node
of the kernel FDT can be copied into the configuration node of the FIT
image. This is most useful when using compressed FDTs or when using FDT
overlays, where the traditional extraction of the compatible string from
the kernel FDT itself is not easily possible.

Signed-off-by: Julius Werner 
---
 common/image-fit.c | 67 +++---
 1 file changed, 39 insertions(+), 28 deletions(-)

diff --git a/common/image-fit.c b/common/image-fit.c
index 469c5c8f49..d32add6419 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -1522,6 +1522,10 @@ int fit_check_format(const void *fit)
  * compatible list, "foo,bar", matches a compatible string in the root of fdt1.
  * "bim,bam" in fdt2 matches the second string which isn't as good as fdt1.
  *
+ * As an optimization, the compatible property from the FDT's root node can be
+ * copied into the configuration node in the FIT image. This is required to
+ * match configurations with compressed FDTs.
+ *
  * returns:
  * offset to the configuration to use if one was found
  * -1 otherwise
@@ -1554,55 +1558,62 @@ int fit_conf_find_compat(const void *fit, const void 
*fdt)
for (noffset = fdt_next_node(fit, confs_noffset, &ndepth);
(noffset >= 0) && (ndepth > 0);
noffset = fdt_next_node(fit, noffset, &ndepth)) {
-   const void *kfdt;
+   const void *fdt;
const char *kfdt_name;
-   int kfdt_noffset;
+   int kfdt_noffset, compat_noffset;
const char *cur_fdt_compat;
int len;
-   size_t size;
+   size_t sz;
int i;
 
if (ndepth > 1)
continue;
 
-   kfdt_name = fdt_getprop(fit, noffset, "fdt", &len);
-   if (!kfdt_name) {
-   debug("No fdt property found.\n");
-   continue;
-   }
-   kfdt_noffset = fdt_subnode_offset(fit, images_noffset,
- kfdt_name);
-   if (kfdt_noffset < 0) {
-   debug("No image node named \"%s\" found.\n",
- kfdt_name);
-   continue;
-   }
+   /* If there's a compat property in the config node, use that. */
+   if (fdt_getprop(fit, noffset, "compatible", NULL)) {
+   fdt = fit;/* search in FIT image */
+   compat_noffset = noffset; /* search under config node */
+   } else {/* Otherwise extract it from the kernel FDT. */
+   kfdt_name = fdt_getprop(fit, noffset, "fdt", &len);
+   if (!kfdt_name) {
+   debug("No fdt property found.\n");
+   continue;
+   }
+   kfdt_noffset = fdt_subnode_offset(fit, images_noffset,
+ kfdt_name);
+   if (kfdt_noffset < 0) {
+   debug("No image node named \"%s\" found.\n",
+ kfdt_name);
+   continue;
+   }
 
-   if (!fit_image_check_comp(fit, kfdt_noffset, IH_COMP_NONE)) {
-   debug("Can't extract compat from \"%s\" (compressed)\n",
- kfdt_name);
-   continue;
-   }
+   if (!fit_image_check_comp(fit, kfdt_noffset,
+ IH_COMP_NONE)) {
+   debug("Can't extract compat from \"%s\" "
+ "(compressed)\n", kfdt_name);
+   continue;
+   }
 
-   /*
-* Get a pointer to this configuration's fdt.
-*/
-   if (fit_image_get_data(fit, kfdt_noffset, &kfdt, &size)) {
-   debug("Failed to get fdt \"%s\".\n", kfdt_name);
-   continue;
+   /* search in this config's kernel FDT */
+   if (fit_image_get_data(fit, kfdt_noffset, &fdt, &sz)) {
+   debug("Failed to get fdt \"%s\".\n", kfdt_name);
+   continue;
+   }
+
+   compat_noffset = 0;  /* search kFDT under root node */
}
 
len = fdt_compat_len;
cur_fdt_compat = fdt_compat;
/*
 * Look for a match for each U-Boot compatibility string in
-* turn in this configuration'