| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #ifndef __DRAMC_H__
- #define __DRAMC_H__
- #define DUAL_FREQ_DIFF_RLWL /* If defined, need to set MR2 in dramcinit. */
- #define DMA_SRC IOMEM((CQDMA_BASE_ADDR + 0x001C))
- #define DMA_DST IOMEM((CQDMA_BASE_ADDR + 0x0020))
- #define DMA_LEN1 IOMEM((CQDMA_BASE_ADDR + 0x0024))
- #define DMA_GSEC_EN IOMEM((CQDMA_BASE_ADDR + 0x0058))
- #define DMA_INT_EN IOMEM((CQDMA_BASE_ADDR + 0x0004))
- #define DMA_CON IOMEM((CQDMA_BASE_ADDR + 0x0018))
- #define DMA_START IOMEM((CQDMA_BASE_ADDR + 0x0008))
- #define DMA_INT_FLAG IOMEM((CQDMA_BASE_ADDR + 0x0000))
- #define PDEF_DRAMC0_REG_088 IOMEM((DRAMCAO_BASE_ADDR + 0x0088))
- #define PDEF_DRAMC0_REG_0E4 IOMEM((DRAMCAO_BASE_ADDR + 0x00E4))
- #define PDEF_DRAMC0_REG_1DC IOMEM((DRAMCAO_BASE_ADDR + 0x01DC))
- #define PDEF_DRAMC0_REG_1E4 IOMEM((DRAMCAO_BASE_ADDR + 0x01E4))
- #define PDEF_DRAMC0_REG_3B8 IOMEM((DRAMCNAO_BASE_ADDR + 0x03B8))
- #define DMA_GDMA_LEN_MAX_MASK (0x000FFFFF)
- #define DMA_GSEC_EN_BIT (0x00000001)
- #define DMA_INT_EN_BIT (0x00000001)
- #define DMA_INT_FLAG_CLR_BIT (0x00000000)
- #define DMA_LEN2 IOMEM((CQDMA_BASE_ADDR + 0x0028))
- #define DMA_SRC2 IOMEM((CQDMA_BASE_ADDR + 0x002C))
- #define DMA_CON_WPEN 0x00008000
- #if 0
- #define CHA_DRAMCAO_BASE 0xF0004000
- #define CHA_DDRPHY_BASE 0xF000F000
- #define CHA_DRAMCNAO_BASE 0xF020E000
- #define INFRA_BASE 0xF0001000
- #define MEM_DCM_CTRL (INFRA_BASE + 0x078)
- #define DFS_MEM_DCM_CTRL (INFRA_BASE + 0x07c)
- #define CLK_CFG_0_CLR (0xF0000048)
- #define CLK_CFG_0_SET (0xF0000044)
- #define CLK_CFG_UPDATE (0xF0000004)
- #define PCM_INI_PWRON0_REG (0xF0006010)
- #endif
- #define LPDDR3_MODE_REG_2_LOW 0x00140002 /* RL6 WL3. */
- #define LPDDR2_MODE_REG_2_LOW 0x00040002 /* RL6 WL3. */
- #ifdef DDR_1866
- #define LPDDR3_MODE_REG_2 0x001C0002
- #else
- #define LPDDR3_MODE_REG_2 0x001A0002
- #endif
- #define LPDDR2_MODE_REG_2 0x00060002
- #define DRAMC_REG_MRS 0x088
- #define DRAMC_REG_PADCTL4 0x0e4
- #define DRAMC_REG_LPDDR2_3 0x1e0
- #define DRAMC_REG_SPCMD 0x1e4
- #define DRAMC_REG_ACTIM1 0x1e8
- #define DRAMC_REG_RRRATE_CTL 0x1f4
- #define DRAMC_REG_MRR_CTL 0x1fc
- #define DRAMC_REG_SPCMDRESP 0x3b8
- /* #define READ_DRAM_TEMP_TEST */
- #define READ_DRAM_FREQ_TEST
- #define PATTERN1 0x5A5A5A5A
- #define PATTERN2 0xA5A5A5A5
- /*Config*/
- #define APDMA_TEST
- /* #define APDMAREG_DUMP */
- #define FREQ_HOPPING_TEST
- #define VCORE1_ADJ_TEST
- /* #define DUMP_DDR_RESERVED_MODE */
- #define PHASE_NUMBER 3
- #define DRAM_BASE (0x40000000ULL)
- #define BUFF_LEN 0x100
- #define IOREMAP_ALIGMENT 0x1000
- #define Delay_magic_num 0x295; /* We use GPT to measurement how many clk pass in 100us */
- /* #define HQA_HVcHVm */
- /* #define HQA_HVcLVm */
- /* #define HQA_LVcHVm */
- /* #define HQA_LVcLVm */
- /* #define HQA_NV */
- extern unsigned int DMA_TIMES_RECORDER;
- extern phys_addr_t get_max_DRAM_size(void);
- int DFS_APDMA_Enable(void);
- int DFS_APDMA_Init(void);
- int DFS_APDMA_END(void);
- int DFS_APDMA_early_init(void);
- void DFS_APDMA_dummy_read_preinit(void);
- void DFS_APDMA_dummy_read_deinit(void);
- void dma_dummy_read_for_vcorefs(int loops);
- void get_mempll_table_info(u32 *high_addr, u32 *low_addr, u32 *num);
- int get_dram_data_rate(void);
- unsigned int read_dram_temperature(void);
- void sync_hw_gating_value(void);
- int dram_can_support_fh(void);
- int dram_fh_steps_freq(unsigned int step);
- #if defined(CONFIG_ARCH_MT6753)
- int enter_pasr_dpd_config(unsigned char segment_rank0, unsigned char segment_rank1);
- int exit_pasr_dpd_config(void);
- #endif
- #ifdef FREQ_HOPPING_TEST
- int dram_do_dfs_by_fh(unsigned int freq);
- #endif
- #ifdef VCORE1_ADJ_TEST
- extern void pmic_voltage_read(unsigned int nAdjust);
- extern void pmic_Vcore_adjust(int nAdjust);
- extern void pmic_Vmem_adjust(int nAdjust);
- extern void pmic_Vmem_Cal_adjust(int nAdjust);
- extern void pmic_HQA_NoSSC_Voltage_adjust(int nAdjust);
- extern void pmic_HQA_Voltage_adjust(int nAdjust);
- #endif
- #ifdef DUMP_DDR_RESERVED_MODE
- extern void dump_DMA_Reserved_AREA(void);
- #endif
- extern u32 get_devinfo_with_index(u32 index);
- unsigned int ucDram_Register_Read(unsigned long u4reg_addr);
- void ucDram_Register_Write(unsigned long u4reg_addr, unsigned int u4reg_value);
- extern void *mt_dramc_base_get(void);
- extern void *mt_dramc_nao_base_get(void);
- extern void *mt_ddrphy_base_get(void);
- enum DDRTYPE {
- TYPE_DDR1 = 1,
- TYPE_LPDDR2,
- TYPE_LPDDR3,
- TYPE_PCDDR3,
- };
- enum RANKNUM {
- SINGLE_RANK = 1,
- DUAL_RANK,
- };
- /************************** Common Macro *********************/
- #define delay_a_while(count) \
- do { \
- register unsigned int delay; \
- asm volatile ("mov %0, %1\n\t" \
- "1:\n\t" \
- "subs %0, %0, #1\n\t" \
- "bne 1b\n\t" \
- : "+r" (delay) \
- : "r" (count) \
- : "cc"); \
- } while (0)
- #define mcDELAY_US(x) delay_a_while((U32) (x*1000*10))
- #endif /*__WDT_HW_H__*/
|