Changeset View
Changeset View
Standalone View
Standalone View
stand/fdt/fdt_loader_cmd.c
Show First 20 Lines • Show All 275 Lines • ▼ Show 20 Lines | fdt_load_dtb_file(const char * filename) | ||||
if (oldbfp) | if (oldbfp) | ||||
file_discard(oldbfp); | file_discard(oldbfp); | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
fdt_load_dtb_overlay(const char * filename) | fdt_load_dtb_overlay(const char * filename) | ||||
{ | { | ||||
struct preloaded_file *bfp, *oldbfp; | struct preloaded_file *bfp; | ||||
struct fdt_header header; | struct fdt_header header; | ||||
int err; | int err; | ||||
debugf("fdt_load_dtb_overlay(%s)\n", filename); | debugf("fdt_load_dtb_overlay(%s)\n", filename); | ||||
oldbfp = file_findfile(filename, "dtbo"); | |||||
/* Attempt to load and validate a new dtb from a file. */ | /* Attempt to load and validate a new dtb from a file. */ | ||||
if ((bfp = file_loadraw(filename, "dtbo", 1)) == NULL) { | if ((bfp = file_loadraw(filename, "dtbo", 1)) == NULL) { | ||||
printf("failed to load file '%s'\n", filename); | printf("failed to load file '%s'\n", filename); | ||||
return (1); | return (1); | ||||
} | } | ||||
COPYOUT(bfp->f_addr, &header, sizeof(header)); | COPYOUT(bfp->f_addr, &header, sizeof(header)); | ||||
err = fdt_check_header(&header); | err = fdt_check_header(&header); | ||||
if (err < 0) { | if (err < 0) { | ||||
file_discard(bfp); | file_discard(bfp); | ||||
if (err == -FDT_ERR_BADVERSION) | if (err == -FDT_ERR_BADVERSION) | ||||
printf("incompatible blob version: %d, should be: %d\n", | printf("incompatible blob version: %d, should be: %d\n", | ||||
fdt_version(fdtp), FDT_LAST_SUPPORTED_VERSION); | fdt_version(fdtp), FDT_LAST_SUPPORTED_VERSION); | ||||
else | else | ||||
printf("error validating blob: %s\n", | printf("error validating blob: %s\n", | ||||
fdt_strerror(err)); | fdt_strerror(err)); | ||||
return (1); | return (1); | ||||
} | } | ||||
/* A new dtb was validated, discard any previous file. */ | |||||
if (oldbfp) | |||||
file_discard(oldbfp); | |||||
return (0); | return (0); | ||||
} | } | ||||
int | int | ||||
fdt_load_dtb_overlays(const char * filenames) | fdt_load_dtb_overlays(const char * filenames) | ||||
{ | { | ||||
char *names; | char *names; | ||||
▲ Show 20 Lines • Show All 1,404 Lines • Show Last 20 Lines |