static int fdt_fixup_stdout(void *fdt, int chosenoff) { int err = 0; #ifdef CONFIG_CONS_INDEX int node; char sername[9] = { 0 }; const char *path; fdt_fill_multisername(sername, sizeof(sername) - 1); if (!sername[0]) sprintf(sername, "serial%d", CONFIG_CONS_INDEX - 1); err = node = fdt_path_offset(fdt, "/aliases"); if (node >= 0) { int len; path = fdt_getprop(fdt, node, sername, &len); if (path) { char *p = malloc(len); err = -FDT_ERR_NOSPACE; if (p) { memcpy(p, path, len); err = fdt_setprop(fdt, chosenoff, "linux,stdout-path", p, len); free(p); } } else { err = len; } } #endif if (err < 0) printf("WARNING: could not set linux,stdout-path %s.\n", fdt_strerror(err)); return err; }
static int fdt_fixup_stdout(void *fdt, int chosenoff) { int err; int aliasoff; char sername[9] = { 0 }; const void *path; int len; char tmp[256]; /* long enough */ fdt_fill_multisername(sername, sizeof(sername) - 1); if (!sername[0]) sprintf(sername, "serial%d", CONFIG_CONS_INDEX - 1); aliasoff = fdt_path_offset(fdt, "/aliases"); if (aliasoff < 0) { err = aliasoff; goto error; } path = fdt_getprop(fdt, aliasoff, sername, &len); if (!path) { err = len; goto error; } /* fdt_setprop may break "path" so we copy it to tmp buffer */ memcpy(tmp, path, len); err = fdt_setprop(fdt, chosenoff, "linux,stdout-path", tmp, len); error: if (err < 0) printf("WARNING: could not set linux,stdout-path %s.\n", fdt_strerror(err)); return err; }