2010-08-17 01:54:56

by Yong Wang

[permalink] [raw]
Subject: One question about 8250 UART driver

Hi all,

We have a PCI based UART controller that is compatible with the existing
8250 serial driver in most aspects. However, one exception is that our
UART controller can take advantage of the onboard DMA contoller to
achieve higher throughput. Could you please share your insights about
what is the proper way to add such DMA support into existing 8250 driver?

Thanks
-Yong


2010-08-17 08:54:01

by Alan

[permalink] [raw]
Subject: Re: One question about 8250 UART driver

On Tue, 17 Aug 2010 09:37:34 +0800
Yong Wang <[email protected]> wrote:

> Hi all,
>
> We have a PCI based UART controller that is compatible with the
> existing 8250 serial driver in most aspects. However, one exception
> is that our UART controller can take advantage of the onboard DMA
> contoller to achieve higher throughput. Could you please share your
> insights about what is the proper way to add such DMA support into
> existing 8250 driver?

I'd say the same as I said to the other folks who asked this - create a
new driver. All the DMA based 8250 devices have differing DMA engines
and it'll become unmanagable in the existing driver.

Once we can see which bits of the existing code are useful for the DMA
8250-style devices we can then create an 8250-lib.c which contains the
bits that are useful to 8250 and to non standard 8250-like devices.

Alan

2010-08-17 13:25:33

by Ralf Baechle

[permalink] [raw]
Subject: Re: One question about 8250 UART driver

On Tue, Aug 17, 2010 at 09:16:22AM +0100, Alan Cox wrote:

> > We have a PCI based UART controller that is compatible with the
> > existing 8250 serial driver in most aspects. However, one exception
> > is that our UART controller can take advantage of the onboard DMA
> > contoller to achieve higher throughput. Could you please share your
> > insights about what is the proper way to add such DMA support into
> > existing 8250 driver?
>
> I'd say the same as I said to the other folks who asked this - create a
> new driver. All the DMA based 8250 devices have differing DMA engines
> and it'll become unmanagable in the existing driver.
>
> Once we can see which bits of the existing code are useful for the DMA
> 8250-style devices we can then create an 8250-lib.c which contains the
> bits that are useful to 8250 and to non standard 8250-like devices.

An existing example is drivers/serial/ioc3_serial.c. IOC3 is an SGI
custom chip which is only being used in SGI systems. It has a PCI
master and 486-style slave bus to which a SuperIO chip is connected.
The IOC3 can either be configured to use the chip in legacy mode; then
the standard 8250 driver will work fine. It also support a DMA mode
with receive and transmit rings which make it similar to a network chip.

Ralf