On Mon, 2005-04-04 at 08:59 -0500, James Bottomley wrote: > On Mon, 2005-04-04 at 17:50 +1000, Benjamin Herrenschmidt wrote: > > I disagree. The driver will never "know" ... > > ? the driver has to know. Look at the 53c700 to see exactly how awful > it is. This beast has byte and word registers. When used BE, all the > byte registers alter their position (to both inb and readb). What I mean is that the driver doesn't have "know" whatever CPU/bus combo endianness will require it to use "native" or "swapped" access. What the driver knows is wether the device it tries to access need BE or LE accessors. > > I don't think it's sane. You know that your device is BE or LE and use > > the appropriate interface. "native" doesn't make sense to me in this > > context. > > Well ... it's like this. Native means "pass through without swapping" > and has an easy implementation on both BE and LE platforms. Logically > io{read,write}{16,32}be would have to do byte swaps on LE platforms. > Being lazy, I'm opposed to doing the work if there's no actual use for > it, so can you provide an example of a BE bus (or device) used on a LE > platform that would actually benefit from this abstraction? I don't think drivers will benefit from "native" vs. "swapping". Taht means that pretty much all drivers that care will end up with #ifdef crap to pick up the right one based on the CPU endian, and some wil get it wrong of course. No, I _do_ thing that this should be hidden in the implementation, and we should provide "le" and "be" accessors (le beeing the current ones, be new ones). Which one swap or not is in the implementation of those accessors for the architecture, but the driver shouldn't have to care. Ben. - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html