public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Kumar Gala <galak@kernel.crashing.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v5 06/10] FSL DDR: Add 86xx specific register setting
Date: Tue, 26 Aug 2008 15:01:34 -0500	[thread overview]
Message-ID: <1219780898-9262-9-git-send-email-galak@kernel.crashing.org> (raw)
In-Reply-To: <1219780898-9262-8-git-send-email-galak@kernel.crashing.org>

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
 cpu/mpc86xx/Makefile   |    6 +++
 cpu/mpc86xx/ddr-8641.c |   86 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 92 insertions(+), 0 deletions(-)
 create mode 100644 cpu/mpc86xx/ddr-8641.c

diff --git a/cpu/mpc86xx/Makefile b/cpu/mpc86xx/Makefile
index 454c728..12ad66d 100644
--- a/cpu/mpc86xx/Makefile
+++ b/cpu/mpc86xx/Makefile
@@ -39,6 +39,12 @@ COBJS-y	+= interrupts.o
 
 COBJS-$(CONFIG_OF_LIBFDT) += fdt.o
 
+ifeq ($(CONFIG_FSL_DDR2),y)
+COBJS-$(CONFIG_MPC8641) += ddr-8641.o
+# 8610 & 8641 are identical w/regards to DDR
+COBJS-$(CONFIG_MPC8610) += ddr-8641.o
+endif
+
 ifneq ($(CONFIG_FSL_DDR2),y)
 COBJS-y	+= spd_sdram.o
 endif
diff --git a/cpu/mpc86xx/ddr-8641.c b/cpu/mpc86xx/ddr-8641.c
new file mode 100644
index 0000000..932ef22
--- /dev/null
+++ b/cpu/mpc86xx/ddr-8641.c
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2008 Freescale Semiconductor, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * Version 2 as published by the Free Software Foundation.
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/fsl_ddr_sdram.h>
+
+#if (CONFIG_CHIP_SELECTS_PER_CTRL > 4)
+#error Invalid setting for CONFIG_CHIP_SELECTS_PER_CTRL
+#endif
+
+void fsl_ddr_set_memctl_regs(const fsl_ddr_cfg_regs_t *regs,
+			     unsigned int ctrl_num)
+{
+	unsigned int i;
+	volatile ccsr_ddr_t *ddr;
+
+	switch (ctrl_num) {
+	case 0:
+		ddr = (void *)CFG_MPC86xx_DDR_ADDR;
+		break;
+	case 1:
+		ddr = (void *)CFG_MPC86xx_DDR2_ADDR;
+		break;
+	default:
+		printf("%s unexpected ctrl_num = %u\n", __FUNCTION__, ctrl_num);
+		return;
+	}
+
+	for (i = 0; i < CONFIG_CHIP_SELECTS_PER_CTRL; i++) {
+		if (i == 0) {
+			out_be32(&ddr->cs0_bnds, regs->cs[i].bnds);
+			out_be32(&ddr->cs0_bnds, regs->cs[i].bnds);
+			out_be32(&ddr->cs0_config, regs->cs[i].config);
+
+		} else if (i == 1) {
+			out_be32(&ddr->cs1_bnds, regs->cs[i].bnds);
+			out_be32(&ddr->cs1_config, regs->cs[i].config);
+
+		} else if (i == 2) {
+			out_be32(&ddr->cs2_bnds, regs->cs[i].bnds);
+			out_be32(&ddr->cs2_config, regs->cs[i].config);
+
+		} else if (i == 3) {
+			out_be32(&ddr->cs3_bnds, regs->cs[i].bnds);
+			out_be32(&ddr->cs3_config, regs->cs[i].config);
+		}
+	}
+
+	out_be32(&ddr->timing_cfg_3, regs->timing_cfg_3);
+	out_be32(&ddr->timing_cfg_0, regs->timing_cfg_0);
+	out_be32(&ddr->timing_cfg_1, regs->timing_cfg_1);
+	out_be32(&ddr->timing_cfg_2, regs->timing_cfg_2);
+	out_be32(&ddr->sdram_cfg_2, regs->ddr_sdram_cfg_2);
+	out_be32(&ddr->sdram_mode_1, regs->ddr_sdram_mode);
+	out_be32(&ddr->sdram_mode_2, regs->ddr_sdram_mode_2);
+	out_be32(&ddr->sdram_mode_cntl, regs->ddr_sdram_md_cntl);
+	out_be32(&ddr->sdram_interval, regs->ddr_sdram_interval);
+	out_be32(&ddr->sdram_data_init, regs->ddr_data_init);
+	out_be32(&ddr->sdram_clk_cntl, regs->ddr_sdram_clk_cntl);
+	out_be32(&ddr->init_addr, regs->ddr_init_addr);
+	out_be32(&ddr->init_ext_addr, regs->ddr_init_ext_addr);
+
+	debug("before go\n");
+
+	/*
+	 * 200 painful micro-seconds must elapse between
+	 * the DDR clock setup and the DDR config enable.
+	 */
+	udelay(200);
+	asm volatile("sync;isync");
+
+	out_be32(&ddr->sdram_cfg_1, regs->ddr_sdram_cfg);
+
+	/*
+	 * Poll DDR_SDRAM_CFG_2[D_INIT] bit until auto-data init is done
+	 */
+	while (in_be32(&ddr->sdram_cfg_2) & 0x10) {
+		udelay(10000);		/* throttle polling rate */
+	}
+}
-- 
1.5.5.1

  reply	other threads:[~2008-08-26 20:01 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-26 20:01 [U-Boot] [PATCH v5 00/10] FSL DDR rework Kumar Gala
2008-08-26 20:01 ` [U-Boot] [PATCH v5 01/10] Add proper SPD definitions for DDR1/2/3 Kumar Gala
2008-08-26 20:01   ` [U-Boot] [PATCH v5 02/10] FSL DDR: Provide a generic set_ddr_laws() Kumar Gala
2008-08-26 20:01     ` [U-Boot] [PATCH v5 03/10] FSL DDR: Rewrite the FSL mpc8xxx DDR controller setup code Kumar Gala
2008-08-26 20:01       ` [U-Boot] [PATCH v5 04/10] FSL DDR: Add DDR1 DIMM paramter support Kumar Gala
2008-08-26 20:01         ` [U-Boot] [PATCH v5 04/10] FSL DDR: Add DDR1 support Kumar Gala
2008-08-26 20:01           ` [U-Boot] [PATCH v5 05/10] FSL DDR: Add DDR2 DIMM paramter support Kumar Gala
2008-08-26 20:01             ` [U-Boot] [PATCH v5 05/10] FSL DDR: Add DDR2 support Kumar Gala
2008-08-26 20:01               ` Kumar Gala [this message]
2008-08-26 20:01                 ` [U-Boot] [PATCH v5 07/10] FSL DDR: Convert MPC8641HPCN to new DDR code Kumar Gala
2008-08-26 20:01                   ` [U-Boot] [PATCH v5 08/10] FSL DDR: Convert MPC8610HPCD " Kumar Gala
2008-08-26 20:01                     ` [U-Boot] [PATCH v5 09/10] FSL DDR: Convert SBC8641D " Kumar Gala
2008-08-26 20:01                       ` [U-Boot] [PATCH v5 10/10] FSL DDR: Remove old SPD support from cpu/mpc86xx Kumar Gala
2008-08-27  0:05               ` [U-Boot] [PATCH v5 05/10] FSL DDR: Add DDR2 support Kumar Gala
2008-08-27  0:05           ` [U-Boot] [PATCH v5 04/10] FSL DDR: Add DDR1 support Kumar Gala
2008-08-27  0:08             ` Wolfgang Denk
2008-08-27  0:08 ` [U-Boot] [PATCH v5 00/10] FSL DDR rework Wolfgang Denk

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1219780898-9262-9-git-send-email-galak@kernel.crashing.org \
    --to=galak@kernel.crashing.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox