|
@@ -28,6 +28,7 @@
|
|
#include <fdt.h>
|
|
#include <fdt.h>
|
|
#include <libfdt.h>
|
|
#include <libfdt.h>
|
|
#include <fdt_support.h>
|
|
#include <fdt_support.h>
|
|
|
|
+#include <exports.h>
|
|
|
|
|
|
/*
|
|
/*
|
|
* Global data (for the gd->bd)
|
|
* Global data (for the gd->bd)
|
|
@@ -67,6 +68,43 @@ int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
|
|
return fdt_setprop(fdt, nodeoff, prop, val, len);
|
|
return fdt_setprop(fdt, nodeoff, prop, val, len);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#ifdef CONFIG_OF_STDOUT_VIA_ALIAS
|
|
|
|
+static int fdt_fixup_stdout(void *fdt, int choosenoff)
|
|
|
|
+{
|
|
|
|
+ int err = 0;
|
|
|
|
+#ifdef CONFIG_CONS_INDEX
|
|
|
|
+ int node;
|
|
|
|
+ char sername[9] = { 0 };
|
|
|
|
+ const char *path;
|
|
|
|
+
|
|
|
|
+ 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, choosenoff,
|
|
|
|
+ "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;
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
|
|
int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
|
|
{
|
|
{
|
|
int nodeoffset;
|
|
int nodeoffset;
|
|
@@ -157,6 +195,11 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
|
|
printf("WARNING: could not set linux,initrd-end %s.\n",
|
|
printf("WARNING: could not set linux,initrd-end %s.\n",
|
|
fdt_strerror(err));
|
|
fdt_strerror(err));
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+#ifdef CONFIG_OF_STDOUT_VIA_ALIAS
|
|
|
|
+ err = fdt_fixup_stdout(fdt, nodeoffset);
|
|
|
|
+#endif
|
|
|
|
+
|
|
#ifdef OF_STDOUT_PATH
|
|
#ifdef OF_STDOUT_PATH
|
|
err = fdt_setprop(fdt, nodeoffset,
|
|
err = fdt_setprop(fdt, nodeoffset,
|
|
"linux,stdout-path", OF_STDOUT_PATH, strlen(OF_STDOUT_PATH)+1);
|
|
"linux,stdout-path", OF_STDOUT_PATH, strlen(OF_STDOUT_PATH)+1);
|