mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-06-09 23:36:03 +09:00
fdt_support: Add multi-serial support for stdout fixup
Currently fdt_fixup_stdout() is using hard-coded CONFIG_CONS_INDEX constant. With multi-serial support, the CONS_INDEX may no longer represent actual console, so we should try to extract port number from the current stdio device name instead of always hard-coding the constant value. Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Acked-by: Gerald Van Baren <vanbaren@cideas.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
parent
da0e5f7ee8
commit
3e303f748c
|
@ -22,6 +22,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
|
#include <stdio_dev.h>
|
||||||
#include <linux/ctype.h>
|
#include <linux/ctype.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
#include <asm/global_data.h>
|
#include <asm/global_data.h>
|
||||||
|
@ -90,6 +91,23 @@ int fdt_find_and_setprop(void *fdt, const char *node, const char *prop,
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_OF_STDOUT_VIA_ALIAS
|
#ifdef CONFIG_OF_STDOUT_VIA_ALIAS
|
||||||
|
|
||||||
|
#ifdef CONFIG_SERIAL_MULTI
|
||||||
|
static void fdt_fill_multisername(char *sername, size_t maxlen)
|
||||||
|
{
|
||||||
|
const char *outname = stdio_devices[stdout]->name;
|
||||||
|
|
||||||
|
if (strcmp(outname, "serial") > 0)
|
||||||
|
strncpy(sername, outname, maxlen);
|
||||||
|
|
||||||
|
/* eserial? */
|
||||||
|
if (strcmp(outname + 1, "serial") > 0)
|
||||||
|
strncpy(sername, outname + 1, maxlen);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
static inline void fdt_fill_multisername(char *sername, size_t maxlen) {}
|
||||||
|
#endif /* CONFIG_SERIAL_MULTI */
|
||||||
|
|
||||||
static int fdt_fixup_stdout(void *fdt, int chosenoff)
|
static int fdt_fixup_stdout(void *fdt, int chosenoff)
|
||||||
{
|
{
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
@ -98,6 +116,8 @@ static int fdt_fixup_stdout(void *fdt, int chosenoff)
|
||||||
char sername[9] = { 0 };
|
char sername[9] = { 0 };
|
||||||
const char *path;
|
const char *path;
|
||||||
|
|
||||||
|
fdt_fill_multisername(sername, sizeof(sername) - 1);
|
||||||
|
if (!sername[0])
|
||||||
sprintf(sername, "serial%d", CONFIG_CONS_INDEX - 1);
|
sprintf(sername, "serial%d", CONFIG_CONS_INDEX - 1);
|
||||||
|
|
||||||
err = node = fdt_path_offset(fdt, "/aliases");
|
err = node = fdt_path_offset(fdt, "/aliases");
|
||||||
|
|
Loading…
Reference in New Issue
Block a user