* [U-Boot] [PATCH 1/3] cm4008: set gd->ram_size in dram_init
@ 2012-07-04 13:08 Yann Vernier
2012-07-05 10:02 ` Andreas Bießmann
0 siblings, 1 reply; 4+ messages in thread
From: Yann Vernier @ 2012-07-04 13:08 UTC (permalink / raw)
To: u-boot
Leave dram_init_banksize to set up the bank info data.
ram_size was previously uninitialized.
Signed-off-by: Yann Vernier <yann.vernier@orsoc.se>
---
board/cm4008/cm4008.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/board/cm4008/cm4008.c b/board/cm4008/cm4008.c
index ed493a8..557cd8e 100644
--- a/board/cm4008/cm4008.c
+++ b/board/cm4008/cm4008.c
@@ -97,8 +97,7 @@ int board_init (void)
int dram_init (void)
{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
+ gd->ram_size = PHYS_SDRAM_1_SIZE;
return (0);
}
--
1.7.10
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH 1/3] cm4008: set gd->ram_size in dram_init
2012-07-04 13:08 [U-Boot] [PATCH 1/3] cm4008: set gd->ram_size in dram_init Yann Vernier
@ 2012-07-05 10:02 ` Andreas Bießmann
2012-07-05 12:11 ` [U-Boot] [PATCH v2] arm: cm4008, cm41xx: " Yann Vernier
0 siblings, 1 reply; 4+ messages in thread
From: Andreas Bießmann @ 2012-07-05 10:02 UTC (permalink / raw)
To: u-boot
On 04.07.2012 15:08, Yann Vernier wrote:
> Leave dram_init_banksize to set up the bank info data.
> ram_size was previously uninitialized.
>
> Signed-off-by: Yann Vernier <yann.vernier@orsoc.se>
> ---
> board/cm4008/cm4008.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/board/cm4008/cm4008.c b/board/cm4008/cm4008.c
> index ed493a8..557cd8e 100644
> --- a/board/cm4008/cm4008.c
> +++ b/board/cm4008/cm4008.c
> @@ -97,8 +97,7 @@ int board_init (void)
>
> int dram_init (void)
> {
> - gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
> - gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
> + gd->ram_size = PHYS_SDRAM_1_SIZE;
>
> return (0);
> }
>
The dram_init should look like this nowadays:
---8<---
int dram_init (void)
{
/* dram_init must store complete ramsize in gd->ram_size */
gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
CONFIG_SYS_SDRAM_SIZE);
return 0;
}
--->8---
PHYS_SDRAM_1_SIZE is also a remnant from older days, please switch to
CONFIG_SYS_SDRAM_SIZE. The get_ram_size() should check how many ram is
really accesable (think of a board which may have more options for RAM,
just insert the biggest possible option to CONFIG_SYS_SDRAM_SIZE).
Best regards
Andreas Bie?mann
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v2] arm: cm4008, cm41xx: set gd->ram_size in dram_init
2012-07-05 10:02 ` Andreas Bießmann
@ 2012-07-05 12:11 ` Yann Vernier
2012-07-05 14:48 ` Andreas Bießmann
0 siblings, 1 reply; 4+ messages in thread
From: Yann Vernier @ 2012-07-05 12:11 UTC (permalink / raw)
To: u-boot
Leave dram_init_banksize to set up the bank info data.
ram_size was previously uninitialized. Also, generalize
lowlevel assembly to support more RAM options.
Signed-off-by: Yann Vernier <yann.vernier@orsoc.se>
---
Changes for v2:
- Update to use CONFIG_SYS_SDRAM_ constants
- Update cm41xx also
- Map SDRAM to match configuration
---
arch/arm/cpu/arm920t/ks8695/lowlevel_init.S | 8 +++-----
board/cm4008/cm4008.c | 5 +++--
board/cm41xx/cm41xx.c | 5 +++--
include/configs/cm4008.h | 5 ++---
include/configs/cm41xx.h | 5 ++---
5 files changed, 13 insertions(+), 15 deletions(-)
diff --git a/arch/arm/cpu/arm920t/ks8695/lowlevel_init.S b/arch/arm/cpu/arm920t/ks8695/lowlevel_init.S
index e9f1227..df13de6 100644
--- a/arch/arm/cpu/arm920t/ks8695/lowlevel_init.S
+++ b/arch/arm/cpu/arm920t/ks8695/lowlevel_init.S
@@ -131,11 +131,9 @@ highflash:
* before relocating, we have to setup RAM timing
*/
ldr r1, =(KS8695_IO_BASE+KS8695_SDRAM_CTRL0)
-#if (PHYS_SDRAM_1_SIZE == 0x02000000)
- ldr r2, =0x7fc0000e /* 32MB */
-#else
- ldr r2, =0x3fc0000e /* 16MB */
-#endif
+ /* 8 column address bits, 4 banks, 32 bits data width */
+ ldr r2, =((CONFIG_SYS_SDRAM_BASE+CONFIG_SYS_SDRAM_SIZE-0x10000)<<(22-16) | \
+ (CONFIG_SYS_SDRAM_BASE>>(16-12) | 0x00e))
str r2, [r1] /* configure sdram bank0 setup */
ldr r1, =(KS8695_IO_BASE+KS8695_SDRAM_CTRL1)
mov r2, #0
diff --git a/board/cm4008/cm4008.c b/board/cm4008/cm4008.c
index ed493a8..6c0da9a 100644
--- a/board/cm4008/cm4008.c
+++ b/board/cm4008/cm4008.c
@@ -97,8 +97,9 @@ int board_init (void)
int dram_init (void)
{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
+ /* dram_init must store complete ramsize in gd->ram_size */
+ gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
+ CONFIG_SYS_SDRAM_SIZE);
return (0);
}
diff --git a/board/cm41xx/cm41xx.c b/board/cm41xx/cm41xx.c
index d9dff4e..6aef617 100644
--- a/board/cm41xx/cm41xx.c
+++ b/board/cm41xx/cm41xx.c
@@ -97,8 +97,9 @@ int board_init (void)
int dram_init (void)
{
- gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
- gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
+ /* dram_init must store complete ramsize in gd->ram_size */
+ gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
+ CONFIG_SYS_SDRAM_SIZE);
return (0);
}
diff --git a/include/configs/cm4008.h b/include/configs/cm4008.h
index 408e918..58b0f4b 100644
--- a/include/configs/cm4008.h
+++ b/include/configs/cm4008.h
@@ -110,9 +110,8 @@
* Physical Memory Map
*/
#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1 0x00000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE 0x01000000 /* 16 MB */
-#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
+#define CONFIG_SYS_SDRAM_BASE 0x00000000 /* SDRAM Bank #1 */
+#define CONFIG_SYS_SDRAM_SIZE 0x01000000 /* 16 MB */
#define CONFIG_SYS_INIT_SP_ADDR 0x00020000 /* lowest 128k of RAM */
diff --git a/include/configs/cm41xx.h b/include/configs/cm41xx.h
index d85a600..d29040c 100644
--- a/include/configs/cm41xx.h
+++ b/include/configs/cm41xx.h
@@ -110,9 +110,8 @@
* Physical Memory Map
*/
#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1 0x00000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE 0x02000000 /* 32 MB */
-#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM_1
+#define CONFIG_SYS_SDRAM_BASE 0x00000000 /* SDRAM Bank #1 */
+#define CONFIG_SYS_SDRAM_SIZE 0x02000000 /* 32 MB */
#define CONFIG_SYS_INIT_SP_ADDR 0x00020000 /* lowest 128k of RAM */
--
1.7.10
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v2] arm: cm4008, cm41xx: set gd->ram_size in dram_init
2012-07-05 12:11 ` [U-Boot] [PATCH v2] arm: cm4008, cm41xx: " Yann Vernier
@ 2012-07-05 14:48 ` Andreas Bießmann
0 siblings, 0 replies; 4+ messages in thread
From: Andreas Bießmann @ 2012-07-05 14:48 UTC (permalink / raw)
To: u-boot
On 05.07.2012 14:11, Yann Vernier wrote:
> Leave dram_init_banksize to set up the bank info data.
> ram_size was previously uninitialized. Also, generalize
> lowlevel assembly to support more RAM options.
>
> Signed-off-by: Yann Vernier <yann.vernier@orsoc.se>
> ---
> Changes for v2:
> - Update to use CONFIG_SYS_SDRAM_ constants
> - Update cm41xx also
> - Map SDRAM to match configuration
> ---
> arch/arm/cpu/arm920t/ks8695/lowlevel_init.S | 8 +++-----
> board/cm4008/cm4008.c | 5 +++--
> board/cm41xx/cm41xx.c | 5 +++--
> include/configs/cm4008.h | 5 ++---
> include/configs/cm41xx.h | 5 ++---
> 5 files changed, 13 insertions(+), 15 deletions(-)
>
> diff --git a/arch/arm/cpu/arm920t/ks8695/lowlevel_init.S b/arch/arm/cpu/arm920t/ks8695/lowlevel_init.S
> index e9f1227..df13de6 100644
> --- a/arch/arm/cpu/arm920t/ks8695/lowlevel_init.S
> +++ b/arch/arm/cpu/arm920t/ks8695/lowlevel_init.S
> @@ -131,11 +131,9 @@ highflash:
> * before relocating, we have to setup RAM timing
> */
> ldr r1, =(KS8695_IO_BASE+KS8695_SDRAM_CTRL0)
> -#if (PHYS_SDRAM_1_SIZE == 0x02000000)
> - ldr r2, =0x7fc0000e /* 32MB */
> -#else
> - ldr r2, =0x3fc0000e /* 16MB */
> -#endif
> + /* 8 column address bits, 4 banks, 32 bits data width */
> + ldr r2, =((CONFIG_SYS_SDRAM_BASE+CONFIG_SYS_SDRAM_SIZE-0x10000)<<(22-16) | \
> + (CONFIG_SYS_SDRAM_BASE>>(16-12) | 0x00e))
ugh ... magic. Will it work for every possible setting?
How about one setting CONFIG_SYS_SDRAM_BASE != 0x0? I the base address
related to register content in any way?
Would be great to have a little documentation here why it is shifted
that way, unfortunately I can not find a KS8695 spec in the net. Don't
get me wrong it is ok to do so. I think it is way better than hard
coding the values like before but would be great to understand why it is
done that way.
Best regards
Andreas Bie?mann
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-07-05 14:48 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-04 13:08 [U-Boot] [PATCH 1/3] cm4008: set gd->ram_size in dram_init Yann Vernier
2012-07-05 10:02 ` Andreas Bießmann
2012-07-05 12:11 ` [U-Boot] [PATCH v2] arm: cm4008, cm41xx: " Yann Vernier
2012-07-05 14:48 ` Andreas Bießmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox