[PATCH 0/4] drivers/ata: add low-level I/O calls
Benjamin Herrenschmidt
benh at kernel.crashing.org
Sat Jan 13 07:50:34 EST 2007
> libata intentionally provides higher level hooks than just I/O accessors.
>
> A low level I/O hook approach makes it difficult to take into account
> platform-specific details like mmiowb(), especially on embedded platforms.
>
> The high level hook approach also enables greater efficiency. For
> example, an embedded platform could do
>
> __raw_writeb(datum, mmio_address + ATA_REG_FOO);
> __raw_writeb(datum, mmio_address + ATA_REG_BAR);
> eieio();
>
> to optimize an entire taskfile-read or taskfile-write operation.
I've been looking at that for them and for Efika but it's acutally quite
a bit of a mess. I'd be happy if you could have a look as well, but it's
not simple to find the "right" level of abstraction to be able to use
the reset/probe handling with special reset accessors. And hooking at
the toplevel is such a wastage (LOTS of code duplication) that it's
really no fun (it's what Toshiba initial patch does, though you haven't
commented on it).
So some hints as to where you think the right hooks/abstractions would
be would be much welcome.
Ben.
More information about the Linuxppc-dev
mailing list