If we leave the driver for the au1x00 as it is it should not have the
register_serial / unregister_serial functions and it should be renamed to
something else, e.g. ttySAxxx like it is done for the internal serial port of
the strongarm (sa1100).
I have thought about the serial driver and came along this.
I we take a look at the hardware, we have a chip, the 8250 and its successors
and the chip is integrated into some kind of hardware. So the chip has an
interface. It has some address lines for register access, it has data lines
and some controll lines. It also has an interrupt pin, some (GP)IO-Pins, that
are freely programmable and a clock input. The chip is integrated thru some
interface as I mentioned before. It can be an ISA-IO card or a PCI card or a
multiport card, where more than one chip is accessed thru the same io-range
and the hip to access is selected thru a single register. The au1x00 serial
driver is like an ISA card except that the chip is mapped to a memory region
instead of an io-region and the fact, that we can calculate the baud_base
using the pll configuration of the au1x00, if we assume a 12MHz oscilator,
which is standard for the au1x00.
We need some access methods to access the chip registers, some way to handle
intterupts, some way to deal with the gpio-pins, and we need a way to get the
clock input of the chip. What should the serial-chip driver know about and
what should the card driver know about.
It's like the streams concept, where the chip driver does not know how to
access the chip or what resources it uses, but what to do with the chip.