Re: Simple UART driver help and TTY questions

From: Ira Snyder
Date: Wed Aug 06 2008 - 17:46:48 EST


On Wed, Aug 06, 2008 at 11:11:00PM +0200, Jiri Slaby wrote:
> conOn 08/05/2008 06:33 PM, Ira Snyder wrote:
>> static void tiny_config_port(struct uart_port *port, int flags)
>> {
>> FUNC_ENTER();
>
> if (flags & UART_CONFIG_TYPE)
> port->type = PORT_16550A;
>
>> }
>
> According to the straces, you get -EIO from ioctl and read which most
> likely means TTY_IO_ERROR bit set due to tiny_port->type = PORT_UNKNOWN
> (i.e. 0). Try the above.

Not quite, but it got me on the right track. I needed to set port->type
before calling uart_add_one_port().

Now it gets into my code. Previously, it had never even called any of my
code. None of it. Unfortunately, I ran it and it segfaulted. Turns out
that Greg's tinyserial driver didn't implement ops->set_termios() and
that was the cause. Implementing that got everything working.

Now I get in my dmesg:
[ 73.813893] ttytiny: Tiny serial driver
[ 83.714486] Enter: tiny_startup
[ 83.717676] Enter: tiny_set_termios
[ 83.721193] Enter: tiny_set_mctrl
[ 85.463793] Enter: tiny_stop_rx
[ 85.466987] Enter: tiny_set_mctrl
[ 85.470328] Enter: tiny_shutdown

And that looks very reasonable. (It was produced by cat /dev/ttytiny0,
for your information).

Thanks a lot for your help! That problem had me completely stumped for a
couple of days now :)

Ira
--
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/