From: rolf liu <rolfliu@gmail.com>
To: Michael Stickel <michael@cubic.org>
Cc: "linux-mips@linux-mips.org" <linux-mips@linux-mips.org>
Subject: Re: possible serial driver fixup for au1x00 in 2.6?
Date: Tue, 5 Jul 2005 15:41:10 -0700 [thread overview]
Message-ID: <2db32b72050705154141ff0456@mail.gmail.com> (raw)
In-Reply-To: <42CAFFC4.9070807@cubic.org>
Mike,
Thanks for the comments.
Your way is foundamental change. Currently I just want to try if the
8250.c and au1x00_uart.c can work under the same system--both on-chip
uarts and exar uarts are available without too much coding. Any
suggestions?
On 7/5/05, Michael Stickel <michael@cubic.org> wrote:
> rolf liu wrote:
>
> >Pete,
> >To try if 8250.c can work under db1550/linux 2.6.12, I turn off the
> >au1x00_uart.c config and just compiled in the 8250 support. When I
> >boot the kernel, nothing comes up through the console, which should be
> >provided by 8250 support, by 8250_early.c?
> >
> You can't just enable the serial.c (8250). The UARTs for the Au1x00 are
> memory mapped, but are accessed thru the functions au_readx and
> au_writex. If you take a look at the au1x00_uart.c you can see that the
> functions for serial register access contains access to the au1x00
> registers thru au_readl and au_writel. The serial.c does some more
> things, that does not belong to 8250 (and successors), but to the way
> how the chips are attached to the bus. I see the need to write a more
> modular structure:
>
> One 8250.c that does only the serial chip stuff and one module per
> chip-access-method (serial_io.c, serial_pci.c, serial_mm.c,
> serial_au1x00.c, ...). These modules must know how to access the
> registers, but not what they mean. 8250.c does not know how to access
> the registers, but what to do with it.
>
> Thats teamwork.
>
> That could be adopted to more chips that have a registers to access. I
> think about the i8255 3-port io chip or the i8254-CTC and there are many
> more.
>
> There must be a callback for interrupts like it exists for the parallel
> port stuff.
>
> Could look like that:
> struct register_access_s
> {
> void (*delete_resource) (struct register_access_s *);
> ...
> int (*writel) (struct register_access_s *bus, long reg, u32 value);
> int (*writew) (struct register_access_s *bus, long reg, u16 value);
> int (*writeb) (struct register_access_s *bus, long reg, u8 value);
> ...
> int (*readl) (struct register_access_s *bus, long reg, u32 *value);
> int (*readw) (struct register_access_s *bus, long reg, u16 *value);
> int (*readb) (struct register_access_s *bus, long reg, u8 *value);
> ...
> void *private;
> };
>
> struct register_access_s *create_au1x00_register_access (u32
> au1x00_register_address, size_t size, u32 irq);
> struct register_access_s *create_io_register_access (u16 io_address,
> size_t size, u32 irq);
> struct register_access_s *create_mm_register_access (void *vaddress,
> size_t size, u32 irq);
>
> struct register_access_s *au1x00_uart0_regs =
> create_au1x00_register_access (UART0_ADDR, 8, AU1000_UART0_INT);
> struct register_access_s *uart0_regs = create_io_register_access (0x3E0,
> 8, 4);
>
> register_8250 (au1x00_uart0_regs, ...);
> register_8250 (uart0_regs, ...);
>
> au1x00_uart0_regs->delete_resource (au1x00_uart0_regs);
> ...
> uart3_regs->delete_resource (uart3_regs);
>
> May be a chip can have more than one interrupts and does not have even one.
>
> Michael
>
>
>
>
next prev parent reply other threads:[~2005-07-05 22:41 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-02 0:56 possible serial driver fixup for au1x00 in 2.6? rolf liu
2005-07-02 1:06 ` Pete Popov
2005-07-05 19:40 ` rolf liu
2005-07-05 21:46 ` Michael Stickel
2005-07-05 22:41 ` rolf liu [this message]
2005-07-06 7:10 ` Pete Popov
2005-07-06 16:21 ` rolf liu
2005-09-05 8:40 ` Matej Kupljen
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=2db32b72050705154141ff0456@mail.gmail.com \
--to=rolfliu@gmail.com \
--cc=linux-mips@linux-mips.org \
--cc=michael@cubic.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox