crypto: caam - fix non-64-bit write/read access
authorSteffen Trumtrar <s.trumtrar@pengutronix.de>
Tue, 16 Jun 2015 10:59:07 +0000 (12:59 +0200)
committerHerbert Xu <herbert@gondor.apana.org.au>
Thu, 18 Jun 2015 06:45:28 +0000 (14:45 +0800)
commitf657f82cc9710e2cb3067be932853ce114e5ce29
tree26da5eca61c712145ccbcc6e0363b760e896d489
parent946cc46372dcf8e34f21a6d06826c2aa1822b642
crypto: caam - fix non-64-bit write/read access

The patch

crypto: caam - Add definition of rd/wr_reg64 for little endian platform

added support for little endian platforms to the CAAM driver. Namely a
write and read function for 64 bit registers.
The only user of this functions is the Job Ring driver (drivers/crypto/caam/jr.c).
It uses the functions to set the DMA addresses for the input/output rings.
However, at least in the default configuration, the least significant 32 bits are
always in the base+0x0004 address; independent of the endianness of the bytes itself.
That means the addresses do not change with the system endianness.

DMA addresses are only 32 bits wide on non-64-bit systems, writing the upper 32 bits
of this value to the register for the least significant bits results in the DMA address
being set to 0.

Fix this by always writing the registers in the same way.

Suggested-by: Russell King <linux@arm.linux.org.uk>
Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/caam/regs.h