static I/O device mapping of UART for early prints & console

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm doing kernel porting to arm926 based FPGA board (similar to
samsung-s3c6410 board). I'm trying to setup UART for early print and
console.
I gone through some reference boards(samsung-s3c6410) for setting up
uart for early print & console.

I can't trace the virtual mapping for UART registers in "adduart"
macro in "debug-macro.S" file

.macro addruart, rp, rv
 ldr     \rp, = S3C_PA_UART
 ldr     \rv, = S3C_VA_UART


Basically,I want to know how to calculate this virtual
address(S3C_VA_UART)  from the physical address(S3C_PA_UART)

Below are the details

#define PLAT_PHYS_OFFSET       0x50000000 (with 256 MB SDRAM)
#define CONFIG_PAGE_OFFSET  0xc0000000

#define S3C_ADDR_BASE   0xF6000000 (virtual address for device registers)
#define S3C_VA_UART       (S3C_ADDR_BASE + (0x01000000) )

#define S3C_PA_UART  0x7F005000 (UART - Physical address)
#define S3C_VA_UART  0xF7000000 (UART virtual address = 0xF6000000  +
0x01000000)


I tried to calculate the virtual address by using " __phys_to_virt(x)" macro.

#define __phys_to_virt(x)     ((x) - PHYS_OFFSET + PAGE_OFFSET)
from the above macro, I expect
__phys_to_virt(S3C_PA_UART) = S3C_VA_UART = 0xF7000000

but if i do calc,
0x7F005000 - 0x50000000 + 0xc0000000 = 0xef005000
which is not correct.
I think, i'm not using the correct macro for getting the virtual
address for UART.

can someone suggest how to do this calculation for getting proper
virtual address for UART for the above configuration.


Thanks,
pcuser

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux