From: David Howells <dhowells@redhat.com>
To: rmk+serial@arm.linux.org.uk
Cc: linux-serial@vger.kernel.org
Subject: Early serial port problems
Date: Wed, 02 Mar 2005 14:19:05 +0000 [thread overview]
Message-ID: <5895.1109773145@redhat.com> (raw)
Hi Russell,
I've got a couple of problems with registering serial ports with
early_serial_setup() on my FRV board with 2.6.11:
(1) If I have no gdbstub compiled in, I try to register both serial ports
early, but only ttyS0 works. The kernel knows both serial ports are there;
both are mentioned in the boot console logs, both can be seen in
/proc/tty/driver/serial, and both can be opened. However, all operations
on ttyS0 give EIO.
If either port is registered by itself then it works. I've changed the
definitions in arch/frv/kernel/setup.c from what's in the standard kernel
to include line IDs:
static struct uart_port __initdata __frv_uart0 = {
.uartclk = 0,
.membase = (char *) UART0_BASE,
.irq = IRQ_CPU_UART0,
.regshift = 3,
.iotype = UPIO_MEM,
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
--> .line = 0,
};
static struct uart_port __initdata __frv_uart1 = {
.uartclk = 0,
.membase = (char *) UART1_BASE,
.irq = IRQ_CPU_UART1,
.regshift = 3,
.iotype = UPIO_MEM,
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
--> .line = 1,
};
Note that .uartclk is set by the code rather than being compiled in.
(2) The boot console log lines for the serial ports and the proc tty listing
show an address of 0 because __frv_uart0.mapbase and __frv_uart1.mapbase
aren't set:
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
ttyS0 at MMIO 0x0 (irq = 1) is a 16550A
ttyS1 at MMIO 0x0 (irq = 2) is a 16550A
io scheduler noop registered
If I set .mapbase as well as .membase before calling early_serial_setup(),
then I see the kernel console output appear, but userspace can't access
the serial ports, and the serial driver doesn't record the existence of
the ports in the console log:
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
io scheduler noop registered
Adding in UPF_IOREMAP makes no difference.
Unsetting .membase and just leaving .mapbase set and UPF_IOREMAP set means
that you don't even get kernel console output, though the kernel still
boots.
I wonder if (1) is related to (2).
Is there anything you can suggest?
David
next reply other threads:[~2005-03-02 14:19 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-02 14:19 David Howells [this message]
2005-03-30 9:41 ` Early serial port problems Russell King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5895.1109773145@redhat.com \
--to=dhowells@redhat.com \
--cc=linux-serial@vger.kernel.org \
--cc=rmk+serial@arm.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.