mt_dramc.h 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #ifndef __DRAMC_H__
  2. #define __DRAMC_H__
  3. #define DUAL_FREQ_DIFF_RLWL /* If defined, need to set MR2 in dramcinit. */
  4. #define DMA_SRC IOMEM((CQDMA_BASE_ADDR + 0x001C))
  5. #define DMA_DST IOMEM((CQDMA_BASE_ADDR + 0x0020))
  6. #define DMA_LEN1 IOMEM((CQDMA_BASE_ADDR + 0x0024))
  7. #define DMA_GSEC_EN IOMEM((CQDMA_BASE_ADDR + 0x0058))
  8. #define DMA_INT_EN IOMEM((CQDMA_BASE_ADDR + 0x0004))
  9. #define DMA_CON IOMEM((CQDMA_BASE_ADDR + 0x0018))
  10. #define DMA_START IOMEM((CQDMA_BASE_ADDR + 0x0008))
  11. #define DMA_INT_FLAG IOMEM((CQDMA_BASE_ADDR + 0x0000))
  12. #define PDEF_DRAMC0_REG_088 IOMEM((DRAMCAO_BASE_ADDR + 0x0088))
  13. #define PDEF_DRAMC0_REG_0E4 IOMEM((DRAMCAO_BASE_ADDR + 0x00E4))
  14. #define PDEF_DRAMC0_REG_1DC IOMEM((DRAMCAO_BASE_ADDR + 0x01DC))
  15. #define PDEF_DRAMC0_REG_1E4 IOMEM((DRAMCAO_BASE_ADDR + 0x01E4))
  16. #define PDEF_DRAMC0_REG_3B8 IOMEM((DRAMCNAO_BASE_ADDR + 0x03B8))
  17. #define DMA_GDMA_LEN_MAX_MASK (0x000FFFFF)
  18. #define DMA_GSEC_EN_BIT (0x00000001)
  19. #define DMA_INT_EN_BIT (0x00000001)
  20. #define DMA_INT_FLAG_CLR_BIT (0x00000000)
  21. #define DMA_LEN2 IOMEM((CQDMA_BASE_ADDR + 0x0028))
  22. #define DMA_SRC2 IOMEM((CQDMA_BASE_ADDR + 0x002C))
  23. #define DMA_CON_WPEN 0x00008000
  24. #if 0
  25. #define CHA_DRAMCAO_BASE 0xF0004000
  26. #define CHA_DDRPHY_BASE 0xF000F000
  27. #define CHA_DRAMCNAO_BASE 0xF020E000
  28. #define INFRA_BASE 0xF0001000
  29. #define MEM_DCM_CTRL (INFRA_BASE + 0x078)
  30. #define DFS_MEM_DCM_CTRL (INFRA_BASE + 0x07c)
  31. #define CLK_CFG_0_CLR (0xF0000048)
  32. #define CLK_CFG_0_SET (0xF0000044)
  33. #define CLK_CFG_UPDATE (0xF0000004)
  34. #define PCM_INI_PWRON0_REG (0xF0006010)
  35. #endif
  36. #define LPDDR3_MODE_REG_2_LOW 0x00140002 /* RL6 WL3. */
  37. #define LPDDR2_MODE_REG_2_LOW 0x00040002 /* RL6 WL3. */
  38. #ifdef DDR_1866
  39. #define LPDDR3_MODE_REG_2 0x001C0002
  40. #else
  41. #define LPDDR3_MODE_REG_2 0x001A0002
  42. #endif
  43. #define LPDDR2_MODE_REG_2 0x00060002
  44. #define DRAMC_REG_MRS 0x088
  45. #define DRAMC_REG_PADCTL4 0x0e4
  46. #define DRAMC_REG_LPDDR2_3 0x1e0
  47. #define DRAMC_REG_SPCMD 0x1e4
  48. #define DRAMC_REG_ACTIM1 0x1e8
  49. #define DRAMC_REG_RRRATE_CTL 0x1f4
  50. #define DRAMC_REG_MRR_CTL 0x1fc
  51. #define DRAMC_REG_SPCMDRESP 0x3b8
  52. /* #define READ_DRAM_TEMP_TEST */
  53. #define READ_DRAM_FREQ_TEST
  54. #define PATTERN1 0x5A5A5A5A
  55. #define PATTERN2 0xA5A5A5A5
  56. /*Config*/
  57. #define APDMA_TEST
  58. /* #define APDMAREG_DUMP */
  59. #define FREQ_HOPPING_TEST
  60. #define VCORE1_ADJ_TEST
  61. /* #define DUMP_DDR_RESERVED_MODE */
  62. #define PHASE_NUMBER 3
  63. #define DRAM_BASE (0x40000000ULL)
  64. #define BUFF_LEN 0x100
  65. #define IOREMAP_ALIGMENT 0x1000
  66. #define Delay_magic_num 0x295; /* We use GPT to measurement how many clk pass in 100us */
  67. /* #define HQA_HVcHVm */
  68. /* #define HQA_HVcLVm */
  69. /* #define HQA_LVcHVm */
  70. /* #define HQA_LVcLVm */
  71. /* #define HQA_NV */
  72. extern unsigned int DMA_TIMES_RECORDER;
  73. extern phys_addr_t get_max_DRAM_size(void);
  74. int DFS_APDMA_Enable(void);
  75. int DFS_APDMA_Init(void);
  76. int DFS_APDMA_END(void);
  77. int DFS_APDMA_early_init(void);
  78. void DFS_APDMA_dummy_read_preinit(void);
  79. void DFS_APDMA_dummy_read_deinit(void);
  80. void dma_dummy_read_for_vcorefs(int loops);
  81. void get_mempll_table_info(u32 *high_addr, u32 *low_addr, u32 *num);
  82. int get_dram_data_rate(void);
  83. unsigned int read_dram_temperature(void);
  84. void sync_hw_gating_value(void);
  85. int dram_can_support_fh(void);
  86. int dram_fh_steps_freq(unsigned int step);
  87. #if defined(CONFIG_ARCH_MT6753)
  88. int enter_pasr_dpd_config(unsigned char segment_rank0, unsigned char segment_rank1);
  89. int exit_pasr_dpd_config(void);
  90. #endif
  91. #ifdef FREQ_HOPPING_TEST
  92. int dram_do_dfs_by_fh(unsigned int freq);
  93. #endif
  94. #ifdef VCORE1_ADJ_TEST
  95. extern void pmic_voltage_read(unsigned int nAdjust);
  96. extern void pmic_Vcore_adjust(int nAdjust);
  97. extern void pmic_Vmem_adjust(int nAdjust);
  98. extern void pmic_Vmem_Cal_adjust(int nAdjust);
  99. extern void pmic_HQA_NoSSC_Voltage_adjust(int nAdjust);
  100. extern void pmic_HQA_Voltage_adjust(int nAdjust);
  101. #endif
  102. #ifdef DUMP_DDR_RESERVED_MODE
  103. extern void dump_DMA_Reserved_AREA(void);
  104. #endif
  105. extern u32 get_devinfo_with_index(u32 index);
  106. unsigned int ucDram_Register_Read(unsigned long u4reg_addr);
  107. void ucDram_Register_Write(unsigned long u4reg_addr, unsigned int u4reg_value);
  108. extern void *mt_dramc_base_get(void);
  109. extern void *mt_dramc_nao_base_get(void);
  110. extern void *mt_ddrphy_base_get(void);
  111. enum DDRTYPE {
  112. TYPE_DDR1 = 1,
  113. TYPE_LPDDR2,
  114. TYPE_LPDDR3,
  115. TYPE_PCDDR3,
  116. };
  117. enum RANKNUM {
  118. SINGLE_RANK = 1,
  119. DUAL_RANK,
  120. };
  121. /************************** Common Macro *********************/
  122. #define delay_a_while(count) \
  123. do { \
  124. register unsigned int delay; \
  125. asm volatile ("mov %0, %1\n\t" \
  126. "1:\n\t" \
  127. "subs %0, %0, #1\n\t" \
  128. "bne 1b\n\t" \
  129. : "+r" (delay) \
  130. : "r" (count) \
  131. : "cc"); \
  132. } while (0)
  133. #define mcDELAY_US(x) delay_a_while((U32) (x*1000*10))
  134. #endif /*__WDT_HW_H__*/