.

.

.

common/console.c

#ifdef CONFIG_SYS_CONSOLE_IS_IN_ENV
/* Called after the relocation - use desired console functions */
int console_init_r(void)
{
        char *stdinname, *stdoutname, *stderrname;
        struct stdio_dev *inputdev = NULL, *outputdev = NULL, *errdev = NULL;
#ifdef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
        int i;
#endif /* CONFIG_SYS_CONSOLE_ENV_OVERWRITE */
#ifdef CONFIG_CONSOLE_MUX
        int iomux_err = 0;
#endif

        /* set default handlers at first */
        gd->jt->getc  = serial_getc;
        gd->jt->tstc  = serial_tstc;
        gd->jt->putc  = serial_putc;
        gd->jt->puts  = serial_puts;
        gd->jt->printf = serial_printf;

        /* stdin stdout and stderr are in environment */
        /* scan for it */
        stdinname  = getenv("stdin");
        stdoutname = getenv("stdout");
        stderrname = getenv("stderr");

        if (OVERWRITE_CONSOLE == 0) {   /* if not overwritten by config switch */
                inputdev  = search_device(DEV_FLAGS_INPUT,  stdinname);
                outputdev = search_device(DEV_FLAGS_OUTPUT, stdoutname);
                errdev    = search_device(DEV_FLAGS_OUTPUT, stderrname);
#ifdef CONFIG_CONSOLE_MUX
                iomux_err = iomux_doenv(stdin, stdinname);
                iomux_err += iomux_doenv(stdout, stdoutname);
                iomux_err += iomux_doenv(stderr, stderrname);
                if (!iomux_err)
                        /* Successful, so skip all the code below. */
                        goto done;
#endif
        }
        /* if the devices are overwritten or not found, use default device */
        if (inputdev == NULL) {
                inputdev  = search_device(DEV_FLAGS_INPUT,  "serial");
        }
        if (outputdev == NULL) {
                outputdev = search_device(DEV_FLAGS_OUTPUT, "serial");
        }
        if (errdev == NULL) {
                errdev    = search_device(DEV_FLAGS_OUTPUT, "serial");
        }
        /* Initializes output console first */
        if (outputdev != NULL) {
                /* need to set a console if not done above. */
                console_doenv(stdout, outputdev);
        }
        if (errdev != NULL) {
                /* need to set a console if not done above. */
                console_doenv(stderr, errdev);
        }
        if (inputdev != NULL) {
                /* need to set a console if not done above. */
                console_doenv(stdin, inputdev);
        }

#ifdef CONFIG_CONSOLE_MUX
done:
#endif

#ifndef CONFIG_SYS_CONSOLE_INFO_QUIET
        stdio_print_current_devices();
#endif /* CONFIG_SYS_CONSOLE_INFO_QUIET */
#ifdef CONFIG_VIDCONSOLE_AS_LCD
        if (strstr(stdoutname, "lcd"))
                printf("Warning: Please change 'lcd' to 'vidconsole' in stdout/stderr environment vars\n");
#endif

#ifdef CONFIG_SYS_CONSOLE_ENV_OVERWRITE
        /* set the environment variables (will overwrite previous env settings) */
        for (i = 0; i < 3; i++) {
                setenv(stdio_names[i], stdio_devices[i]->name);
        }
#endif /* CONFIG_SYS_CONSOLE_ENV_OVERWRITE */

        gd->flags |= GD_FLG_DEVINIT;    /* device initialization completed */

#if 0
        /* If nothing usable installed, use only the initial console */
        if ((stdio_devices[stdin] == NULL) && (stdio_devices[stdout] == NULL))
                return 0;
#endif
        print_pre_console_buffer(PRE_CONSOLE_FLUSHPOINT2_EVERYTHING_BUT_SERIAL);
        return 0;
}

#else /* CONFIG_SYS_CONSOLE_IS_IN_ENV */

results matching ""

    No results matching ""