Re: serial flow control appears broken

From: Lee Howard
Date: Fri Jul 27 2007 - 16:49:41 EST


Paul Fulghum wrote:

Tilman Schmidt wrote:

Could this be related?

http://lkml.org/lkml/2007/7/18/245

Quote:
"I've recently found (using 2.6.21.4) that configuring a serial ports
(ST16654) which use the 8250 driver using setserial results in the
UART's FIFOs being disabled (unless you specify autoconfig)."


That would make sense.

Lee's error is a hardware FIFO overrun which could occur
if the FIFO is being disabled as described in your
link (by trying to set the uart type with setserial).


I'm not using setserial on this port, myself. If something in init is calling on setserial then I don't know about it.

That said, tests on the serial port from within the application show that xmit_fifo_size is set to 16 as it should be.

I wrote up a little test app:

struct serial_struct serial;
ioctl(modemFd, TIOCGSERIAL, &serial);
printf(" type: %d\n", serial.type);
printf(" line: %d\n", serial.line);
printf(" line: %u\n", serial.port);
printf(" irq: %d\n", serial.irq);
printf(" flags: %d\n", serial.flags);
printf(" xmit_fifo_size: %d\n", serial.xmit_fifo_size);
printf(" custom_divisor: %d\n", serial.custom_divisor);
printf(" baud_base: %d\n", serial.baud_base);
printf(" close_delay: %u\n", serial.close_delay);
printf(" io_type: 0x%X\n", serial.io_type);
printf("reserved_char[0]: 0x%X\n", serial.reserved_char[0]);
printf(" hub6: %d\n", serial.hub6);
printf(" closing_wait: %u\n", serial.closing_wait);
printf(" closing_wait2: %u\n", serial.closing_wait2);
printf(" iomem_reg_shift: %u\n", serial.iomem_reg_shift);
printf(" port_high: %u\n", serial.port_high);
printf(" reserved[0]: %d\n", serial.reserved[0]);

Here's the output:

type: 4
line: 1
line: 760
irq: 3
flags: 1358954688
xmit_fifo_size: 16
custom_divisor: 0
baud_base: 115200
close_delay: 500
io_type: 0x0
reserved_char[0]: 0x0
hub6: 0
closing_wait: 30000
closing_wait2: 0
iomem_reg_shift: 0
port_high: 0
reserved[0]: 0

Thanks,

Lee.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/