On Thu, Feb 02, 2006 at 01:46:41AM -0800, Eugene Surovegin wrote: > On Thu, Feb 02, 2006 at 09:35:56AM -0000, Jenkins, Clive wrote: > > A driver for some device that could be connected to (or plugged into) > > a variety of different platforms of different architecture. > > A driver for a core that could be implemented within an FPGA on > > multiple platforms. > > Well, this is all nice but I was wondering about _real_ examples. > When you are talking about "connecting" or "plugging" you have to keep > in mind actual bus interconnect. So far AFAIK PCI (and derivatives) > are the only cross-arch bus. > > So basically, you have no _real_ life examples, so I'm wondering why > people need this "arch-independent" non-PCI I/O accessors for > something which doesn't exist. > > I think the reason why Linux doesn't have this stuff follows from the > previous paragraph.
I mentioned the BE iomap variants that are being used on some non-pci parisc devices already. I'll give a partial example of something that is non-pci yet "arch-independent". Take a non-pci EHCI core (yes, I know it's little endian by definition but suspend reality for a second). You can create an arch-independent EHCI driver that uses the platform bus by using the iomap accessors. Since these cores are licensed every day by XYZ startups for their latest "gee-whiz" SoC, it reasons that you'll see the same core on multiple licensable SoC architectures. I've seen one such thing on MIPS. We also know that major semiconductor companies do the same thing for their peripherals in some cases. They're just as willing to buy somebody else's USB core, for example. So, having a BE non-pci device cross platform isn't a stretch. Take a look at drivers/scsi/53c700.{c,h}. That generic driver is why BE iomap accessors were added. It's in the process of being shared between parisc and m68k. -Matt