ioremap() and port of linux to MPC7400 based SBC (VME board)

From: him (
Date: 02/07/05

Date: Mon, 07 Feb 2005 08:05:37 -0500

I have run into a problem I am having a hard time figuring out.

I have an MPC7400 SBC (PCI bus based) that has a device X residing
at the following locations in memory:

0x1860 0000 - 0x186f ffff device control register space
0xb000 0000 - 0xbfff ffff device memory space

Now assume for a moment that NOTHING special needs to be done to
access either space once the system has booted and bus enumerator
have set things up.

ioremap() of the first physical address returns a VALID virtual
address ... that I can read and write to. It works as expected
because there are signature values at various offsets in the control
register space.
The virtual address returned is EQUAL to the physical address

ioremap() of the second physical address also returns what appears to
be a VALID virtual address although WRITES go nowhere and READS return
all ff's.
The virtual address returned is 0xc100 0000

Now my question ... I have the source for the port. Where should I focus
my efforts in trying to figure this out?

I have read the device drivers book and certain that I am following
the rules.

I should also mention that there is an IO controller seperate from the
MPC7400 that I use to verify that the device X control and memory exist
in THAT physical range.

If Only I can access them through ioremap()