[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <46AA5A0E.1050600@howardsilvan.com>
Date: Fri, 27 Jul 2007 13:48:14 -0700
From: Lee Howard <faxguy@...ardsilvan.com>
To: Paul Fulghum <paulkf@...rogate.com>
CC: Tilman Schmidt <tilman@...p.cc>,
Alan Cox <alan@...rguk.ukuu.org.uk>,
Robert Hancock <hancockr@...w.ca>,
linux-serial@...r.kernel.org, tytso@....edu, rmk@....linux.org.uk,
linux-kernel@...r.kernel.org
Subject: Re: serial flow control appears broken
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists