]> git.sur5r.net Git - u-boot/commitdiff
avr32: Use uncached() macro to get an address for SDRAM init
authorHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
Thu, 12 Aug 2010 06:52:53 +0000 (13:52 +0700)
committerReinhard Meyer <u-boot@emk-elektronik.de>
Fri, 3 Sep 2010 13:12:52 +0000 (15:12 +0200)
The paging system which is required to set up caching properties has not
yet been initialized when the SDRAM is initialized. So when the
map_physmem() function is converted to return the physical address
unchanged, the SDRAM initialization will break on some boards.

The avr32-specific uncached() macro will return an address which will
always cause uncached accessed to be made. Since this happens in the
board code, using avr32-specific features should be ok, and will allow
the SDRAM initialization to keep working.

Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
board/atmel/atngw100/atngw100.c
board/atmel/atstk1000/atstk1000.c
board/earthlcd/favr-32-ezkit/favr-32-ezkit.c
board/mimc/mimc200/mimc200.c
board/miromico/hammerhead/hammerhead.c

index 004d8daa900b2c8ba630623461b0e3d67cdb7b7b..4580f550df98a4fcab81adda265c0aca43aa498a 100644 (file)
@@ -75,13 +75,11 @@ phys_size_t initdram(int board_type)
        unsigned long actual_size;
        void *sdram_base;
 
-       sdram_base = map_physmem(EBI_SDRAM_BASE, EBI_SDRAM_SIZE, MAP_NOCACHE);
+       sdram_base = uncached(EBI_SDRAM_BASE);
 
        expected_size = sdram_init(sdram_base, &sdram_config);
        actual_size = get_ram_size(sdram_base, expected_size);
 
-       unmap_physmem(sdram_base, EBI_SDRAM_SIZE);
-
        if (expected_size != actual_size)
                printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
                                actual_size >> 20, expected_size >> 20);
index c36cb5717be4fc303b1edc3e4798f9e5f1c25cc9..d91d5940b5e11b90670077997941c9928d674a9a 100644 (file)
@@ -97,13 +97,11 @@ phys_size_t initdram(int board_type)
        unsigned long actual_size;
        void *sdram_base;
 
-       sdram_base = map_physmem(EBI_SDRAM_BASE, EBI_SDRAM_SIZE, MAP_NOCACHE);
+       sdram_base = uncached(EBI_SDRAM_BASE);
 
        expected_size = sdram_init(sdram_base, &sdram_config);
        actual_size = get_ram_size(sdram_base, expected_size);
 
-       unmap_physmem(sdram_base, EBI_SDRAM_SIZE);
-
        if (expected_size != actual_size)
                printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
                                actual_size >> 20, expected_size >> 20);
index 8af680fe914ce78cab7ab74f321ad5cb5dc9dd6d..d2843c9d2b82c23cc0e157a5bcfcdbcf06d6135c 100644 (file)
@@ -68,13 +68,11 @@ phys_size_t initdram(int board_type)
        unsigned long actual_size;
        void *sdram_base;
 
-       sdram_base = map_physmem(EBI_SDRAM_BASE, EBI_SDRAM_SIZE, MAP_NOCACHE);
+       sdram_base = uncached(EBI_SDRAM_BASE);
 
        expected_size = sdram_init(sdram_base, &sdram_config);
        actual_size = get_ram_size(sdram_base, expected_size);
 
-       unmap_physmem(sdram_base, EBI_SDRAM_SIZE);
-
        if (expected_size != actual_size)
                printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
                                actual_size >> 20, expected_size >> 20);
index cc0f13712186192367decf8b7e00d701f222969e..994066943d163c05f48ecf87b99094f259a937e8 100644 (file)
@@ -153,13 +153,11 @@ phys_size_t initdram(int board_type)
        unsigned long actual_size;
        void *sdram_base;
 
-       sdram_base = map_physmem(EBI_SDRAM_BASE, EBI_SDRAM_SIZE, MAP_NOCACHE);
+       sdram_base = uncached(EBI_SDRAM_BASE);
 
        expected_size = sdram_init(sdram_base, &sdram_config);
        actual_size = get_ram_size(sdram_base, expected_size);
 
-       unmap_physmem(sdram_base, EBI_SDRAM_SIZE);
-
        if (expected_size != actual_size)
                printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
                                actual_size >> 20, expected_size >> 20);
index 8b3e22cd9ece1ee1d3e21706b2ec52a611706c58..5ab999e4693345c8643486d2e22816111c2ac347 100644 (file)
@@ -80,13 +80,11 @@ phys_size_t initdram(int board_type)
        unsigned long actual_size;
        void *sdram_base;
 
-       sdram_base = map_physmem(EBI_SDRAM_BASE, EBI_SDRAM_SIZE, MAP_NOCACHE);
+       sdram_base = uncached(EBI_SDRAM_BASE);
 
        expected_size = sdram_init(sdram_base, &sdram_config);
        actual_size = get_ram_size(sdram_base, expected_size);
 
-       unmap_physmem(sdram_base, EBI_SDRAM_SIZE);
-
        if (expected_size != actual_size)
                printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
                       actual_size >> 20, expected_size >> 20);