Hi Paul, On 16 May 2016 at 11:44, Paul Burton <paul.bur...@imgtec.com> wrote: > If the UART is to be accessed using I/O port accessors (inb & outb) then > using map_physmem doesn't make sense, since it operates in a different > memory space. Remove the call to map_physmem when > CONFIG_SYS_NS16550_PORT_MAPPED is defined, allowing I/O port addresses > to not be mangled by the incorrect mapping. > > Signed-off-by: Paul Burton <paul.bur...@imgtec.com> > --- > > Changes in v2: > - New patch, part of a simplified approach tackling only a single Malta UART. > > drivers/serial/ns16550.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c > index 28da9dd..e58e6aa 100644 > --- a/drivers/serial/ns16550.c > +++ b/drivers/serial/ns16550.c > @@ -100,7 +100,11 @@ static void ns16550_writeb(NS16550_t port, int offset, > int value) > unsigned char *addr; > > offset *= 1 << plat->reg_shift; > +#ifdef CONFIG_SYS_NS16550_PORT_MAPPED > + addr = (unsigned char *)plat->base + offset; > +#else > addr = map_physmem(plat->base, 0, MAP_NOCACHE) + offset; > +#endif
Please don't add CONFIG #ifdefs in these functions. Perhaps it needs to be another parameter? Possibly a flag. But with driver-model we need to be able to support both options in the core code. This driver is a real mess. I'm hoping we can simplify it once we have everything on driver model. > /* > * As far as we know it doesn't make sense to support selection of > * these options at run-time, so use the existing CONFIG options. > @@ -114,7 +118,11 @@ static int ns16550_readb(NS16550_t port, int offset) > unsigned char *addr; > > offset *= 1 << plat->reg_shift; > +#ifdef CONFIG_SYS_NS16550_PORT_MAPPED > + addr = (unsigned char *)plat->base + offset; > +#else > addr = map_physmem(plat->base, 0, MAP_NOCACHE) + offset; > +#endif > > return serial_in_shift(addr + plat->reg_offset, plat->reg_shift); > } > -- > 2.8.2 > Regards, Simon _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot