Hi,
Can I implement mmap with an io port connected device on an x86 based CPU?
Background:
I've got a device driver which can be compiled for either x86 or ARM. The driver provides an interface to an FPGA via either an IO port (0x180) on the x86 or as a memory mapped SRAM-like device (0x30000000) on the ARM.
To get myself an "address" for ioread calls I use:
FPGA_base = (u32) ioremap_nocache(FPGA_REG_IO_BASE, SZ_4K) for both CPU types.
FPGA_REG_IO_BASE is set to either 0x180 or 0x30000000 for x86 and ARM respectively.
I then call ioread16(FPGA_base + FPGA_register) for both x86 and ARM and it all works perfectly. No problems there.
My problem is that I am now moving from ioctl calls to a mmap interface. This isn't a problem with ARM as I can pass (0x30000000 >> PAGE_SHIFT) to remap_pfn_range() in the .mmap fops function but I can't pass 0x180 because ... well, it's obvious.
Is there a trick?
Aras