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 05/14] FSL DDR: Add e500 TLB helper for DDR code
Date: Tue, 12 Aug 2008 11:06:13 -0500	[thread overview]
Message-ID: <1218557182-1328-5-git-send-email-galak@kernel.crashing.org> (raw)
In-Reply-To: <1218557182-1328-4-git-send-email-galak@kernel.crashing.org>

Provide a helper function that board code can call to map TLBs when
setting up DDR.

Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
---
 cpu/mpc85xx/tlb.c     |   63 +++++++++++++++++++++++++++++++++++++++++++++++++
 include/asm-ppc/mmu.h |    1 +
 2 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/cpu/mpc85xx/tlb.c b/cpu/mpc85xx/tlb.c
index 3d15d50..63f34e6 100644
--- a/cpu/mpc85xx/tlb.c
+++ b/cpu/mpc85xx/tlb.c
@@ -90,3 +90,66 @@ void init_tlbs(void)
 
 	return ;
 }
+
+unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg)
+{
+	unsigned int tlb_size;
+	unsigned int ram_tlb_index;
+	unsigned int ram_tlb_address;
+
+	/*
+	 * Determine size of each TLB1 entry.
+	 */
+	switch (memsize_in_meg) {
+	case 16:
+	case 32:
+		tlb_size = BOOKE_PAGESZ_16M;
+		break;
+	case 64:
+	case 128:
+		tlb_size = BOOKE_PAGESZ_64M;
+		break;
+	case 256:
+	case 512:
+		tlb_size = BOOKE_PAGESZ_256M;
+		break;
+	case 1024:
+	case 2048:
+		if (PVR_VER(get_pvr()) > PVR_VER(PVR_85xx))
+			tlb_size = BOOKE_PAGESZ_1G;
+		else
+			tlb_size = BOOKE_PAGESZ_256M;
+		break;
+	default:
+		puts("DDR: only 16M,32M,64M,128M,256M,512M,1G and 2G are supported.\n");
+
+		/*
+		 * The memory was not able to be mapped.
+		 * Default to a small size.
+		 */
+		tlb_size = BOOKE_PAGESZ_64M;
+		memsize_in_meg = 64;
+		break;
+	}
+
+	/*
+	 * Configure DDR TLB1 entries.
+	 * Starting at TLB1 8, use no more than 8 TLB1 entries.
+	 */
+	ram_tlb_index = 8;
+	ram_tlb_address = (unsigned int)CFG_DDR_SDRAM_BASE;
+	while (ram_tlb_address < (memsize_in_meg * 1024 * 1024)
+	      && ram_tlb_index < 16) {
+		set_tlb(1, ram_tlb_address, ram_tlb_address,
+			MAS3_SX|MAS3_SW|MAS3_SR, 0,
+			0, ram_tlb_index, tlb_size, 1);
+
+		ram_tlb_address += (0x1000 << ((tlb_size - 1) * 2));
+		ram_tlb_index++;
+	}
+
+	/*
+	 * Confirm that the requested amount of memory was mapped.
+	 */
+	return memsize_in_meg;
+}
diff --git a/include/asm-ppc/mmu.h b/include/asm-ppc/mmu.h
index 050a7b6..8975e6c 100644
--- a/include/asm-ppc/mmu.h
+++ b/include/asm-ppc/mmu.h
@@ -431,6 +431,7 @@ extern void set_tlb(u8 tlb, u32 epn, u64 rpn,
 extern void disable_tlb(u8 esel);
 extern void invalidate_tlb(u8 tlb);
 extern void init_tlbs(void);
+extern unsigned int setup_ddr_tlbs(unsigned int memsize_in_meg);
 
 #define SET_TLB_ENTRY(_tlb, _epn, _rpn, _perms, _wimge, _ts, _esel, _sz, _iprot) \
 	{ .tlb = _tlb, .epn = _epn, .rpn = _rpn, .perms = _perms, \
-- 
1.5.5.1

  reply	other threads:[~2008-08-12 16:06 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-12 16:06 [U-Boot] [PATCH 01/14] Add proper SPD definitions for DDR1/2/3 Kumar Gala
2008-08-12 16:06 ` [U-Boot] [PATCH 02/14] FSL DDR: Rewrite the FSL mpc8xxx DDR controller setup code Kumar Gala
2008-08-12 16:06   ` [U-Boot] [PATCH 03/14] FSL DDR: Add interactive DDR config support Kumar Gala
2008-08-12 16:06     ` [U-Boot] [PATCH 04/14] FSL DDR: Provide a generic fsl_ddr_sdram_set_lawbar() Kumar Gala
2008-08-12 16:06       ` Kumar Gala [this message]
2008-08-12 16:06         ` [U-Boot] [PATCH 06/14] FSL DDR: Convert MPC8641HPCN to new DDR code Kumar Gala
2008-08-12 16:06           ` [U-Boot] [PATCH 07/14] FSL DDR: Convert MPC8610HPCD " Kumar Gala
2008-08-12 16:06             ` [U-Boot] [PATCH 08/14] FSL DDR: Convert MPC8544DS " Kumar Gala
2008-08-12 16:06               ` [U-Boot] [PATCH 09/14] FSL DDR: Convert MPC8540ADS " Kumar Gala
2008-08-12 16:06                 ` [U-Boot] [PATCH 10/14] FSL DDR: Convert MPC8560ADS " Kumar Gala
2008-08-12 16:06                   ` [U-Boot] [PATCH 11/14] FSL DDR: Convert MPC8555ADS " Kumar Gala
2008-08-12 16:06                     ` [U-Boot] [PATCH 12/14] FSL DDR: Convert MPC8541CDS " Kumar Gala
2008-08-12 16:06                       ` [U-Boot] [PATCH 13/14] FSL DDR: Convert MPC8568MDS " Kumar Gala
2008-08-12 16:06                         ` [U-Boot] [PATCH 14/14] FSL DDR: Convert MPC8548CDS " Kumar Gala
2008-08-12 19:55                           ` Wolfgang Denk
2008-08-12 19:56                           ` Wolfgang Denk
2008-08-12 19:52     ` [U-Boot] [PATCH 03/14] FSL DDR: Add interactive DDR config support Wolfgang Denk
2008-08-12 19:05   ` [U-Boot] [PATCH 02/14] FSL DDR: Rewrite the FSL mpc8xxx DDR controller setup code Wolfgang Denk
2008-08-12 19:49 ` [U-Boot] [PATCH 01/14] Add proper SPD definitions for DDR1/2/3 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=1218557182-1328-5-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