EmbeddedRelated.com
Forums
Memfault Beyond the Launch

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

Started by him February 7, 2005
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()

Thanks



him wrote:

> 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() > > Thanks
No idea up to now, but what kernel, what linux? is it VM linux or uClinux? Heinz -- with best regards / mit freundlichen Gr��en Heinz-J�rgen Oertel +=================================================================== | Heinz-J�rgen Oertel port GmbH http://www.port.de | mailto:oe@port.de | phone +49 345 77755-0 fax +49 345 77755-20 | Regensburger Str. 7b, D-06132 Halle/Saale, Germany | CAN Wiki http://www.CAN-Wiki.info | Newsletter: http://www.port.de/engl/company/content/abo_form.html +===================================================================
> No idea up to now, but what kernel, what linux? > is it VM linux or uClinux?
Its a Timesys port of linux 2.4.20 to an MPC7400 based system

Memfault Beyond the Launch