int console_init( Console* cons ) { ptr base = 0; int status = 0; uint channel = 0; uint control = 0; base = console_getbase( cons ); channel = cons->channel == CONSOLE_1 ? COM1 : COM2; /* Reset port first */ cons->write_bytes = 0; cons->read_bytes = 0; status = bwsetspeed( channel, cons->speed ); control = HW_READ( base, UART_LCRH_OFFSET ); if( cons->fifo ){ control |= FEN_MASK; } else { control &= ( ~FEN_MASK ); } if( cons->dbl_stop ){ control |= STP2_MASK; } HW_WRITE( base, UART_LCRH_OFFSET, control ); ASSERT( status == ERR_NONE ); /* Leave no garbage */ console_drain( cons ); return ERR_NONE; }
int io_init() { iobuf_init( &otrain ); iobuf_init( &oterm ); bwsetspeed( COM1, 2400 ); if ( bwsetfifo( COM1, OFF ) || bwsetfifo( COM2, OFF ) ){ return -1; } TERM_FLAG = (int *)( UART2_BASE + UART_FLAG_OFFSET ); TERM_DATA = (int *)( UART2_BASE + UART_DATA_OFFSET ); TRAIN_FLAG = (int *)( UART1_BASE + UART_FLAG_OFFSET ); TRAIN_DATA = (int *)( UART1_BASE + UART_DATA_OFFSET ); return 0; }