]> git.sur5r.net Git - u-boot/commitdiff
dm: ns16550: Use an address instead of a pointer for the uart base
authorSimon Glass <sjg@chromium.org>
Thu, 23 Oct 2014 03:37:04 +0000 (21:37 -0600)
committerSimon Glass <sjg@chromium.org>
Fri, 24 Oct 2014 01:29:07 +0000 (19:29 -0600)
It is inconvenient to have to use casts when specifying platform data. Also
it is not strictly correct, since we should use map_sysmem() to convert an
address to a pointer.

Adjust the platform data to use an address.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@ti.com>
drivers/serial/ns16550.c
include/ns16550.h

index fe6cc26afe60b86c83f31772345b460c6adecbc5..2301f0af48c331036fa7b3d4bffc210ae0ac6b9f 100644 (file)
@@ -61,7 +61,7 @@ static void ns16550_writeb(NS16550_t port, int offset, int value)
        unsigned char *addr;
 
        offset *= 1 << plat->reg_shift;
-       addr = plat->base + offset;
+       addr = map_sysmem(plat->base, 0) + offset;
        /*
         * 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.
@@ -85,7 +85,7 @@ static int ns16550_readb(NS16550_t port, int offset)
        unsigned char *addr;
 
        offset *= 1 << plat->reg_shift;
-       addr = plat->base + offset;
+       addr = map_sysmem(plat->base, 0) + offset;
 #ifdef CONFIG_SYS_NS16550_PORT_MAPPED
        return inb(addr);
 #elif defined(CONFIG_SYS_NS16550_MEM32) && !defined(CONFIG_SYS_BIG_ENDIAN)
@@ -291,7 +291,7 @@ int ns16550_serial_ofdata_to_platdata(struct udevice *dev)
        if (addr == FDT_ADDR_T_NONE)
                return -EINVAL;
 
-       plat->base = (unsigned char *)addr;
+       plat->base = addr;
        plat->reg_shift = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
                                         "reg-shift", 1);
        com_port->plat = plat;
index 5784cfd97b859407c9b32fc3c4246e0674c742fd..0607379537d7ccf1038a0d322fdf29d95fbc0df4 100644 (file)
@@ -53,7 +53,7 @@
  * @clock:             UART base clock speed in Hz
  */
 struct ns16550_platdata {
-       unsigned char *base;
+       unsigned long base;
        int reg_shift;
        int clock;
 };