Directly accessing I/O ports

3 messages, 3 authors, 2002-07-22 · open the first message on its own page

Directly accessing I/O ports

From: Greg Allen <hidden>
Date: 2002-07-19 00:06:12

I'd like to get the Linux ethernet card diagnostic tool,
eepro100-diag.c (from http://www.scyld.com/diag/index.html) running
on the PowerPC.

Unfortunately, it uses iopl() and inw()/outw()/inl()/outl() to access
the entire I/O port space directly in userland. In fact, much of this
family of utils does the same thing.

I tried something like:
	io_fd = open("/dev/port", O_RDWR);
	iobase = mmap(0, device_size, PROT_READ|PROT_WRITE, MAP_SHARED,
		io_fd, device_base);
but I can't get it to work.


Are there suggestions (or code snippets) as to how I should proceed?

For that matter, what's the *right* way to access this sort of thing
from userland?

Thanks,
-Greg
--
  Gregory E. Allen, MSEE Engineering Scientist
  Applied Research Laboratories: The University of Texas at Austin
  Please help find my missing daughter: http://FindSabrina.org/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: Directly accessing I/O ports

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2002-07-20 18:10:58

For that matter, what's the *right* way to access this sort of thing
from userland?
mmap /proc/bus/pci with proper flags. By defaults it's PIO,
but you can use ioctl after the open() call and before the mmap()
call to set the requested mapping type to MMIO, PIO, ...

The code handling this is in drivers/pci/proc.c

The important point is that on PPC, the PIO space isn't limited
to one 64k space like on x86, but is a full set of separate address
spaces (one per host PCI bus).

Ben.


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

Re: Directly accessing I/O ports

From: Tom Rini <hidden>
Date: 2002-07-22 17:00:38

On Sat, Jul 20, 2002 at 08:10:58PM +0200, Benjamin Herrenschmidt wrote:
quoted
For that matter, what's the *right* way to access this sort of thing
from userland?
[snip]

Or the other fix, which iirc Jeff Garzik has somewhere on his todo list
is to make it work with ethtool ioctls.

--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help