Hello all The function static int size_fifo(struct async_struct *info) { ... ends as follows: serial_outp(info, UART_LCR, UART_LCR_DLAB); serial_outp(info, UART_DLL, old_dll); serial_outp(info, UART_DLM, old_dlm); return count; } Which means, that DLAB is not re-set, and, in particular, all subsequent read/write operations on offsets 0 and 1 will not affect the data and interrupt enable registers, but the divisor latch register... Or is this register somehow magically restored elsewhere or by the hardware (say, on an interrupt)? This function seems to be only called for startech UARTs. Thanks Guennadi --------------------------------- Guennadi Liakhovetski, Ph.D. DSA Daten- und Systemtechnik GmbH Pascalstr. 28 D-52076 Aachen Germany -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/