int console_register(struct console_device *newcdev) { struct device_d *dev = &newcdev->class_dev; int first = 0; char ch; strcpy(dev->name, "cs"); dev->type_data = newcdev; register_device(dev); if (newcdev->setbrg) { newcdev->baudrate_param.set = console_baudrate_set; newcdev->baudrate_param.name = "baudrate"; sprintf(newcdev->baudrate_string, "%d", CONFIG_BAUDRATE); console_baudrate_set(dev, &newcdev->baudrate_param, newcdev->baudrate_string); newcdev->baudrate_param.value = newcdev->baudrate_string; dev_add_param(dev, &newcdev->baudrate_param); } newcdev->active_param.set = console_std_set; newcdev->active_param.name = "active"; newcdev->active_param.value = newcdev->active; dev_add_param(dev, &newcdev->active_param); initialized = CONSOLE_INIT_FULL; #ifdef CONFIG_CONSOLE_ACTIVATE_ALL console_std_set(dev, &newcdev->active_param, "ioe"); #endif #ifdef CONFIG_CONSOLE_ACTIVATE_FIRST if (list_empty(&console_list)) { first = 1; console_std_set(dev, &newcdev->active_param, "ioe"); } #endif list_add_tail(&newcdev->list, &console_list); if (console_output_buffer) { while (kfifo_getc(console_output_buffer, &ch) == 0) console_putc(CONSOLE_STDOUT, ch); kfifo_free(console_output_buffer); console_output_buffer = NULL; } #ifndef CONFIG_HAS_EARLY_INIT if (first) display_banner(); #endif return 0; }
int console_register(struct console_device *newcdev) { struct device_d *dev = &newcdev->class_dev; int activate = 0; if (initialized == CONSOLE_UNINITIALIZED) console_init_early(); dev->id = DEVICE_ID_DYNAMIC; strcpy(dev->name, "cs"); if (newcdev->dev) dev->parent = newcdev->dev; platform_device_register(dev); if (newcdev->setbrg) { newcdev->baudrate = CONFIG_BAUDRATE; dev_add_param_int(dev, "baudrate", console_baudrate_set, NULL, &newcdev->baudrate, "%u", newcdev); } dev_add_param(dev, "active", console_std_set, NULL, 0); if (IS_ENABLED(CONFIG_CONSOLE_ACTIVATE_FIRST)) { if (list_empty(&console_list)) activate = 1; } else if (IS_ENABLED(CONFIG_CONSOLE_ACTIVATE_ALL)) { activate = 1; } if (newcdev->dev && of_device_is_stdout_path(newcdev->dev)) { activate = 1; console_set_stdoutpath(newcdev); } list_add_tail(&newcdev->list, &console_list); if (activate) { if (IS_ENABLED(CONFIG_PARAMETER)) dev_set_param(dev, "active", "ioe"); else console_std_set(dev, NULL, "ioe"); } return 0; }