|
@@ -22,6 +22,7 @@
|
|
#include <asm/arch/hardware.h>
|
|
#include <asm/arch/hardware.h>
|
|
#include <asm/arch/clock.h>
|
|
#include <asm/arch/clock.h>
|
|
#include <asm/io.h>
|
|
#include <asm/io.h>
|
|
|
|
+#include <asm/emif.h>
|
|
|
|
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
DECLARE_GLOBAL_DATA_PTR;
|
|
|
|
|
|
@@ -29,7 +30,6 @@ struct ddr_regs *ddrregs = (struct ddr_regs *)DDR_PHY_BASE_ADDR;
|
|
struct vtp_reg *vtpreg = (struct vtp_reg *)VTP0_CTRL_ADDR;
|
|
struct vtp_reg *vtpreg = (struct vtp_reg *)VTP0_CTRL_ADDR;
|
|
struct ddr_ctrl *ddrctrl = (struct ddr_ctrl *)DDR_CTRL_ADDR;
|
|
struct ddr_ctrl *ddrctrl = (struct ddr_ctrl *)DDR_CTRL_ADDR;
|
|
|
|
|
|
-
|
|
|
|
int dram_init(void)
|
|
int dram_init(void)
|
|
{
|
|
{
|
|
/* dram_init must store complete ramsize in gd->ram_size */
|
|
/* dram_init must store complete ramsize in gd->ram_size */
|
|
@@ -143,33 +143,37 @@ static void config_emif_ddr2(void)
|
|
printf("Couldn't configure SDRAM\n");
|
|
printf("Couldn't configure SDRAM\n");
|
|
}
|
|
}
|
|
|
|
|
|
-void config_ddr(void)
|
|
|
|
|
|
+void config_ddr(short ddr_type)
|
|
{
|
|
{
|
|
struct ddr_ioctrl ioctrl;
|
|
struct ddr_ioctrl ioctrl;
|
|
|
|
|
|
enable_emif_clocks();
|
|
enable_emif_clocks();
|
|
|
|
|
|
- config_vtp();
|
|
|
|
|
|
+ if (ddr_type == EMIF_REG_SDRAM_TYPE_DDR2) {
|
|
|
|
+ config_vtp();
|
|
|
|
|
|
- config_cmd_ctrl(&ddr2_cmd_ctrl_data);
|
|
|
|
|
|
+ config_cmd_ctrl(&ddr2_cmd_ctrl_data);
|
|
|
|
|
|
- config_ddr_data(0, &ddr2_data);
|
|
|
|
- config_ddr_data(1, &ddr2_data);
|
|
|
|
|
|
+ config_ddr_data(0, &ddr2_data);
|
|
|
|
+ config_ddr_data(1, &ddr2_data);
|
|
|
|
|
|
- writel(PHY_RANK0_DELAY, &ddrregs->dt0rdelays0);
|
|
|
|
- writel(PHY_RANK0_DELAY, &ddrregs->dt1rdelays0);
|
|
|
|
|
|
+ writel(PHY_RANK0_DELAY, &ddrregs->dt0rdelays0);
|
|
|
|
+ writel(PHY_RANK0_DELAY, &ddrregs->dt1rdelays0);
|
|
|
|
|
|
- ioctrl.cmd1ctl = DDR_IOCTRL_VALUE;
|
|
|
|
- ioctrl.cmd2ctl = DDR_IOCTRL_VALUE;
|
|
|
|
- ioctrl.cmd3ctl = DDR_IOCTRL_VALUE;
|
|
|
|
- ioctrl.data1ctl = DDR_IOCTRL_VALUE;
|
|
|
|
- ioctrl.data2ctl = DDR_IOCTRL_VALUE;
|
|
|
|
|
|
+ ioctrl.cmd1ctl = DDR_IOCTRL_VALUE;
|
|
|
|
+ ioctrl.cmd2ctl = DDR_IOCTRL_VALUE;
|
|
|
|
+ ioctrl.cmd3ctl = DDR_IOCTRL_VALUE;
|
|
|
|
+ ioctrl.data1ctl = DDR_IOCTRL_VALUE;
|
|
|
|
+ ioctrl.data2ctl = DDR_IOCTRL_VALUE;
|
|
|
|
|
|
- config_io_ctrl(&ioctrl);
|
|
|
|
|
|
+ config_io_ctrl(&ioctrl);
|
|
|
|
|
|
- writel(readl(&ddrctrl->ddrioctrl) & 0xefffffff, &ddrctrl->ddrioctrl);
|
|
|
|
- writel(readl(&ddrctrl->ddrckectrl) | 0x00000001, &ddrctrl->ddrckectrl);
|
|
|
|
|
|
+ writel(readl(&ddrctrl->ddrioctrl) & 0xefffffff,
|
|
|
|
+ &ddrctrl->ddrioctrl);
|
|
|
|
+ writel(readl(&ddrctrl->ddrckectrl) | 0x00000001,
|
|
|
|
+ &ddrctrl->ddrckectrl);
|
|
|
|
|
|
- config_emif_ddr2();
|
|
|
|
|
|
+ config_emif_ddr2();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|