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

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

Reply to
him
Loading thread data ...

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

Reply to
him

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+===================================================================
Reply to
Heinz-Jürgen Oertel

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

Reply to
sam

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.