@@ -157,12 +157,16 @@ const struct emif_regs emif_regs_lpddr2 = {
157157 .emif_rd_wr_lvl_rmp_ctl = 0x0 ,
158158 .emif_rd_wr_lvl_ctl = 0x0 ,
159159 .emif_ddr_phy_ctlr_1 = 0x0E084006 ,
160- .emif_rd_wr_exec_thresh = 0x00000405 ,
160+ .emif_rd_wr_exec_thresh = 0x80000405 ,
161161 .emif_ddr_ext_phy_ctrl_1 = 0x04010040 ,
162162 .emif_ddr_ext_phy_ctrl_2 = 0x00500050 ,
163163 .emif_ddr_ext_phy_ctrl_3 = 0x00500050 ,
164164 .emif_ddr_ext_phy_ctrl_4 = 0x00500050 ,
165- .emif_ddr_ext_phy_ctrl_5 = 0x00500050
165+ .emif_ddr_ext_phy_ctrl_5 = 0x00500050 ,
166+ .emif_prio_class_serv_map = 0x80000001 ,
167+ .emif_connect_id_serv_1_map = 0x80000094 ,
168+ .emif_connect_id_serv_2_map = 0x00000000 ,
169+ .emif_cos_config = 0x000FFFFF
166170};
167171
168172const u32 ext_phy_ctrl_const_base_lpddr2 [] = {
@@ -217,7 +221,11 @@ const struct emif_regs ddr3_emif_regs_400Mhz = {
217221 .emif_rd_wr_lvl_rmp_win = 0x0 ,
218222 .emif_rd_wr_lvl_rmp_ctl = 0x0 ,
219223 .emif_rd_wr_lvl_ctl = 0x0 ,
220- .emif_rd_wr_exec_thresh = 0x00000405
224+ .emif_rd_wr_exec_thresh = 0x80000405 ,
225+ .emif_prio_class_serv_map = 0x80000001 ,
226+ .emif_connect_id_serv_1_map = 0x80000094 ,
227+ .emif_connect_id_serv_2_map = 0x00000000 ,
228+ .emif_cos_config = 0x000FFFFF
221229};
222230
223231/* EMIF DDR3 Configurations are different for beta AM43X GP EVMs */
@@ -236,7 +244,11 @@ const struct emif_regs ddr3_emif_regs_400Mhz_beta = {
236244 .emif_ddr_ext_phy_ctrl_3 = 0x00000091 ,
237245 .emif_ddr_ext_phy_ctrl_4 = 0x000000B5 ,
238246 .emif_ddr_ext_phy_ctrl_5 = 0x000000E5 ,
239- .emif_rd_wr_exec_thresh = 0x00000405
247+ .emif_rd_wr_exec_thresh = 0x80000405 ,
248+ .emif_prio_class_serv_map = 0x80000001 ,
249+ .emif_connect_id_serv_1_map = 0x80000094 ,
250+ .emif_connect_id_serv_2_map = 0x00000000 ,
251+ .emif_cos_config = 0x000FFFFF
240252};
241253
242254/* EMIF DDR3 Configurations are different for production AM43X GP EVMs */
@@ -255,7 +267,11 @@ const struct emif_regs ddr3_emif_regs_400Mhz_production = {
255267 .emif_ddr_ext_phy_ctrl_3 = 0x00000091 ,
256268 .emif_ddr_ext_phy_ctrl_4 = 0x000000B9 ,
257269 .emif_ddr_ext_phy_ctrl_5 = 0x000000E6 ,
258- .emif_rd_wr_exec_thresh = 0x00000405
270+ .emif_rd_wr_exec_thresh = 0x80000405 ,
271+ .emif_prio_class_serv_map = 0x80000001 ,
272+ .emif_connect_id_serv_1_map = 0x80000094 ,
273+ .emif_connect_id_serv_2_map = 0x00000000 ,
274+ .emif_cos_config = 0x000FFFFF
259275};
260276
261277static const struct emif_regs ddr3_sk_emif_regs_400Mhz = {
@@ -277,7 +293,11 @@ static const struct emif_regs ddr3_sk_emif_regs_400Mhz = {
277293 .emif_rd_wr_lvl_rmp_win = 0x0 ,
278294 .emif_rd_wr_lvl_rmp_ctl = 0x00000000 ,
279295 .emif_rd_wr_lvl_ctl = 0x00000000 ,
280- .emif_rd_wr_exec_thresh = 0x00000000 ,
296+ .emif_rd_wr_exec_thresh = 0x80000000 ,
297+ .emif_prio_class_serv_map = 0x80000001 ,
298+ .emif_connect_id_serv_1_map = 0x80000094 ,
299+ .emif_connect_id_serv_2_map = 0x00000000 ,
300+ .emif_cos_config = 0x000FFFFF
281301};
282302
283303const u32 ext_phy_ctrl_const_base_ddr3 [] = {
@@ -587,8 +607,44 @@ void sdram_init(void)
587607
588608int board_init (void )
589609{
610+ struct l3f_cfg_bwlimiter * bwlimiter = (struct l3f_cfg_bwlimiter * )L3F_CFG_BWLIMITER ;
611+ u32 mreqprio_0 , mreqprio_1 , modena_init0_bw_fractional ,
612+ modena_init0_bw_integer , modena_init0_watermark_0 ;
613+
590614 gd -> bd -> bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100 ;
591615
616+ /* Clear all important bits for DSS errata that may need to be tweaked*/
617+ mreqprio_0 = readl (& cdev -> mreqprio_0 ) & MREQPRIO_0_SAB_INIT1_MASK &
618+ MREQPRIO_0_SAB_INIT0_MASK ;
619+
620+ mreqprio_1 = readl (& cdev -> mreqprio_1 ) & MREQPRIO_1_DSS_MASK ;
621+
622+ modena_init0_bw_fractional = readl (& bwlimiter -> modena_init0_bw_fractional ) &
623+ BW_LIMITER_BW_FRAC_MASK ;
624+
625+ modena_init0_bw_integer = readl (& bwlimiter -> modena_init0_bw_integer ) &
626+ BW_LIMITER_BW_INT_MASK ;
627+
628+ modena_init0_watermark_0 = readl (& bwlimiter -> modena_init0_watermark_0 ) &
629+ BW_LIMITER_BW_WATERMARK_MASK ;
630+
631+ /* Setting MReq Priority of the DSS*/
632+ mreqprio_0 |= 0x77 ;
633+
634+ /*
635+ * Set L3 Fast Configuration Register
636+ * Limiting bandwith for ARM core to 700 MBPS
637+ */
638+ modena_init0_bw_fractional |= 0x10 ;
639+ modena_init0_bw_integer |= 0x3 ;
640+
641+ writel (mreqprio_0 , & cdev -> mreqprio_0 );
642+ writel (mreqprio_1 , & cdev -> mreqprio_1 );
643+
644+ writel (modena_init0_bw_fractional , & bwlimiter -> modena_init0_bw_fractional );
645+ writel (modena_init0_bw_integer , & bwlimiter -> modena_init0_bw_integer );
646+ writel (modena_init0_watermark_0 , & bwlimiter -> modena_init0_watermark_0 );
647+
592648 return 0 ;
593649}
594650
0 commit comments