u-boot serial_check_stdout函数


#if CONFIG_IS_ENABLED(SERIAL_PRESENT)
static int serial_check_stdout(const void *blob, struct udevice **devp)
{
    int node = -1;
    const char *str, *p, *name;
    int namelen;

    /* Check for a chosen console */
    str = fdtdec_get_chosen_prop(blob, "stdout-path");
    if (str) {
        p = strchr(str, ':');
        namelen = p ? p - str : strlen(str);
        node = fdt_path_offset_namelen(blob, str, namelen);

        if (node < 0) {
            /*
             * Deal with things like
             *  stdout-path = "serial0:115200n8";
             *
             * We need to look up the alias and then follow it to
             * the correct node.
             */
            name = fdt_get_alias_namelen(blob, str, namelen);
            if (name)
                node = fdt_path_offset(blob, name);
        }
    }

    if (node < 0)
        node = fdt_path_offset(blob, "console");
    if (!uclass_get_device_by_of_offset(UCLASS_SERIAL, node, devp))
        return 0;

    /*
     * If the console is not marked to be bound before relocation, bind it
     * anyway.
     */
    if (node > 0 && !lists_bind_fdt(gd->dm_root, offset_to_ofnode(node),
                    devp, false)) {
        if (!device_probe(*devp))
            return 0;
    }

    return -ENODEV;
}
posted @   liujunhuasd  阅读(137)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示