On Fri, May 06, 2011 at 03:19:51PM +0200, Lars-Peter Clausen wrote:
On 05/06/2011 02:48 PM, Mark Brown wrote:
So clearly the cache stuff ought to be using cpu_to_be16 for this stuff. At present we've been lazy about this as on most CPUs the swap boils down to a noop. If we do end up needing both swaps then we just add this as another parameter in the cache infrastructure.
Currently everything is stored as big endian.
What do you mean? The cache is CPU native.
The easiest way to support 16-bit spi writes on little endian systems, would be to add a do_spi_write16 which would be used for those devices. On big-endian systems it would be an alias to do_spi_write, on litte-endian systems it would perform a byte swap on the buffer.
An alternative would be to provide litte-endian versions of snd_soc_x_y_write. This would amount to more code, but less runtime overhead since we can store it in litte-endian format right away instead of having to swap the bytes.
This would also support bulk operations direct from cache.
Either of these would be an example of using cpu_to_() as I suggested.