summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/lib/armlinux.c34
-rw-r--r--board/at91sam9260ek/init.c3
-rw-r--r--board/freescale-mx35-3-stack/3stack.c3
-rw-r--r--board/imx21ads/imx21ads.c3
-rw-r--r--board/imx27ads/imx27ads.c3
-rw-r--r--board/ipe337/ipe337.c2
-rw-r--r--board/kp_ukd_r1_num/kp_ukd_r1_num.c2
-rw-r--r--board/mmccpu/init.c3
-rw-r--r--board/netx/netx.c3
-rw-r--r--board/omap/board-beagle.c4
-rw-r--r--board/omap/board-sdp343x.c4
-rw-r--r--board/pcm030/pcm030.c3
-rw-r--r--board/pcm037/pcm037.c10
-rw-r--r--board/pcm038/pcm038.c5
-rw-r--r--board/pcm043/pcm043.c3
-rw-r--r--board/phycard-i.MX27/pca100.c3
-rw-r--r--board/phycore_mcf54xx/phyCore_MCF54xx.c2
-rw-r--r--board/pm9263/init.c3
-rw-r--r--board/scb9328/scb9328.c3
-rw-r--r--include/asm-arm/armlinux.h5
20 files changed, 48 insertions, 53 deletions
diff --git a/arch/arm/lib/armlinux.c b/arch/arm/lib/armlinux.c
index a6d4502929..6dc54905b5 100644
--- a/arch/arm/lib/armlinux.c
+++ b/arch/arm/lib/armlinux.c
@@ -30,6 +30,8 @@
#include <zlib.h>
#include <init.h>
#include <fs.h>
+#include <list.h>
+#include <xfuncs.h>
#include <asm/byteorder.h>
#include <asm/global_data.h>
@@ -112,6 +114,22 @@ void armlinux_set_architecture(int architecture)
armlinux_architecture = architecture;
}
+struct arm_memory {
+ struct list_head list;
+ struct device_d *dev;
+};
+
+static LIST_HEAD(memory_list);
+
+void armlinux_add_dram(struct device_d *dev)
+{
+ struct arm_memory *mem = xzalloc(sizeof(*mem));
+
+ mem->dev = dev;
+
+ list_add_tail(&mem->list, &memory_list);
+}
+
int do_bootm_linux(struct image_data *data)
{
void (*theKernel)(int zero, int arch, void *params);
@@ -212,18 +230,16 @@ __setup_start_tag(void)
void
__setup_memory_tags(void)
{
- struct device_d *dev = NULL;
+ struct arm_memory *mem;
- list_for_each_entry(dev, &device_list, list) {
- if (dev->type == DEVICE_TYPE_DRAM) {
- params->hdr.tag = ATAG_MEM;
- params->hdr.size = tag_size(tag_mem32);
+ list_for_each_entry(mem, &memory_list, list) {
+ params->hdr.tag = ATAG_MEM;
+ params->hdr.size = tag_size(tag_mem32);
- params->u.mem.start = dev->map_base;
- params->u.mem.size = dev->size;
+ params->u.mem.start = mem->dev->map_base;
+ params->u.mem.size = mem->dev->size;
- params = tag_next(params);
- }
+ params = tag_next(params);
}
}
diff --git a/board/at91sam9260ek/init.c b/board/at91sam9260ek/init.c
index f3c282bc68..0e744d234b 100644
--- a/board/at91sam9260ek/init.c
+++ b/board/at91sam9260ek/init.c
@@ -68,8 +68,6 @@ static struct device_d sdram_dev = {
.map_base = 0x20000000,
.size = 64 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
static struct at91sam_ether_platform_data macb_pdata = {
@@ -97,6 +95,7 @@ static int at91sam9260ek_devices_init(void)
register_device(&nand_dev);
register_device(&macb_dev);
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x20000100);
armlinux_set_architecture(MACH_TYPE_AT91SAM9260EK);
diff --git a/board/freescale-mx35-3-stack/3stack.c b/board/freescale-mx35-3-stack/3stack.c
index 23556aa993..0b43896f83 100644
--- a/board/freescale-mx35-3-stack/3stack.c
+++ b/board/freescale-mx35-3-stack/3stack.c
@@ -52,8 +52,6 @@ static struct device_d sdram_dev = {
.map_base = 0x80000000,
.size = 128 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
static struct fec_platform_data fec_info = {
@@ -95,6 +93,7 @@ static int f3s_devices_init(void)
devfs_add_partition("nor0", 0x00000, 0x40000, PARTITION_FIXED, "self"); /* ourself */
devfs_add_partition("nor0", 0x40000, 0x20000, PARTITION_FIXED, "env"); /* environment */
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_PCM037); /* FIXME */
diff --git a/board/imx21ads/imx21ads.c b/board/imx21ads/imx21ads.c
index c7d9f6e5a6..550c3f0c0c 100644
--- a/board/imx21ads/imx21ads.c
+++ b/board/imx21ads/imx21ads.c
@@ -50,8 +50,6 @@ static struct device_d sdram_dev = {
.map_base = 0xc0000000,
.size = 64 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
struct imx_nand_platform_data nand_info = {
@@ -128,6 +126,7 @@ static int mx21ads_devices_init(void)
register_device(&nand_dev);
register_device(&cs8900_dev);
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0xc0000100);
armlinux_set_architecture(MACH_TYPE_MX21ADS);
diff --git a/board/imx27ads/imx27ads.c b/board/imx27ads/imx27ads.c
index a9a3aa59a5..9a19794a93 100644
--- a/board/imx27ads/imx27ads.c
+++ b/board/imx27ads/imx27ads.c
@@ -47,8 +47,6 @@ static struct device_d sdram_dev = {
.map_base = 0xa0000000,
.size = 128 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
static struct fec_platform_data fec_info = {
@@ -138,6 +136,7 @@ static int mx27ads_devices_init(void)
devfs_add_partition("nor0", 0x20000, 0x20000, PARTITION_FIXED, "env");
dev_protect(&cfi_dev, 0x20000, 0, 1);
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0xa0000100);
armlinux_set_architecture(MACH_TYPE_MX27ADS);
diff --git a/board/ipe337/ipe337.c b/board/ipe337/ipe337.c
index 82d4b9cf74..dabb3bfdd8 100644
--- a/board/ipe337/ipe337.c
+++ b/board/ipe337/ipe337.c
@@ -18,8 +18,6 @@ static struct device_d sdram_dev = {
.map_base = 0x0,
.size = 128 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
static struct device_d smc911x_dev = {
diff --git a/board/kp_ukd_r1_num/kp_ukd_r1_num.c b/board/kp_ukd_r1_num/kp_ukd_r1_num.c
index b1c68268cc..05a61cf23b 100644
--- a/board/kp_ukd_r1_num/kp_ukd_r1_num.c
+++ b/board/kp_ukd_r1_num/kp_ukd_r1_num.c
@@ -101,8 +101,6 @@ static struct device_d sdram_dev = {
.map_base = CFG_SDRAM_ADDRESS,
.size = CFG_SDRAM_SIZE,
-
- .type = DEVICE_TYPE_DRAM,
};
static int mcfv4e_devices_init(void)
diff --git a/board/mmccpu/init.c b/board/mmccpu/init.c
index 608f790497..c9779c6901 100644
--- a/board/mmccpu/init.c
+++ b/board/mmccpu/init.c
@@ -41,8 +41,6 @@ static struct device_d sdram_dev = {
.map_base = 0x20000000,
.size = 128 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
static struct device_d cfi_dev = {
@@ -109,6 +107,7 @@ static int mmccpu_devices_init(void)
devfs_add_partition("nor0", 0x00000, 256 * 1024, PARTITION_FIXED, "self");
devfs_add_partition("nor0", 0x40000, 128 * 1024, PARTITION_FIXED, "env");
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x20000100);
armlinux_set_architecture(MACH_TYPE_MMCCPU);
diff --git a/board/netx/netx.c b/board/netx/netx.c
index e697890c35..b03817d9c7 100644
--- a/board/netx/netx.c
+++ b/board/netx/netx.c
@@ -45,8 +45,6 @@ static struct device_d sdram_dev = {
.map_base = 0x80000000,
.size = 64 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
struct netx_eth_platform_data eth0_data = {
@@ -82,6 +80,7 @@ static int netx_devices_init(void) {
dev_protect(&cfi_dev, 0x40000, 0, 1);
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_NXDB500);
diff --git a/board/omap/board-beagle.c b/board/omap/board-beagle.c
index e22f5c4eed..e7c7ecb1a6 100644
--- a/board/omap/board-beagle.c
+++ b/board/omap/board-beagle.c
@@ -243,8 +243,6 @@ static struct device_d sdram_dev = {
.map_base = 0x80000000,
.size = 128 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
#ifndef CONFIG_CMD_MEMORY
@@ -256,7 +254,6 @@ static struct driver_d ram_drv = {
.read = mem_read,
.write = mem_write,
.lseek = dev_lseek_default,
- .type = DEVICE_TYPE_DRAM,
};
#endif
@@ -275,6 +272,7 @@ static int beagle_devices_init(void)
/* WP is made high and WAIT1 active Low */
gpmc_generic_init(0x10);
#endif
+ armlinux_add_dram(&sdram_dev);
failed:
return ret;
}
diff --git a/board/omap/board-sdp343x.c b/board/omap/board-sdp343x.c
index eb9d06c7ba..c7d4151e9f 100644
--- a/board/omap/board-sdp343x.c
+++ b/board/omap/board-sdp343x.c
@@ -641,8 +641,6 @@ struct device_d sdram_dev = {
.map_base = 0x80000000,
.size = 128 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
/*------------------------- RAM Devices -------------------------------------*/
@@ -656,7 +654,6 @@ static struct driver_d ram_drv = {
.read = mem_read,
.write = mem_write,
.lseek = dev_lseek_default,
- .type = DEVICE_TYPE_DRAM,
};
#endif
@@ -677,6 +674,7 @@ static int sdp3430_devices_init(void)
if (ret)
goto failed;
+ armlinux_add_dram(&sdram_dev);
failed:
return ret;
}
diff --git a/board/pcm030/pcm030.c b/board/pcm030/pcm030.c
index a7b6345656..9da936986e 100644
--- a/board/pcm030/pcm030.c
+++ b/board/pcm030/pcm030.c
@@ -56,14 +56,11 @@ struct device_d sdram_dev = {
.map_base = 0x0,
.size = 64 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
struct device_d scratch_dev = {
.name = "ram",
.id = "scratch0",
- .type = DEVICE_TYPE_DRAM,
};
static struct mpc5xxx_fec_platform_data fec_info = {
diff --git a/board/pcm037/pcm037.c b/board/pcm037/pcm037.c
index fecd8868d7..37bc0f69fa 100644
--- a/board/pcm037/pcm037.c
+++ b/board/pcm037/pcm037.c
@@ -88,10 +88,8 @@ static struct memory_platform_data ram_dev_pdata0 = {
static struct device_d sdram0_dev = {
.name = "mem",
-
.map_base = IMX_SDRAM_CS0,
.size = SDRAM0 * 1024 * 1024, /* fix size */
-
.platform_data = &ram_dev_pdata0,
};
@@ -110,11 +108,8 @@ static struct memory_platform_data ram_dev_pdata1 = {
static struct device_d sdram1_dev = {
.name = "mem",
-
.map_base = IMX_SDRAM_CS1,
.size = SDRAM1 * 1024 * 1024, /* fix size */
-
- .type = DEVICE_TYPE_DRAM,
.platform_data = &ram_dev_pdata1,
};
#endif
@@ -275,6 +270,11 @@ static int imx31_devices_init(void)
register_device(&usbotg_dev);
register_device(&usbh2_dev);
#endif
+
+ armlinux_add_dram(&sdram0_dev);
+#ifndef CONFIG_PCM037_SDRAM_BANK1_NONE
+ armlinux_add_dram(&sdram1_dev);
+#endif
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_PCM037);
diff --git a/board/pcm038/pcm038.c b/board/pcm038/pcm038.c
index 13a5ae08db..136580679e 100644
--- a/board/pcm038/pcm038.c
+++ b/board/pcm038/pcm038.c
@@ -50,18 +50,14 @@ static struct device_d sdram_dev = {
.name = "ram",
.map_base = 0xa0000000,
.size = 128 * 1024 * 1024,
- .type = DEVICE_TYPE_DRAM,
};
-#if 0
static struct device_d sram_dev = {
.name = "ram",
.id = "sram0",
.map_base = 0xc8000000,
.size = 512 * 1024, /* Can be up to 2MiB */
- .type = DEVICE_TYPE_DRAM,
};
-#endif
static struct fec_platform_data fec_info = {
.xcv_type = MII100,
@@ -195,6 +191,7 @@ static int pcm038_devices_init(void)
printf("Using environment in %s Flash\n", envdev);
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0xa0000100);
armlinux_set_architecture(MACH_TYPE_PCM038);
diff --git a/board/pcm043/pcm043.c b/board/pcm043/pcm043.c
index 7945065064..4e225c53a1 100644
--- a/board/pcm043/pcm043.c
+++ b/board/pcm043/pcm043.c
@@ -72,8 +72,6 @@ static struct device_d sdram0_dev = {
.map_base = IMX_SDRAM_CS0,
.size = 128 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
struct imx_nand_platform_data nand_info = {
@@ -111,6 +109,7 @@ static int imx35_devices_init(void)
register_device(&sdram0_dev);
+ armlinux_add_dram(&sdram0_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_PCM043);
diff --git a/board/phycard-i.MX27/pca100.c b/board/phycard-i.MX27/pca100.c
index 44b0402b08..ba1ff5687c 100644
--- a/board/phycard-i.MX27/pca100.c
+++ b/board/phycard-i.MX27/pca100.c
@@ -44,8 +44,6 @@ static struct device_d sdram_dev = {
.map_base = 0xa0000000,
.size = 128 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
static struct fec_platform_data fec_info = {
@@ -131,6 +129,7 @@ static int pca100_devices_init(void)
devfs_add_partition("nand0", 0x40000, 0x20000, PARTITION_FIXED, "env_raw");
dev_add_bb_dev("env_raw", "env0");
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0xa0000100);
armlinux_set_architecture(2149);
diff --git a/board/phycore_mcf54xx/phyCore_MCF54xx.c b/board/phycore_mcf54xx/phyCore_MCF54xx.c
index 1c791e2efc..c666f467bb 100644
--- a/board/phycore_mcf54xx/phyCore_MCF54xx.c
+++ b/board/phycore_mcf54xx/phyCore_MCF54xx.c
@@ -86,8 +86,6 @@ static struct device_d sdram_dev =
.map_base = CFG_SDRAM_ADDRESS,
.size = CFG_SDRAM_SIZE,
-
- .type = DEVICE_TYPE_DRAM,
};
static int mcfv4e_devices_init(void)
diff --git a/board/pm9263/init.c b/board/pm9263/init.c
index 4b63f18d10..724eb4676a 100644
--- a/board/pm9263/init.c
+++ b/board/pm9263/init.c
@@ -41,8 +41,6 @@ static struct device_d sdram_dev = {
.map_base = 0x20000000,
.size = 64 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
};
static struct device_d cfi_dev = {
@@ -100,6 +98,7 @@ static int pm9263_devices_init(void)
devfs_add_partition("nor0", 0x00000, 0x40000, PARTITION_FIXED, "self");
devfs_add_partition("nor0", 0x40000, 0x10000, PARTITION_FIXED, "env");
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x20000100);
armlinux_set_architecture(MACH_TYPE_PM9263);
diff --git a/board/scb9328/scb9328.c b/board/scb9328/scb9328.c
index b257177927..39edce1efd 100644
--- a/board/scb9328/scb9328.c
+++ b/board/scb9328/scb9328.c
@@ -50,8 +50,6 @@ static struct device_d sdram_dev = {
.map_base = 0x08000000,
.size = 16 * 1024 * 1024,
-
- .type = DEVICE_TYPE_DRAM,
.platform_data = &sdram_pdata,
};
@@ -100,6 +98,7 @@ static int scb9328_devices_init(void) {
devfs_add_partition("nor0", 0x40000, 0x20000, PARTITION_FIXED, "env0");
dev_protect(&cfi_dev, 0x20000, 0, 1);
+ armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x08000100);
armlinux_set_architecture(MACH_TYPE_SCB9328);
diff --git a/include/asm-arm/armlinux.h b/include/asm-arm/armlinux.h
index 16a30140c9..12a178290d 100644
--- a/include/asm-arm/armlinux.h
+++ b/include/asm-arm/armlinux.h
@@ -4,6 +4,7 @@
#ifdef CONFIG_CMD_BOOTM
void armlinux_set_bootparams(void *params);
void armlinux_set_architecture(int architecture);
+void armlinux_add_dram(struct device_d *dev);
#else
static inline void armlinux_set_bootparams(void *params)
{
@@ -12,6 +13,10 @@ static inline void armlinux_set_bootparams(void *params)
static inline void armlinux_set_architecture(int architecture)
{
}
+
+static inline void armlinux_add_dram(struct device_d *dev)
+{
+}
#endif
#endif /* __ARCH_ARMLINUX_H */