|
|
|
@ -151,22 +151,13 @@ static void emif_update_timings(u32 base, const struct emif_regs *regs) |
|
|
|
|
writel(regs->zq_config, &emif->emif_zq_config); |
|
|
|
|
writel(regs->temp_alert_config, &emif->emif_temp_alert_config); |
|
|
|
|
writel(regs->emif_ddr_phy_ctlr_1, &emif->emif_ddr_phy_ctrl_1_shdw); |
|
|
|
|
/*
|
|
|
|
|
* Workaround: |
|
|
|
|
* In a specific situation, the OCP interface between the DMM and |
|
|
|
|
* EMIF may hang. |
|
|
|
|
* 1. A TILER port is used to perform 2D burst writes of |
|
|
|
|
* width 1 and height 8 |
|
|
|
|
* 2. ELLAn port is used to perform reads |
|
|
|
|
* 3. All accesses are routed to the same EMIF controller |
|
|
|
|
* |
|
|
|
|
* Work around to avoid this issue REG_SYS_THRESH_MAX value should |
|
|
|
|
* be kept higher than default 0x7. As per recommondation 0x0A will |
|
|
|
|
* be used for better performance with REG_LL_THRESH_MAX = 0x00 |
|
|
|
|
*/ |
|
|
|
|
if (omap_revision() == OMAP4430_ES1_0) { |
|
|
|
|
writel(EMIF_L3_CONFIG_VAL_SYS_THRESH_0A_LL_THRESH_00, |
|
|
|
|
&emif->emif_l3_config); |
|
|
|
|
|
|
|
|
|
if (omap_revision() >= OMAP4460_ES1_0) { |
|
|
|
|
writel(EMIF_L3_CONFIG_VAL_SYS_10_MPU_3_LL_0, |
|
|
|
|
&emif->emif_l3_config); |
|
|
|
|
} else { |
|
|
|
|
writel(EMIF_L3_CONFIG_VAL_SYS_10_LL_0, |
|
|
|
|
&emif->emif_l3_config); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -504,7 +495,7 @@ static u32 get_read_idle_ctrl_reg(u8 volt_ramp) |
|
|
|
|
{ |
|
|
|
|
u32 idle = 0, val = 0; |
|
|
|
|
if (volt_ramp) |
|
|
|
|
val = ns_2_cycles(READ_IDLE_INTERVAL_DVFS) / 64 + 1; |
|
|
|
|
val = ns_2_cycles(READ_IDLE_INTERVAL_DVFS) / 64 - 1; |
|
|
|
|
else |
|
|
|
|
/*Maximum value in normal conditions - suggested by hw team */ |
|
|
|
|
val = 0x1FF; |
|
|
|
@ -1237,6 +1228,20 @@ static void dmm_init(u32 base) |
|
|
|
|
&hw_lisa_map_regs->dmm_lisa_map_1); |
|
|
|
|
writel(lisa_map_regs->dmm_lisa_map_0, |
|
|
|
|
&hw_lisa_map_regs->dmm_lisa_map_0); |
|
|
|
|
|
|
|
|
|
if (omap_revision() >= OMAP4460_ES1_0) { |
|
|
|
|
hw_lisa_map_regs = |
|
|
|
|
(struct dmm_lisa_map_regs *)OMAP44XX_MA_LISA_MAP_BASE; |
|
|
|
|
|
|
|
|
|
writel(lisa_map_regs->dmm_lisa_map_3, |
|
|
|
|
&hw_lisa_map_regs->dmm_lisa_map_3); |
|
|
|
|
writel(lisa_map_regs->dmm_lisa_map_2, |
|
|
|
|
&hw_lisa_map_regs->dmm_lisa_map_2); |
|
|
|
|
writel(lisa_map_regs->dmm_lisa_map_1, |
|
|
|
|
&hw_lisa_map_regs->dmm_lisa_map_1); |
|
|
|
|
writel(lisa_map_regs->dmm_lisa_map_0, |
|
|
|
|
&hw_lisa_map_regs->dmm_lisa_map_0); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|