iowritexx() not always working for me

Dhoti Walla dhotiwalla at
Wed May 18 06:04:37 UTC 2011


I'm writing a driver for a PCI card and having some trouble accessing 
the memory mapped registers on the board.

I use:

pci_resource_start(..)  and pci_resource_len(..) to get the starting 
address and size of the memory mapped registers.
pci_resource_flags(...) returns IORESOURCE_MEMORY and IORESOURCE_SHADOWABLE

request_mem_region() and ioremap_nocache() both succeed.

when I call iowrite32(...) to write a 4 byte value, it succeeds on the 
first attempt.
when I call iowrite16(...) to write a 2 byte value, it succeeds on the 
2nd  attempt (i.e  I have to call iowrite16(..) twice before the write 
when I call iowrite8(...) to write a 1 byte value, it succeeds on the 
4th  attempt.

I have no idea why 2 byte and 1 byte writes don't work on the first 

Sure could use some help here!

thanks in advance

More information about the devel mailing list