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; }

相关