Thread (9 messages) 9 messages, 3 authors, 2011-02-23

Re: [PATCH v3 2/2] i2c: xiic: Use 32bit accesses only

From: Arnd Bergmann <hidden>
Date: 2011-02-23 17:50:06
Also in: linux-i2c, lkml

On Wednesday 23 February 2011 10:37:31 Michal Simek wrote:
Arnd Bergmann wrote:
quoted
On Wednesday 23 February 2011 09:08:47 Michal Simek wrote:
quoted
Grant Likely wrote:
quoted
On Tue, Feb 22, 2011 at 10:49 AM, Michal Simek [off-list ref] wrote:
quoted
i2c driver is used for LE/BE that's why is useful to use
32bit accesses. Then it is not necessary to solve any
endian issues.
Are you sure?  I would expect the BE version needs to use
io{read,write}32be variants of the accessors.  What platforms have you
tested on?
iowrite32 is the same with iowrite32be for Microblaze.
I have no problem to change it to iowrite32be if you like.

I have tested it on microblaze big and little endian platforms.
I think what Grant was saying is that iowrite32 being the same as
iowrite32be is a bug, because iowrite32 is documented to be little-endian.
Can you pointed me to that documentation?
Documented was maybe a term that is bit too strong in this case ;-)

Documentation/memory-barriers.txt documents that iowrite32 is the same
as either writel or outl, depending on the source of the mapping.

Both include/asm-generic/io.h and include/asm-generic/iomap.h define
variants of iowrite32 and iowrite32be, but the definition in io.h is
actually broken.
quoted
This is probably fine as long as you don't have any PCI devices,
but if you ever get PCI support, it won't work.
Microblaze have PCI support but I don't have the board for testing.
Ok, I see.
 
quoted
Also, it heavily confuses other developers such as Grant and me
if one architecture defines things to mean something completely
different from the other architectures.
As I see will be good to review microblaze io.h and use generic one.
The generic io.h is lacking in a number of ways and should really
be improved. Guan Xuetao also fell into the same trap with the
unicore32 port.

The problem is that I copied asm/io.h from mn10300, which seemed
generic enough, but it really doesn't work correctly with PCI.
There is one patch for this that I did in the unicore32 tree,
I should probably go through it and fix everything else that sticks
out.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help