diff mbox

[U-Boot,v3,02/13] ns16550: change map_sysmem to map_physmem

Message ID 1447940895-7763-3-git-send-email-thomas@wytron.com.tw
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Thomas Chou Nov. 19, 2015, 1:48 p.m. UTC
Change map_sysmem() to map_physmem(,,MAP_NOCACHE). Though map_sysmem()
can be used to map system memory, it might be wrong to use it for I/O
ports.  The map_physmem() serves the same purpose to translate physical
address to virtual address with the additional flag to take care of cache
property. Most drivers use map_physmem() since I/O ports access should be
uncached. As ns16550 is a driver, it should use map_physmem() rather
than map_sysmem().

Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
---
 drivers/serial/ns16550.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

Comments

Simon Glass Nov. 19, 2015, 8:05 p.m. UTC | #1
On 19 November 2015 at 06:48, Thomas Chou <thomas@wytron.com.tw> wrote:
> Change map_sysmem() to map_physmem(,,MAP_NOCACHE). Though map_sysmem()
> can be used to map system memory, it might be wrong to use it for I/O
> ports.  The map_physmem() serves the same purpose to translate physical
> address to virtual address with the additional flag to take care of cache
> property. Most drivers use map_physmem() since I/O ports access should be
> uncached. As ns16550 is a driver, it should use map_physmem() rather
> than map_sysmem().
>
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> ---
>  drivers/serial/ns16550.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)

Acked-by: Simon Glass <sjg@chromium.org>
Tom Rini Nov. 22, 2015, 3:52 p.m. UTC | #2
On Thu, Nov 19, 2015 at 09:48:04PM +0800, Thomas Chou wrote:

> Change map_sysmem() to map_physmem(,,MAP_NOCACHE). Though map_sysmem()
> can be used to map system memory, it might be wrong to use it for I/O
> ports.  The map_physmem() serves the same purpose to translate physical
> address to virtual address with the additional flag to take care of cache
> property. Most drivers use map_physmem() since I/O ports access should be
> uncached. As ns16550 is a driver, it should use map_physmem() rather
> than map_sysmem().
> 
> Signed-off-by: Thomas Chou <thomas@wytron.com.tw>
> Acked-by: Simon Glass <sjg@chromium.org>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 6433844..8d028de 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -8,7 +8,6 @@ 
 #include <dm.h>
 #include <errno.h>
 #include <fdtdec.h>
-#include <mapmem.h>
 #include <ns16550.h>
 #include <serial.h>
 #include <watchdog.h>
@@ -97,7 +96,7 @@  static void ns16550_writeb(NS16550_t port, int offset, int value)
 	unsigned char *addr;
 
 	offset *= 1 << plat->reg_shift;
-	addr = map_sysmem(plat->base, 0) + offset;
+	addr = map_physmem(plat->base, 0, MAP_NOCACHE) + 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.
@@ -111,7 +110,7 @@  static int ns16550_readb(NS16550_t port, int offset)
 	unsigned char *addr;
 
 	offset *= 1 << plat->reg_shift;
-	addr = map_sysmem(plat->base, 0) + offset;
+	addr = map_physmem(plat->base, 0, MAP_NOCACHE) + offset;
 
 	return serial_in_shift(addr, plat->reg_shift);
 }