Re: iowritexx() not always working for me

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/18/2011 08:04 AM, Dhoti Walla wrote:
> Hello,
> 
> 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
> happens)
> 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
> attempt.

It's probably the PCI posting. Try to read some register from the device
after the write.

BTW. you should not use iowrite*/ioread* on ioremap space. Either use
iomap with ioread*/iowrite* or ioremap with write*/read*.

regards,
-- 
js
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux