[U-Boot] [PATCH 03/12] ns16550: change map_sysmem to map_physmem

Thomas Chou thomas at wytron.com.tw
Tue Nov 17 01:12:27 CET 2015


Hi Simon,

On 2015年11月17日 05:08, Simon Glass wrote:
> Hi Thomas,
>
> On 16 November 2015 at 07:36, Thomas Chou <thomas at wytron.com.tw> wrote:
>> Change map_sysmem() to map_physmem(), because sandbox is the only
>> arch which define map_sysmem() and it actually only calls
>> map_physmem(). For some arch like nios2, the flag should be
>> MAP_NOCACHE for port access.
>
> Why change it to map_physmem()? Doesn't that make assumptions about
> how sandbox is implemented?
>

The question might be asked from the other side, why does it use 
map_sysmem()?

In README,

- CONFIG_ARCH_MAP_SYSMEM
Generally U-Boot (and in particular the md command) uses
effective address. It is therefore not necessary to regard
U-Boot address as virtual addresses that need to be translated
to physical addresses. However, sandbox requires this, since
it maintains its own little RAM buffer which contains all
addressable memory. This option causes some memory accesses
to be mapped through map_sysmem() / unmap_sysmem().

The map_physmem() serves the same purpose to translate physical address 
to virtual address with the additional flag to take care of cache 
property. Many drivers use map_physmem() since ports access should be 
uncached. As ns16550 is a driver, it should use map_physmem() rather 
than map_sysmem().

Best regards,
Thomas


More information about the U-Boot mailing list