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

Feb 07, 2005 3 Replies

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


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+===================================================================

Its a Timesys port of linux 2.4.20 to an MPC7400 based system

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required