[PATCH 16/19] bootwrapper: Add xlate_reg(), and use it to find serial registers.
Mark A. Greer
mgreer at mvista.com
Tue Mar 13 11:04:21 EST 2007
On Tue, Mar 13, 2007 at 10:29:25AM +1100, David Gibson wrote:
> 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", ®_base, sizeof(reg_base));
> > > - if (n != sizeof(reg_base))
> > > - return -1;
> > > + if (n != sizeof(reg_base)) {
> > > + if (!xlate_reg(devp, 0, ®_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.
Oops. :)
Acked-by: Mark A. Greer <mgreer at mvista.com>
More information about the Linuxppc-dev
mailing list