Re: [PATCH] drivers/block/xsysace - replace in(out)_8/in(out)_be16/in(out)_le16with generic iowrite(read)8/16(be)

From: Alexey Brodkin
Date: Thu Mar 21 2013 - 13:02:30 EST

On 02/12/2013 09:25 PM, Arnd Bergmann wrote:
On Tuesday 12 February 2013, Michal Simek wrote:
But on Microblaze LE is necessary to use different datain/out_le16
functions as below
which are also not compatible with Microblaze and PPC BE.

diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c
index bbad046..8dd192c 100644
--- a/drivers/block/xsysace.c
+++ b/drivers/block/xsysace.c
@@ -314,7 +314,7 @@ static void ace_datain_le16(struct ace_device *ace)
int i = ACE_FIFO_SIZE / 2;
u16 *dst = ace->data_ptr;
while (i--)
- *dst++ = ioread16be(ace->baseaddr + 0x40);
+ *dst++ = ioread16(ace->baseaddr + 0x40);
ace->data_ptr = dst;

Hmm, that actually seems sane then: You can replace the loop around
ioread16be with a single ioread32_rep() call, which will use
the correct native endian accesses on both LE Microblaze
and on all the big-endian platforms. Note that the asm-generic
definition of that function was broken until quite recently
when Will Deacon repaired it in order to support ARM64.


It seems like this thread was not updated for many weeks now.
I'm wondering if I missed something or if I may do something to help you guys move forward with proposed patch?

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at