
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