linux-mips
[Top] [All Lists]

Re: set_io_port_base()?

To: Ralf Baechle <ralf@oss.sgi.com>
Subject: Re: set_io_port_base()?
From: Jun Sun <jsun@mvista.com>
Date: Wed, 20 Feb 2002 18:27:23 -0800
Cc: Matthew Dharm <mdharm@momenco.com>, Linux-MIPS <linux-mips@oss.sgi.com>
References: <20020221025755.B29466@dea.linux-mips.net> <NEBBLJGMNKKEEMNLHGAIEEKDCFAA.mdharm@momenco.com> <20020221031338.A31129@dea.linux-mips.net>
Sender: owner-linux-mips@oss.sgi.com
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

<Prev in Thread] Current Thread [Next in Thread>