mt_lpae.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef __MT_LPAE_H__
  2. #define __MT_LPAE_H__
  3. #ifdef CONFIG_ARM_LPAE
  4. #define INTERAL_MAPPING_OFFSET (0x40000000)
  5. #define INTERAL_MAPPING_LIMIT (INTERAL_MAPPING_OFFSET + 0x80000000)
  6. #define INFRA_LARGE_MEMORY_SETTING (CKSYS_BASE + 0x1F00)
  7. #define IS_MT_LARGE_MEMORY_MODE (readl(IOMEM(INFRA_LARGE_MEMORY_SETTING)) >> 13 & 0x1)
  8. #define MT_OVERFLOW_ADDR_START 0x100000000ULL
  9. /* For HW modules which support 33-bit address setting */
  10. #define CROSS_OVERFLOW_ADDR_TRANSFER(phy_addr, size, ret) \
  11. do { \
  12. if (((phys_addr_t)phy_addr < MT_OVERFLOW_ADDR_START) && (((phys_addr_t)phy_addr + size) \
  13. >= MT_OVERFLOW_ADDR_START)) \
  14. ret = MT_OVERFLOW_ADDR_START - phy_addr; \
  15. else \
  16. ret = 0; \
  17. } while (0)
  18. /* For SPM and MD32 only */
  19. #define MAPPING_DRAM_ACCESS_ADDR(phy_addr) \
  20. do { \
  21. if (phy_addr >= INTERAL_MAPPING_OFFSET && phy_addr < INTERAL_MAPPING_LIMIT) \
  22. phy_addr += INTERAL_MAPPING_OFFSET; \
  23. } while (0)
  24. #else /* !CONFIG_ARM_LPAE */
  25. #define IS_MT_LARGE_MEMORY_MODE 0
  26. #define CROSS_OVERFLOW_ADDR_TRANSFER(phy_addr, size, ret)
  27. #define MAPPING_DRAM_ACCESS_ADDR(phy_addr)
  28. #define MT_OVERFLOW_ADDR_START 0
  29. #endif
  30. #endif /*!__MT_LPAE_H__ */