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?
On Tue, 17 Aug 2010 09:37:34 +0800
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.