summaryrefslogtreecommitdiffstats
path: root/src/vendorcode/mediatek/mt8192/dramc/DRAMC_SUBSYS_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vendorcode/mediatek/mt8192/dramc/DRAMC_SUBSYS_config.c')
-rw-r--r--src/vendorcode/mediatek/mt8192/dramc/DRAMC_SUBSYS_config.c320
1 files changed, 320 insertions, 0 deletions
diff --git a/src/vendorcode/mediatek/mt8192/dramc/DRAMC_SUBSYS_config.c b/src/vendorcode/mediatek/mt8192/dramc/DRAMC_SUBSYS_config.c
new file mode 100644
index 000000000000..8e1e3323351b
--- /dev/null
+++ b/src/vendorcode/mediatek/mt8192/dramc/DRAMC_SUBSYS_config.c
@@ -0,0 +1,320 @@
+/* SPDX-License-Identifier: BSD-3-Clause */
+
+#include "dramc_dv_init.h"
+
+DRAM_TYPE_T MEM_TYPE = LPDDR4;
+LP4_DRAM_CONFIG_T LP4_INIT;
+LP5_DRAM_CONFIG_T LP5_INIT;
+ANA_top_config_T ana_top_p;
+ANA_DVFS_CORE_T ANA_option;
+DRAMC_DVFS_GROUP_CONFIG_T DFS_TOP[DFS_GROUP_NUM];
+DRAMC_SUBSYS_CONFIG_T DV_p;
+
+
+void ANA_TOP_FUNCTION_CFG(ANA_top_config_T *tr,U16 data_rate)
+{
+ // tr-> DLL_ASYNC_EN = 0 ; //from DV random
+ // tr-> NEW_RANK_MODE = 1 ; //from DV random
+ // tr-> DLL_IDLE_MODE = 1 ; //from DV random
+ // tr-> LP45_APHY_COMB_EN= 1 ; //from DV define
+ // tr-> NEW_8X_MODE = 1 ;
+
+
+ tr->ALL_SLAVE_EN = (data_rate <= 1866)?1:0;
+
+ if(LPDDR5_EN_S == 1)
+ {
+ tr->TX_ODT_DIS = (data_rate <=3200) ? 1 : 0 ;
+ } else {
+ tr->TX_ODT_DIS = (data_rate <=2400) ? 1 : 0 ;
+ }
+
+ mcSHOW_DBG_MSG(("=================================== \n"));
+ mcSHOW_DBG_MSG(("ANA top config\n" ));
+ mcSHOW_DBG_MSG(("=================================== \n"));
+ mcSHOW_DBG_MSG(("DLL_ASYNC_EN = %2d\n",tr->DLL_ASYNC_EN ));
+ mcSHOW_DBG_MSG(("ALL_SLAVE_EN = %2d\n",tr->ALL_SLAVE_EN ));
+ mcSHOW_DBG_MSG(("NEW_RANK_MODE = %2d\n",tr->NEW_RANK_MODE ));
+ mcSHOW_DBG_MSG(("DLL_IDLE_MODE = %2d\n",tr->DLL_IDLE_MODE ));
+ mcSHOW_DBG_MSG(("LP45_APHY_COMB_EN = %2d\n",tr->LP45_APHY_COMB_EN));
+ mcSHOW_DBG_MSG(("TX_ODT_DIS = %2d\n",tr->TX_ODT_DIS ));
+ mcSHOW_DBG_MSG(("NEW_8X_MODE = %2d\n",tr->NEW_8X_MODE ));
+ mcSHOW_DBG_MSG(("=================================== \n"));
+}
+
+
+void ANA_CLK_DIV_config( ANA_DVFS_CORE_T *tr,DRAMC_DVFS_GROUP_CONFIG_T *dfs)
+{
+ U32 SEMI_OPEN_FMIN = 300;
+ U32 SEMI_OPEN_FMAX = 500;//lp4 600
+ U32 PI_FMIN = 600;
+ U32 DQ_PICK;
+ U32 CA_PICK; //U
+ U32 CA_MCKIO; //S
+ U32 MCKIO_SEMI; //Q
+ U16 data_rate;
+
+ data_rate = dfs->data_rate;
+ tr->DQ_P2S_RATIO = dfs->DQ_P2S_RATIO;
+ tr->CKR = dfs->CKR;
+
+ //tr->CA_P2S_RATIO
+ tr->CA_P2S_RATIO = tr->DQ_P2S_RATIO/tr->CKR;
+
+ //tr->DQ_CA_OPEN
+ tr->DQ_CA_OPEN = ( data_rate < (SEMI_OPEN_FMIN * 2) ) ? 1 : 0;
+ tr->DQ_SEMI_OPEN = ( data_rate/2 < PI_FMIN ) ? (1-tr->DQ_CA_OPEN) : ((data_rate <= SEMI_OPEN_FMAX*2) ? (1-tr->DQ_CA_OPEN) : 0);
+ tr->CA_SEMI_OPEN = (( data_rate/(tr->CKR*2) < PI_FMIN ) ? ((data_rate/(tr->CKR*2) > SEMI_OPEN_FMAX) ? 0 : (((tr->CA_P2S_RATIO>2)||(tr->DQ_SEMI_OPEN))*(1-tr->DQ_CA_OPEN))) : tr->DQ_SEMI_OPEN);
+ tr->CA_FULL_RATE = (tr->DQ_CA_OPEN == 1) ? ((tr->CKR>1)?1:0) : ((tr->DQ_SEMI_OPEN*tr->CA_SEMI_OPEN*(tr->CKR>>1)) + (( data_rate/(tr->CKR*2) < PI_FMIN) ? (1-tr->CA_SEMI_OPEN) : 0 ));
+ tr->DQ_CKDIV4_EN = ( tr->DQ_SEMI_OPEN == 1) ? DONT_CARE_VALUE : ((( (data_rate/2) < 1200 ) ? 1 : 0 ) * (1-tr->DQ_CA_OPEN)) ;
+
+ CA_MCKIO = (data_rate/(tr->CKR*2))*(1+tr->CA_FULL_RATE);
+ DQ_PICK = (tr->DQ_SEMI_OPEN == 1) ? 0 : (data_rate/2) ;
+ CA_PICK = (tr->CA_SEMI_OPEN == 1) ? CA_MCKIO*2 : ((CA_MCKIO>=PI_FMIN) ? CA_MCKIO : (( CA_MCKIO >= (PI_FMIN/2) ) ? CA_MCKIO*2 : CA_MCKIO *4 ));
+
+ tr->CA_CKDIV4_EN = ((CA_PICK < 1200 ) ? 1 : 0 ) * ( 1- tr->DQ_CA_OPEN) ;
+
+ tr->CA_PREDIV_EN = (data_rate >= 4800) ? 1 : 0 ;
+
+ #if SA_CONFIG_EN
+ if(LPDDR4_EN_S)
+ {
+ // @Darren, for LP4 8PH Delay
+ if (data_rate <= 1866)
+ tr->PH8_DLY = 0;
+ else if (data_rate <= 2400)
+ tr->PH8_DLY = 0x11;
+ else if (data_rate <= 3200)
+ tr->PH8_DLY = 0xc;
+ else if (data_rate <= 3733)
+ tr->PH8_DLY = 0x9;
+ else
+ tr->PH8_DLY = 0x7;
+ }
+ else
+ #endif
+ {
+ tr->PH8_DLY = ((tr->DQ_CA_OPEN == 0) && (tr->DQ_SEMI_OPEN == 0) && (tr->DQ_CKDIV4_EN == 0)) ? ( (1000000>>4)/data_rate -4) : DONT_CARE_VALUE;
+ }
+
+ MCKIO_SEMI = (tr->DQ_SEMI_OPEN * tr->CA_SEMI_OPEN * (data_rate/2)) + (1-tr->DQ_SEMI_OPEN) * tr->CA_SEMI_OPEN * CA_MCKIO;
+
+ tr->SEMI_OPEN_CA_PICK_MCK_RATIO = ( MCKIO_SEMI == 0) ? DONT_CARE_VALUE : (CA_PICK*tr->DQ_P2S_RATIO)/data_rate ; //need to be improved
+
+ tr->DQ_AAMCK_DIV = (tr->DQ_SEMI_OPEN == 0) ? ((tr->DQ_P2S_RATIO/2)*(1-tr->DQ_SEMI_OPEN)) : DONT_CARE_VALUE;
+ tr->CA_AAMCK_DIV = (tr->CA_SEMI_OPEN == 0) ? ((tr->DQ_P2S_RATIO/(2*tr->CKR))*(1+tr->CA_FULL_RATE)) : DONT_CARE_VALUE;
+ tr->CA_ADMCK_DIV = CA_PICK/(data_rate/tr->DQ_P2S_RATIO); //need to be improved
+ //tr->DQ_TRACK_CA_EN = ((data_rate/2) >= 2133) ? 1 : 0 ; //for Alucary confirm that 'interface timing' sign NOT OK.
+ tr->DQ_TRACK_CA_EN = 0 ;
+ tr->PLL_FREQ = ((DQ_PICK*2*(tr->DQ_CKDIV4_EN+1)) > (CA_PICK*2*(tr->CA_CKDIV4_EN+1))) ? (DQ_PICK*2*(tr->DQ_CKDIV4_EN+1)) : (CA_PICK*2*(tr->CA_CKDIV4_EN+1));
+ #if SA_CONFIG_EN
+ //de-sense
+ if(data_rate==2400)
+ tr->PLL_FREQ = 2366; //DDR2366
+ else if(data_rate==1200)
+ tr->PLL_FREQ = 2288; //DDR1144
+ else if(data_rate==3200 || data_rate==1600)
+ tr->PLL_FREQ = 3068; //DDR3068 DDR1534
+ else if(data_rate==800)
+ tr->PLL_FREQ = 3016; //DDR754
+ else if(data_rate==400)
+ tr->PLL_FREQ = 4000; //DDR250 Op
+ #endif
+ tr->DQ_UI_PI_RATIO = 32; //TODO:notice here. infact if DQ_SEMI_OPEM == 1 UI_PI_RATIO will only 4 lower 2bit wihtout use
+ tr->CA_UI_PI_RATIO = (tr->CA_SEMI_OPEN == 0) ? ((tr->CA_FULL_RATE == 1)? 64 : DONT_CARE_VALUE) : 32;
+
+ mcSHOW_DBG_MSG(("=================================== \n"));
+ mcSHOW_DBG_MSG(("data_rate = %4d\n" ,data_rate ));
+ mcSHOW_DBG_MSG(("CKR = %1d\n" ,tr->CKR ));
+ mcSHOW_DBG_MSG(("DQ_P2S_RATIO = %1d\n" ,tr->DQ_P2S_RATIO ));
+ mcSHOW_DBG_MSG(("=================================== \n"));
+ mcSHOW_DBG_MSG(("CA_P2S_RATIO = %1d\n" ,tr->CA_P2S_RATIO ));
+ mcSHOW_DBG_MSG(("DQ_CA_OPEN = %1d\n" ,tr->DQ_CA_OPEN ));
+ mcSHOW_DBG_MSG(("DQ_SEMI_OPEN = %1d\n" ,tr->DQ_SEMI_OPEN ));
+ mcSHOW_DBG_MSG(("CA_SEMI_OPEN = %1d\n" ,tr->CA_SEMI_OPEN ));
+ mcSHOW_DBG_MSG(("CA_FULL_RATE = %1d\n" ,tr->CA_FULL_RATE ));
+ mcSHOW_DBG_MSG(("DQ_CKDIV4_EN = %1d\n" ,tr->DQ_CKDIV4_EN ));
+ mcSHOW_DBG_MSG(("CA_CKDIV4_EN = %1d\n" ,tr->CA_CKDIV4_EN ));
+ mcSHOW_DBG_MSG(("CA_PREDIV_EN = %1d\n" ,tr->CA_PREDIV_EN ));
+ mcSHOW_DBG_MSG(("PH8_DLY = %1d\n" ,tr->PH8_DLY ));
+ mcSHOW_DBG_MSG(("SEMI_OPEN_CA_PICK_MCK_RATIO= %1d\n" ,tr->SEMI_OPEN_CA_PICK_MCK_RATIO));
+ mcSHOW_DBG_MSG(("DQ_AAMCK_DIV = %1d\n" ,tr->DQ_AAMCK_DIV ));
+ mcSHOW_DBG_MSG(("CA_AAMCK_DIV = %1d\n" ,tr->CA_AAMCK_DIV ));
+ mcSHOW_DBG_MSG(("CA_ADMCK_DIV = %1d\n" ,tr->CA_ADMCK_DIV ));
+ mcSHOW_DBG_MSG(("DQ_TRACK_CA_EN = %1d\n" ,tr->DQ_TRACK_CA_EN ));
+ mcSHOW_DBG_MSG(("CA_PICK = %2d\n" ,CA_PICK ));
+ mcSHOW_DBG_MSG(("CA_MCKIO = %1d\n" ,CA_MCKIO ));
+ mcSHOW_DBG_MSG(("MCKIO_SEMI = %1d\n" ,MCKIO_SEMI ));
+ mcSHOW_DBG_MSG(("PLL_FREQ = %1d\n" ,tr->PLL_FREQ ));
+ mcSHOW_DBG_MSG(("DQ_UI_PI_RATIO = %1d\n" ,tr->DQ_UI_PI_RATIO ));
+ mcSHOW_DBG_MSG(("CA_UI_PI_RATIO = %1d\n" ,tr->CA_UI_PI_RATIO ));
+ mcSHOW_DBG_MSG(("=================================== \n"));
+}
+
+void DRAMC_SUBSYS_PRE_CONFIG(DRAMC_CTX_T *p, DRAMC_SUBSYS_CONFIG_T *tr)
+{
+ U8 gp_id;
+ tr->SRAM_EN = 1;
+ tr->MD32_EN = 1;
+ tr->a_cfg = &ana_top_p;
+ tr->a_opt = &ANA_option;
+ tr->lp4_init = &LP4_INIT;
+ tr->lp5_init = &LP5_INIT;
+
+ for(gp_id = 0; gp_id < DFS_GROUP_NUM; gp_id++)
+ {
+ tr->DFS_GP[gp_id] = &DFS_TOP[gp_id];
+ }
+
+ if(LPDDR4_EN_S)
+ {
+ (tr->DFS_GP[0])->data_rate = 4266; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8;
+ (tr->DFS_GP[1])->data_rate = 3200; (tr->DFS_GP[1])->DQ_P2S_RATIO = 8;
+ (tr->DFS_GP[2])->data_rate = 2400; (tr->DFS_GP[2])->DQ_P2S_RATIO = 8;
+ (tr->DFS_GP[3])->data_rate = 1866; (tr->DFS_GP[3])->DQ_P2S_RATIO = 8;
+ (tr->DFS_GP[4])->data_rate = 1600; (tr->DFS_GP[4])->DQ_P2S_RATIO = 4;
+ (tr->DFS_GP[5])->data_rate = 1200; (tr->DFS_GP[5])->DQ_P2S_RATIO = 4;
+ (tr->DFS_GP[6])->data_rate = 800 ; (tr->DFS_GP[6])->DQ_P2S_RATIO = 4;
+ (tr->DFS_GP[7])->data_rate = 400 ; (tr->DFS_GP[7])->DQ_P2S_RATIO = 4;
+ (tr->DFS_GP[8])->data_rate = 4266; (tr->DFS_GP[8])->DQ_P2S_RATIO = 4;
+ (tr->DFS_GP[9])->data_rate = 1600; (tr->DFS_GP[9])->DQ_P2S_RATIO = 4;
+
+ for(gp_id = 0; gp_id < DFS_GROUP_NUM; gp_id++)
+ {
+ (tr->DFS_GP[gp_id])->CKR = 1;
+ (tr->DFS_GP[gp_id])->DQSIEN_MODE = 1;
+ }
+#if 0//DV_CONFIG_EN==1
+ tr->lp4_init->LP4Y_EN = DUT_p.LP4Y_EN ;
+ tr->lp4_init->WR_PST = DUT_p.LP4_WR_PST ;
+ tr->lp4_init->OTF = DUT_p.LP4_OTF ;
+ tr->a_cfg->NEW_8X_MODE = DUT_p.NEW_8X_MODE ;
+ tr->a_cfg->LP45_APHY_COMB_EN = 1 ;
+ tr->a_cfg->DLL_IDLE_MODE = DUT_p.DLL_IDLE_MODE ;
+ tr->a_cfg->NEW_RANK_MODE = DUT_p.NEW_RANK_MODE ;
+ tr->a_cfg->DLL_ASYNC_EN = DUT_p.DLL_ASYNC_EN ;
+ tr->MD32_EN = DUT_p.MD32_EN ;
+ tr->SRAM_EN = DUT_p.SRAM_EN ;
+ tr->GP_NUM = DUT_p.GP_NUM ;
+
+
+ for(gp_id = 0; gp_id < DV_p.GP_NUM; gp_id++)
+ {
+ tr->DFS_GP[gp_id]->data_rate = DUT_shu_p[gp_id].data_rate ;
+ tr->DFS_GP[gp_id]->DQSIEN_MODE = DUT_shu_p[gp_id].DQSIEN_MODE ;
+ tr->DFS_GP[gp_id]->DQ_P2S_RATIO = DUT_shu_p[gp_id].DQ_P2S_RATIO;
+ tr->DFS_GP[gp_id]->CKR = DUT_shu_p[gp_id].CKR ;
+ }
+#endif
+ #if SA_CONFIG_EN
+ tr->lp4_init->EX_ROW_EN[0] = p->u110GBEn[RANK_0] ;
+ tr->lp4_init->EX_ROW_EN[1] = p->u110GBEn[RANK_1] ;
+ tr->lp4_init->BYTE_MODE[0] = 0 ;
+ tr->lp4_init->BYTE_MODE[1] = 0 ;
+ tr->lp4_init->LP4Y_EN = 0;//DUT_p.LP4Y_EN ;
+ tr->lp4_init->WR_PST = 1;//DUT_p.LP4_WR_PST ;
+ tr->lp4_init->OTF = 1;//DUT_p.LP4_OTF ;
+ tr->a_cfg->NEW_8X_MODE = 1;//DUT_p.NEW_8X_MODE ;
+ tr->a_cfg->LP45_APHY_COMB_EN = 1 ;
+ tr->a_cfg->DLL_IDLE_MODE = 1;//DUT_p.DLL_IDLE_MODE ;
+ tr->a_cfg->NEW_RANK_MODE = 1;//DUT_p.NEW_RANK_MODE ;
+ tr->a_cfg->DLL_ASYNC_EN = 0;//DUT_p.DLL_ASYNC_EN ;
+ tr->MD32_EN = 0;//DUT_p.MD32_EN ;
+ tr->SRAM_EN = 1;//DUT_p.SRAM_EN ;
+ tr->GP_NUM = 10;//DUT_p.GP_NUM ;
+
+ if(p->freq_sel==LP4_DDR4266)
+ {
+ (tr->DFS_GP[0])->data_rate = 4266; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8;
+ }
+ else if(p->freq_sel==LP4_DDR3733)
+ {
+ (tr->DFS_GP[0])->data_rate = 3733; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8;
+ }
+ else if(p->freq_sel==LP4_DDR3200)
+ {
+ (tr->DFS_GP[0])->data_rate = 3200; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8;
+ }
+ else if(p->freq_sel==LP4_DDR2400)
+ {
+ (tr->DFS_GP[0])->data_rate = 2400; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8;
+ }
+ else if(p->freq_sel==LP4_DDR1866)
+ {
+ (tr->DFS_GP[0])->data_rate = 1866; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8;
+ }
+ else if(p->freq_sel==LP4_DDR1600)
+ {
+ (tr->DFS_GP[0])->data_rate = 1600; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8;
+ }
+ else if(p->freq_sel==LP4_DDR1200)
+ {
+ (tr->DFS_GP[0])->data_rate = 1200; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8;
+ }
+ else if(p->freq_sel==LP4_DDR800)
+ {
+ (tr->DFS_GP[0])->data_rate = 800; (tr->DFS_GP[0])->DQ_P2S_RATIO = 4;
+ }
+ else if(p->freq_sel==LP4_DDR400)
+ {
+ (tr->DFS_GP[0])->data_rate = 400; (tr->DFS_GP[0])->DQ_P2S_RATIO = 4;
+ }
+ #endif
+
+//==============================================
+//Oterwise, SA should rebuild Top configuration.
+//==============================================
+
+ LP4_DRAM_config(tr->DFS_GP[0]->data_rate,tr->lp4_init);
+ }
+
+ //TODO for LPDDR5
+ //data_rate DQ_P2S_RATIO
+ //[4800:6400] 16
+ //[1600:4800) 8
+ //[400 :1600] 4
+ //=========================
+ //data_rate CKR
+ //[3733:6400] 4
+ //[400 :3733) 2
+ else if (MEM_TYPE == LPDDR5)
+ {
+ #if SA_CONFIG_EN
+ if(p->freq_sel==LP5_DDR4266)
+ {
+ (tr->DFS_GP[0])->data_rate = 4266; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8 ; tr->DFS_GP[0]->CKR = 4;tr->DFS_GP[0]->DQSIEN_MODE = 2;
+ }
+ else if(p->freq_sel==LP5_DDR5500)
+ {
+ (tr->DFS_GP[0])->data_rate = 5500; (tr->DFS_GP[0])->DQ_P2S_RATIO = 16 ; tr->DFS_GP[0]->CKR = 4;tr->DFS_GP[0]->DQSIEN_MODE = 2;
+ }
+ else
+ {
+ (tr->DFS_GP[0])->data_rate = 3200; (tr->DFS_GP[0])->DQ_P2S_RATIO = 8 ; tr->DFS_GP[0]->CKR = 2;tr->DFS_GP[0]->DQSIEN_MODE = 1;
+ }
+ #else
+ (tr->DFS_GP[0])->data_rate = 6400; (tr->DFS_GP[0])->DQ_P2S_RATIO = 16; tr->DFS_GP[0]->CKR = 4;tr->DFS_GP[0]->DQSIEN_MODE = 1;
+ #endif
+ (tr->DFS_GP[1])->data_rate = 3200; (tr->DFS_GP[1])->DQ_P2S_RATIO = 8 ; tr->DFS_GP[1]->CKR = 2;tr->DFS_GP[1]->DQSIEN_MODE = 1;
+ (tr->DFS_GP[2])->data_rate = 1600; (tr->DFS_GP[2])->DQ_P2S_RATIO = 4 ; tr->DFS_GP[2]->CKR = 2;tr->DFS_GP[2]->DQSIEN_MODE = 1;
+ (tr->DFS_GP[3])->data_rate = 4266; (tr->DFS_GP[3])->DQ_P2S_RATIO = 8 ; tr->DFS_GP[3]->CKR = 4;tr->DFS_GP[3]->DQSIEN_MODE = 1;
+ (tr->DFS_GP[4])->data_rate = 3733; (tr->DFS_GP[4])->DQ_P2S_RATIO = 8 ; tr->DFS_GP[4]->CKR = 4;tr->DFS_GP[4]->DQSIEN_MODE = 1;
+ (tr->DFS_GP[5])->data_rate = 1600; (tr->DFS_GP[5])->DQ_P2S_RATIO = 8 ; tr->DFS_GP[5]->CKR = 2;tr->DFS_GP[5]->DQSIEN_MODE = 1;
+ (tr->DFS_GP[6])->data_rate = 1200; (tr->DFS_GP[6])->DQ_P2S_RATIO = 4 ; tr->DFS_GP[6]->CKR = 2;tr->DFS_GP[6]->DQSIEN_MODE = 1;
+ (tr->DFS_GP[7])->data_rate = 800 ; (tr->DFS_GP[7])->DQ_P2S_RATIO = 4 ; tr->DFS_GP[7]->CKR = 2;tr->DFS_GP[7]->DQSIEN_MODE = 1;
+ (tr->DFS_GP[8])->data_rate = 400 ; (tr->DFS_GP[8])->DQ_P2S_RATIO = 4 ; tr->DFS_GP[8]->CKR = 2;tr->DFS_GP[8]->DQSIEN_MODE = 1;
+ (tr->DFS_GP[9])->data_rate = 5500; (tr->DFS_GP[9])->DQ_P2S_RATIO = 16; tr->DFS_GP[9]->CKR = 4;tr->DFS_GP[9]->DQSIEN_MODE = 1;
+ LP5_DRAM_config(tr->DFS_GP[0],tr->lp5_init);
+ }
+
+
+ ANA_TOP_FUNCTION_CFG(tr->a_cfg,tr->DFS_GP[0]->data_rate);
+ ANA_CLK_DIV_config(tr->a_opt,tr->DFS_GP[0]);
+
+ mcSHOW_DBG_MSG(("=================================== \n"));
+ mcSHOW_DBG_MSG(("memory_type:%s \n",LPDDR5_EN_S?"LPDDR5":"LPDDR4" ));
+ mcSHOW_DBG_MSG(("GP_NUM : %1d \n",tr->GP_NUM ));
+ mcSHOW_DBG_MSG(("SRAM_EN : %1d \n",tr->SRAM_EN ));
+ mcSHOW_DBG_MSG(("MD32_EN : %1d \n",tr->MD32_EN ));
+ mcSHOW_DBG_MSG(("=================================== \n"));
+}