From: Robert Hancock <hancockr@shaw.ca>
To: Aras Vaichas <arasv@magtech.com.au>
Cc: linux-kernel@vger.kernel.org
Subject: Re: mmaping an IO port device
Date: Wed, 12 Dec 2007 18:52:11 -0600 [thread overview]
Message-ID: <4760823B.30901@shaw.ca> (raw)
In-Reply-To: <fa.noVJACisdR+sMNi3JjMxD+zdqf8@ifi.uio.no>
Aras Vaichas wrote:
> 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
It's impossible to mmap an IO port area on x86 since IO ports are not
accessible as part of the normal memory space. The only way to get
access to IO ports in userspace is to use iopl (which requires root
privileges) and then executing inl/outl, etc. instructions directly.
--
Robert Hancock Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/
next parent reply other threads:[~2007-12-13 0:53 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fa.noVJACisdR+sMNi3JjMxD+zdqf8@ifi.uio.no>
2007-12-13 0:52 ` Robert Hancock [this message]
2007-12-12 23:45 mmaping an IO port device Aras Vaichas
2007-12-12 23:57 ` Aras Vaichas
2007-12-13 0:39 ` H. Peter Anvin
2007-12-13 1:04 ` Aras Vaichas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4760823B.30901@shaw.ca \
--to=hancockr@shaw.ca \
--cc=arasv@magtech.com.au \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox