[PATCH 16/19] bootwrapper: Add xlate_reg(), and use it to find serial registers.

David Gibson david at gibson.dropbear.id.au
Tue Mar 13 10:29:25 EST 2007


On Mon, Mar 12, 2007 at 04:01:48PM -0700, Mark A. Greer wrote:
> On Mon, Mar 12, 2007 at 02:42:02PM -0600, Scott Wood wrote:
> 
> > diff --git a/arch/powerpc/boot/ns16550.c b/arch/powerpc/boot/ns16550.c
> > index 1ffe72e..cce7a11 100644
> > --- a/arch/powerpc/boot/ns16550.c
> > +++ b/arch/powerpc/boot/ns16550.c
> > @@ -55,10 +55,15 @@ static u8 ns16550_tstc(void)
> >  int ns16550_console_init(void *devp, struct serial_console_data *scdp)
> >  {
> >  	int n;
> > +	unsigned long reg_phys;
> >  
> >  	n = getprop(devp, "virtual-reg", &reg_base, sizeof(reg_base));
> > -	if (n != sizeof(reg_base))
> > -		return -1;
> > +	if (n != sizeof(reg_base)) {
> > +		if (!xlate_reg(devp, 0, &reg_phys, NULL))
> > +			return -1;
> > +
> > +		reg_base = (void *)reg_phys;
> > +	}
> 
> NACK.
> 
> 'virtual-reg' _is_ the fully translated virtual address.
> Its simply the virtual address that maps to the fully translated
> physical addr in the 'reg' property.
> 
> Even if it wasn't, 'ranges' only work for physical/'reg' properties
> and can't be used for a virtual one--you'd have to make a parellel
> 'ranges' thingy for 'virtual-reg'.

I think you're misreading, Mark.  The patch only attempts to translate
the reg if the virtual-reg property is *not* valid.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson



More information about the Linuxppc-dev mailing list