diff options
author | Ben Dooks <ben.dooks@codethink.co.uk> | 2015-03-13 18:14:52 +0000 |
---|---|---|
committer | Ben Dooks <ben.dooks@codethink.co.uk> | 2015-03-13 19:07:54 +0000 |
commit | 1ce30392e7393441cc2e26877f35aa580291b869 (patch) | |
tree | 1997071aa6cfd7c4a71fd6aa108704cab00526a3 /sound/isa/gus/gusmax.c | |
parent | 37fdc802818fb512d2143ffaf07ddd734405afb2 (diff) | |
download | linux-baserock/bjdooks/zynq-be.tar.gz |
macb: fix issues with running on ARM big-endianbaserock/bjdooks/zynq-be
The macb driver does not work on an ARM cpu running in big-endian
mode due to two issues with register access and ring building.
The register code uses __raw_readl and __raw_writel which do not
take into account CPU versus bus endian-ness. This is fixed by
changing to use the readl_relaxed and writel_relaxed accesors
which deal with endianness without adding strict ordering.
When building the ring, the data must also be written in le32
format as the hardware expects to be reading data in little-edian
wheras the cpu is writing to memory in big endian. Use the
appropriate __le32 conversion functions.
Tested on an Xilinx Zynq on a Digilent Zybo board.
Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>
--
CC: Nicolas Ferre <nicolas.ferre@atmel.com>
CC: Linux Networking <netdev@vger.kernel.org>
Diffstat (limited to 'sound/isa/gus/gusmax.c')
0 files changed, 0 insertions, 0 deletions