Commit 3a532346 authored by Gerlando Falauto's avatar Gerlando Falauto Committed by Wolfgang Denk
Browse files

powerpc/82xx: add SDRAM detection for km82xx

This patch adds SDRAM detection feature to km82xx boards.
To enable this feature, define CONFIG_SYS_SDRAM_LIST as the initializer
for an array of struct sdram_conf_s.
These structs will expose the bitfields within registers PSDMR and OR1 which
have to be different between configurations; common bitfields will be
defined, as usual, within CONFIG_SYS_PSDMR and CONFIG_SYS_OR1.
If CONFIG_SYS_SDRAM_LIST is not defined, then the usual behavior is retained.
Signed-off-by: default avatarGerlando Falauto <>
parent 65c7f923
......@@ -261,6 +261,54 @@ static long int try_init(memctl8260_t *memctl, ulong sdmr,
return size;
* If CONFIG_SYS_SDRAM_LIST is defined, we cycle through all SDRAM
* configurations therein (should be from high to lower) to find the
* one actually matching the current configuration.
* CONFIG_SYS_PSDMR and CONFIG_SYS_OR1 will contain the base values which are
* common among all possible configurations; values in CONFIG_SYS_SDRAM_LIST
* (defined as the initialization value for the array of struct sdram_conf_s)
* will then be ORed with such base values.
struct sdram_conf_s {
ulong size;
int or1;
int psdmr;
static struct sdram_conf_s sdram_conf[] = CONFIG_SYS_SDRAM_LIST;
static long probe_sdram(memctl8260_t *memctl)
int n = 0;
long psize = 0;
for (n = 0; n < ARRAY_SIZE(sdram_conf); psize = 0, n++) {
psize = try_init(memctl,
CONFIG_SYS_PSDMR | sdram_conf[n].psdmr,
CONFIG_SYS_OR1 | sdram_conf[n].or1,
debug("Probing %ld bytes returned %ld\n",
sdram_conf[n].size, psize);
if (psize == sdram_conf[n].size)
return psize;
static long probe_sdram(memctl8260_t *memctl)
return try_init(memctl, CONFIG_SYS_PSDMR, CONFIG_SYS_OR1,
phys_size_t initdram(int board_type)
immap_t *immap = (immap_t *) CONFIG_SYS_IMMR;
......@@ -274,8 +322,7 @@ phys_size_t initdram(int board_type)
/* 60x SDRAM setup:
psize = try_init(memctl, CONFIG_SYS_PSDMR, CONFIG_SYS_OR1,
psize = probe_sdram(memctl);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment