TX51 pre-release
[karo-tx-redboot.git] / packages / hal / arm / mx37 / karo / v1_0 / include / plf_mmap.h
index 087612b..73b24a7 100644 (file)
 
 // This does not depend on the vaddr.
 #define HAL_MM_PAGESIZE(vaddr, pagesize) CYG_MACRO_START       \
-        (pagesize) = SZ_1M;                                    \
+       (pagesize) = SZ_1M;                                                                             \
 CYG_MACRO_END
 
 // Get the physical address from a virtual address:
 
 #define HAL_VIRT_TO_PHYS_ADDRESS( vaddr, paddr ) CYG_MACRO_START       \
-        cyg_uint32 _v_ = (cyg_uint32)(vaddr);                          \
-        if ( _v_ < 128 * SZ_1M )          /* SDRAM */                  \
-                _v_ += SDRAM_BASE_ADDR;                                        \
-        else                             /* Rest of it */              \
-                /* no change */ ;                                      \
-                (paddr) = _v_;                                         \
+               cyg_uint32 _v_ = (cyg_uint32)(vaddr);                                           \
+               if ( _v_ < 128 * SZ_1M )                  /* SDRAM */                           \
+                               _v_ += SDRAM_BASE_ADDR;                                                         \
+               else                                                     /* Rest of it */                       \
+                               /* no change */ ;                                                                       \
+                               (paddr) = _v_;                                                                          \
 CYG_MACRO_END
 
+/*
+ * translate the virtual address of ram space to physical address
+ * It is dependent on the implementation of hal_mmu_init
+ */
+static unsigned long __inline__ hal_virt_to_phy(unsigned long virt)
+{
+       if (virt < 0x08000000) {
+               return virt | 0x40000000;
+       }
+       if ((virt & 0xF0000000) == 0x40000000) {
+               return virt & ~0x08000000;
+       }
+       return virt;
+}
+
+/*
+ * remap the physical address of ram space to uncacheable virtual address space
+ * It is dependent on the implementation of hal_mmu_init
+ */
+static unsigned long __inline__ hal_ioremap_nocache(unsigned long phy)
+{
+       /* 0x48000000~0x48FFFFFF is uncacheable meory space which is mapped to SDRAM*/
+       if ((phy & 0xF0000000) == 0x40000000) {
+               phy |= 0x08000000;
+       }
+       return phy;
+}
+
 //---------------------------------------------------------------------------
 #endif // CYGONCE_HAL_BOARD_PLATFORM_PLF_MMAP_H