[RFC PATCH V2 1/2] dtc: add 'compat' output option, prints board string
Grant Likely
grant.likely at secretlab.ca
Tue Nov 19 08:58:54 EST 2013
On Mon, 18 Nov 2013 18:38:14 +0000, Jason Cooper <jason at lakedaemon.net> wrote:
> Consumers of the Linux kernel's build products are beginning to hardcode
> the filenames of the dtbs generated. Since the dtb filenames are
> currently the dts filename s/dts/dtb/, this prevents the kernel
> community from renaming dts files as needed.
>
> Let's provide a consistent naming structure for consumers to script
> against. Or at least, as consistent as the dts properties themselves.
>
> With this patch, adding the '-O compat' option to the dtc commandline
> will cause dtc to parse the provided file, and print out the board
> compatible string to stdout.
Can you use the fdtget tool here instead? It will parse and return
property values for a given .dtb.
It certainly makes sense to post this here for the purpose of review,
but any changes to dtc need to be against the upstream dtc repository.
g.
> This will facilitate an 'installdtbs.sh' script in the kernel for naming
> dtb files by their compatible string, eg:
>
> $ dtc -I dtb -O compat arch/arm/boot/dts/armada-370-mirabox.dtb
> globalscale,mirabox
>
> This change will also simplify distribution install scripts that need to
> search through many dtbs to find the right one for a target board.
>
> Signed-off-by: Jason Cooper <jason at lakedaemon.net>
> ---
> changes since v1:
> - made patch against in-tree dtc code to facilitate testing
> - dtc prints compatible string to stdout now, instead of creating symlink
> - should be more flexible for end-users
>
> scripts/dtc/dtc.c | 3 +++
> scripts/dtc/dtc.h | 1 +
> scripts/dtc/flattree.c | 9 +++++++++
> 3 files changed, 13 insertions(+)
>
> diff --git a/scripts/dtc/dtc.c b/scripts/dtc/dtc.c
> index a375683c1534..89264bb0a3dd 100644
> --- a/scripts/dtc/dtc.c
> +++ b/scripts/dtc/dtc.c
> @@ -68,6 +68,7 @@ static void __attribute__ ((noreturn)) usage(void)
> fprintf(stderr, "\t\tOutput formats are:\n");
> fprintf(stderr, "\t\t\tdts - device tree source text\n");
> fprintf(stderr, "\t\t\tdtb - device tree blob\n");
> + fprintf(stderr, "\t\t\tcompat - print board compatible string\n");
> fprintf(stderr, "\t\t\tasm - assembler source\n");
> fprintf(stderr, "\t-V <output version>\n");
> fprintf(stderr, "\t\tBlob version to produce, defaults to %d (relevant for dtb\n\t\tand asm output only)\n", DEFAULT_FDT_VERSION);
> @@ -250,6 +251,8 @@ int main(int argc, char *argv[])
> dt_to_blob(outf, bi, outversion);
> } else if (streq(outform, "asm")) {
> dt_to_asm(outf, bi, outversion);
> + } else if (streq(outform, "compat")) {
> + dt_to_compat(bi);
> } else if (streq(outform, "null")) {
> /* do nothing */
> } else {
> diff --git a/scripts/dtc/dtc.h b/scripts/dtc/dtc.h
> index 3e42a071070e..d4e47c697c2f 100644
> --- a/scripts/dtc/dtc.h
> +++ b/scripts/dtc/dtc.h
> @@ -255,6 +255,7 @@ void process_checks(int force, struct boot_info *bi);
>
> void dt_to_blob(FILE *f, struct boot_info *bi, int version);
> void dt_to_asm(FILE *f, struct boot_info *bi, int version);
> +void dt_to_compat(struct boot_info *bi);
>
> struct boot_info *dt_from_blob(const char *fname);
>
> diff --git a/scripts/dtc/flattree.c b/scripts/dtc/flattree.c
> index 665dad7bb465..bdbd3d7e8964 100644
> --- a/scripts/dtc/flattree.c
> +++ b/scripts/dtc/flattree.c
> @@ -577,6 +577,15 @@ void dt_to_asm(FILE *f, struct boot_info *bi, int version)
> data_free(strbuf);
> }
>
> +void dt_to_compat(struct boot_info *bi)
> +{
> + struct property *prop;
> +
> + prop = get_property(bi->dt, "compatible");
> +
> + printf("%s\n", prop->val.val);
> +}
> +
> struct inbuf {
> char *base, *limit, *ptr;
> };
> --
> 1.8.4.3
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
More information about the linux-arm-kernel
mailing list