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

Thomas Chou
2015-11-17T00:12:27Z

Hi Simon,

On 2015?11?17? 05:08, Simon Glass wrote:
> Hi Thomas,
>
> On 16 November 2015 at 07:36, Thomas Chou <thomas@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