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... That doesn't look right to me... or I just don't quite understand how this is supposed to work. Matt -- Matthew D. Dharm Senior Software Designer Momentum Computer Inc. 1815 Aston Ave. Suite 107 (760) 431-8663 X-115 Carlsbad, CA 92008-7310 Momentum Works For You www.momenco.com > -----Original Message----- > From: Ralf Baechle [mailto:ralf@oss.sgi.com] > Sent: Wednesday, February 20, 2002 5:58 PM > To: Matthew Dharm > Cc: Linux-MIPS > Subject: Re: set_io_port_base()? > > > On Wed, Feb 20, 2002 at 05:36:05PM -0800, Matthew Dharm wrote: > > > Now, I'm pretty sure this has something to do with the initcall to > > set_io_port_base() and ioremap(), which are in my setup.c > (copied from > > linux/arch/mips/gt64120/momenco_ocelot/setup.c and > modified). Without > > that bit of code at the bottom of that function, I don't even get > > this -- it just crashes. So I know I need this code, but > I'm just not > > certain what/how I should be using it... > > > > My initial guess is that it's used to map some virtual > address space > > onto the physical addresses needed to actually generate PCI I/O > > transactions, but that's just a guess. If that's right, > then the code > > I'm using _should_ work... I call ioremap() with the > physical base and > > size, and then set_io_port_base() using the result of ioremap(). > > That is exactly the intended use. > > Ralf >