-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
scripts/dtc: Update to upstream version v1.6.0-51-g183df9e9c2b9
This adds the following commits from upstream: 183df9e9c2b9 gitignore: Ignore the swp files 0db6d09584e1 gitignore: Add cscope files 307afa1a7be8 Update Jon Loeliger's email ca16a723fa9d fdtdump: Fix gcc11 warning 64990a272e8f srcpos: increase MAX_SRCFILE_DEPTH 163f0469bf2e dtc: Allow overlays to have .dtbo extension 3b01518e688d Set last_comp_version correctly in new dtb and fix potential version issues in fdt_open_into f7e5737f26aa tests: Fix overlay_overlay_nosugar test case 7cd5d5fe43d5 libfdt: Tweak description of assume-aligned load helpers a7c404099349 libfdt: Internally perform potentially unaligned loads bab85e48a6f4 meson: increase default timeout for tests f8b46098824d meson: do not assume python is installed, skip tests 30a56bce4f0b meson: fix -Wall warning 5e735860c478 libfdt: Check for 8-byte address alignment in fdt_ro_probe_() 67849a327927 build-sys: add meson build 05874d08212d pylibfdt: allow build out of tree 3bc3a6b9fe0c dtc: Fix signedness comparisons warnings: Wrap (-1) e1147b159e92 dtc: Fix signedness comparisons warnings: change types 04cf1fdc0fcf convert-dtsv0: Fix signedness comparisons warning b30013edb878 libfdt: Fix kernel-doc comments Signed-off-by: Rob Herring <robh@kernel.org>
- Loading branch information
Rob Herring
committed
Feb 4, 2021
1 parent
b775f49
commit 79edff1
Showing
15 changed files
with
350 additions
and
71 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,208 @@ | ||
// SPDX-License-Identifier: GPL-2.0-or-later | ||
/* | ||
* Copyright (c) 2017 Konsulko Group Inc. All rights reserved. | ||
* | ||
* Author: | ||
* Pantelis Antoniou <pantelis.antoniou@konsulko.com> | ||
*/ | ||
|
||
#include <assert.h> | ||
#include <ctype.h> | ||
#include <getopt.h> | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <string.h> | ||
#include <inttypes.h> | ||
|
||
#include <libfdt.h> | ||
|
||
#include "util.h" | ||
|
||
#define BUF_INCREMENT 65536 | ||
|
||
/* Usage related data. */ | ||
static const char usage_synopsis[] = | ||
"apply a number of overlays to a base blob\n" | ||
" fdtoverlay <options> [<overlay.dtbo> [<overlay.dtbo>]]\n" | ||
"\n" | ||
USAGE_TYPE_MSG; | ||
static const char usage_short_opts[] = "i:o:v" USAGE_COMMON_SHORT_OPTS; | ||
static struct option const usage_long_opts[] = { | ||
{"input", required_argument, NULL, 'i'}, | ||
{"output", required_argument, NULL, 'o'}, | ||
{"verbose", no_argument, NULL, 'v'}, | ||
USAGE_COMMON_LONG_OPTS, | ||
}; | ||
static const char * const usage_opts_help[] = { | ||
"Input base DT blob", | ||
"Output DT blob", | ||
"Verbose messages", | ||
USAGE_COMMON_OPTS_HELP | ||
}; | ||
|
||
int verbose = 0; | ||
|
||
static void *apply_one(char *base, const char *overlay, size_t *buf_len, | ||
const char *name) | ||
{ | ||
char *tmp = NULL; | ||
char *tmpo; | ||
int ret; | ||
|
||
/* | ||
* We take a copies first, because a a failed apply can trash | ||
* both the base blob and the overlay | ||
*/ | ||
tmpo = xmalloc(fdt_totalsize(overlay)); | ||
|
||
do { | ||
tmp = xrealloc(tmp, *buf_len); | ||
ret = fdt_open_into(base, tmp, *buf_len); | ||
if (ret) { | ||
fprintf(stderr, | ||
"\nFailed to make temporary copy: %s\n", | ||
fdt_strerror(ret)); | ||
goto fail; | ||
} | ||
|
||
memcpy(tmpo, overlay, fdt_totalsize(overlay)); | ||
|
||
ret = fdt_overlay_apply(tmp, tmpo); | ||
if (ret == -FDT_ERR_NOSPACE) { | ||
*buf_len += BUF_INCREMENT; | ||
} | ||
} while (ret == -FDT_ERR_NOSPACE); | ||
|
||
if (ret) { | ||
fprintf(stderr, "\nFailed to apply '%s': %s\n", | ||
name, fdt_strerror(ret)); | ||
goto fail; | ||
} | ||
|
||
free(base); | ||
free(tmpo); | ||
return tmp; | ||
|
||
fail: | ||
free(tmpo); | ||
if (tmp) | ||
free(tmp); | ||
|
||
return NULL; | ||
} | ||
static int do_fdtoverlay(const char *input_filename, | ||
const char *output_filename, | ||
int argc, char *argv[]) | ||
{ | ||
char *blob = NULL; | ||
char **ovblob = NULL; | ||
size_t buf_len; | ||
int i, ret = -1; | ||
|
||
blob = utilfdt_read(input_filename, &buf_len); | ||
if (!blob) { | ||
fprintf(stderr, "\nFailed to read '%s'\n", input_filename); | ||
goto out_err; | ||
} | ||
if (fdt_totalsize(blob) > buf_len) { | ||
fprintf(stderr, | ||
"\nBase blob is incomplete (%lu / %" PRIu32 " bytes read)\n", | ||
(unsigned long)buf_len, fdt_totalsize(blob)); | ||
goto out_err; | ||
} | ||
|
||
/* allocate blob pointer array */ | ||
ovblob = xmalloc(sizeof(*ovblob) * argc); | ||
memset(ovblob, 0, sizeof(*ovblob) * argc); | ||
|
||
/* read and keep track of the overlay blobs */ | ||
for (i = 0; i < argc; i++) { | ||
size_t ov_len; | ||
ovblob[i] = utilfdt_read(argv[i], &ov_len); | ||
if (!ovblob[i]) { | ||
fprintf(stderr, "\nFailed to read '%s'\n", argv[i]); | ||
goto out_err; | ||
} | ||
if (fdt_totalsize(ovblob[i]) > ov_len) { | ||
fprintf(stderr, | ||
"\nOverlay '%s' is incomplete (%lu / %" PRIu32 " bytes read)\n", | ||
argv[i], (unsigned long)ov_len, | ||
fdt_totalsize(ovblob[i])); | ||
goto out_err; | ||
} | ||
} | ||
|
||
buf_len = fdt_totalsize(blob); | ||
|
||
/* apply the overlays in sequence */ | ||
for (i = 0; i < argc; i++) { | ||
blob = apply_one(blob, ovblob[i], &buf_len, argv[i]); | ||
if (!blob) | ||
goto out_err; | ||
} | ||
|
||
fdt_pack(blob); | ||
ret = utilfdt_write(output_filename, blob); | ||
if (ret) | ||
fprintf(stderr, "\nFailed to write '%s'\n", | ||
output_filename); | ||
|
||
out_err: | ||
if (ovblob) { | ||
for (i = 0; i < argc; i++) { | ||
if (ovblob[i]) | ||
free(ovblob[i]); | ||
} | ||
free(ovblob); | ||
} | ||
free(blob); | ||
|
||
return ret; | ||
} | ||
|
||
int main(int argc, char *argv[]) | ||
{ | ||
int opt, i; | ||
char *input_filename = NULL; | ||
char *output_filename = NULL; | ||
|
||
while ((opt = util_getopt_long()) != EOF) { | ||
switch (opt) { | ||
case_USAGE_COMMON_FLAGS | ||
|
||
case 'i': | ||
input_filename = optarg; | ||
break; | ||
case 'o': | ||
output_filename = optarg; | ||
break; | ||
case 'v': | ||
verbose = 1; | ||
break; | ||
} | ||
} | ||
|
||
if (!input_filename) | ||
usage("missing input file"); | ||
|
||
if (!output_filename) | ||
usage("missing output file"); | ||
|
||
argv += optind; | ||
argc -= optind; | ||
|
||
if (argc <= 0) | ||
usage("missing overlay file(s)"); | ||
|
||
if (verbose) { | ||
printf("input = %s\n", input_filename); | ||
printf("output = %s\n", output_filename); | ||
for (i = 0; i < argc; i++) | ||
printf("overlay[%d] = %s\n", i, argv[i]); | ||
} | ||
|
||
if (do_fdtoverlay(input_filename, output_filename, argc, argv)) | ||
return 1; | ||
|
||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.