Ralf Baechle wrote: > > On Wed, Feb 20, 2002 at 06:05:21PM -0800, Matthew Dharm wrote: > > > If it works as I think it does, then is the code in > > linux/arch/mips/gt64120/momenco_ocelot/setup.c correct? Specifically, > > it calls ioremap() and then calls set_io_port_base() with a very > > strange value -- it's the value from ioremap() > > > modified by the I/O physical address base... > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > > I was reading too fast and missed that part. > > > That doesn't look right to me... or I just don't quite understand how > > this is supposed to work. > > That's definately looks fishy. This is actually right. This way if you pass an virtual at (mips_io_port_base + delta), you will get a physical address (GT_PCI_IO_BASE + delta), the desired place. Most boards don't need this funky ioremap() and base addr substraction trick, but ocelot has the IO address placed beyond normal kseg1 addressing range. Jun