From: Kumar Gala <galak@kernel.crashing.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 02/24] FSL DDR: Add e500 TLB helper for DDR code
Date: Wed, 27 Aug 2008 01:10:35 -0500 [thread overview]
Message-ID: <1219817457-7432-2-git-send-email-galak@kernel.crashing.org> (raw)
In-Reply-To: <1219817457-7432-1-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 | 64 +++++++++++++++++++++++++++++++++++++++++++++++++
include/asm-ppc/mmu.h | 1 +
2 files changed, 65 insertions(+), 0 deletions(-)
diff --git a/cpu/mpc85xx/tlb.c b/cpu/mpc85xx/tlb.c
index 3d15d50..7ce7a14 100644
--- a/cpu/mpc85xx/tlb.c
+++ b/cpu/mpc85xx/tlb.c
@@ -90,3 +90,67 @@ 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
next prev parent reply other threads:[~2008-08-27 6:10 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-27 6:10 [U-Boot] [PATCH 01/24] FSL DDR: Remove duplicate setting of cs0_bnds register on 86xx Kumar Gala
2008-08-27 6:10 ` Kumar Gala [this message]
2008-08-27 6:10 ` [U-Boot] [PATCH 03/24] FSL DDR: Add 85xx specific register setting Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 04/24] FSL DDR: Convert MPC8540ADS to new DDR code Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 05/24] FSL DDR: Convert MPC8560ADS " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 06/24] FSL DDR: Convert MPC8555ADS " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 07/24] FSL DDR: Convert MPC8541CDS " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 08/24] FSL DDR: Convert MPC8548CDS " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 09/24] FSL DDR: Convert MPC8568MDS " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 10/24] FSL DDR: Convert MPC8544DS " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 11/24] FSL DDR: Convert socrates " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 12/24] FSL DDR: Convert atum8548 " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 13/24] FSL DDR: Convert sbc8548 " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 14/24] FSL DDR: Convert PM854 " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 15/24] FSL DDR: Convert PM856 " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 16/24] FSL DDR: Convert MPC8540EVAL " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 17/24] FSL DDR: Convert SBC8560 " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 18/24] FSL DDR: Convert STXGP3 " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 19/24] FSL DDR: Convert STXSSA " Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 20/24] FSL DDR: Remove old SPD support from cpu/mpc85xx Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 21/24] mpc85xx: Add support for the MPC8572DS reference board Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 22/24] mpc85xx: Add support for the MPC8536 Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 23/24] mpc85xx: Add support for the MPC8536DS reference board Kumar Gala
2008-08-27 6:10 ` [U-Boot] [PATCH 24/24] mpc85xx: remove redudant code with lib_ppc/interrupts.c Kumar Gala
2008-10-18 18:07 ` [U-Boot] [PATCH 19/24] FSL DDR: Convert STXSSA to new DDR code Wolfgang Denk
2008-10-19 18:19 ` Kumar Gala
2008-08-27 22:37 ` [U-Boot] [PATCH 01/24] FSL DDR: Remove duplicate setting of cs0_bnds register on 86xx Wolfgang Denk
2008-08-27 22:45 ` Jon Loeliger
2008-08-27 23:17 ` Kumar Gala
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=1219817457-7432-2-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.