struct console __init *bfin_earlyserial_init(unsigned int port, unsigned int cflag) { struct bfin_serial_port *uart; struct ktermios t; if (port == -1 || port >= nr_active_ports) port = 0; bfin_serial_init_ports(); bfin_early_serial_console.index = port; uart = &bfin_serial_ports[port]; t.c_cflag = cflag; t.c_iflag = 0; t.c_oflag = 0; t.c_lflag = ICANON; t.c_line = port; bfin_serial_set_termios(&uart->port, &t, &t); return &bfin_early_serial_console; }
struct console __init *bfin_earlyserial_init(unsigned int port, unsigned int cflag) { struct ktermios t; char port_name[20]; if (port < 0 || port >= BFIN_UART_NR_PORTS) return NULL; /* * Only probe resource of the given port in earlyprintk boot arg. * The expected port id should be indicated in port name string. */ snprintf(port_name, 20, DRIVER_NAME ".%d", port); early_platform_driver_register(&early_bfin_earlyprintk_driver, port_name); early_platform_driver_probe(CLASS_BFIN_EARLYPRINTK, 1, 0); if (!bfin_earlyprintk_port.port.membase) return NULL; #ifdef CONFIG_SERIAL_BFIN_CONSOLE /* * If we are using early serial, don't let the normal console rewind * log buffer, since that causes things to be printed multiple times */ bfin_serial_console.flags &= ~CON_PRINTBUFFER; #endif bfin_early_serial_console.index = port; t.c_cflag = cflag; t.c_iflag = 0; t.c_oflag = 0; t.c_lflag = ICANON; t.c_line = port; bfin_serial_set_termios(&bfin_earlyprintk_port.port, &t, &t); return &bfin_early_serial_console; }