serial help ?

Alfred Perlstein alfred at
Thu Apr 19 21:39:30 UTC 2007

I'm working on some custom hardware and I'm getting garbled console

I noticed that siocntxwait looks like this:

static void
	Port_t	iobase;
	int	timo;

	 * Wait for any pending transmission to finish.  Required to avoid
	 * the UART lockup bug when the speed is changed, and for normal
	 * transmits.
	timo = 100000;
	while ((inb(iobase + com_lsr) & (LSR_TSRE | LSR_TXRDY))
	       != (LSR_TSRE | LSR_TXRDY) && --timo != 0)

Shouldn't there be some sort of DELAY in there?

My platform has an emulated serial device in hardware, so it
may be that the loop could run a LOT faster than transmit can

any ideas of what the DELAY should be?

- Alfred Perlstein

More information about the freebsd-hackers mailing list