diff options
-rw-r--r-- | arch/arm/lib/armlinux.c | 34 | ||||
-rw-r--r-- | board/at91sam9260ek/init.c | 3 | ||||
-rw-r--r-- | board/freescale-mx35-3-stack/3stack.c | 3 | ||||
-rw-r--r-- | board/imx21ads/imx21ads.c | 3 | ||||
-rw-r--r-- | board/imx27ads/imx27ads.c | 3 | ||||
-rw-r--r-- | board/ipe337/ipe337.c | 2 | ||||
-rw-r--r-- | board/kp_ukd_r1_num/kp_ukd_r1_num.c | 2 | ||||
-rw-r--r-- | board/mmccpu/init.c | 3 | ||||
-rw-r--r-- | board/netx/netx.c | 3 | ||||
-rw-r--r-- | board/omap/board-beagle.c | 4 | ||||
-rw-r--r-- | board/omap/board-sdp343x.c | 4 | ||||
-rw-r--r-- | board/pcm030/pcm030.c | 3 | ||||
-rw-r--r-- | board/pcm037/pcm037.c | 10 | ||||
-rw-r--r-- | board/pcm038/pcm038.c | 5 | ||||
-rw-r--r-- | board/pcm043/pcm043.c | 3 | ||||
-rw-r--r-- | board/phycard-i.MX27/pca100.c | 3 | ||||
-rw-r--r-- | board/phycore_mcf54xx/phyCore_MCF54xx.c | 2 | ||||
-rw-r--r-- | board/pm9263/init.c | 3 | ||||
-rw-r--r-- | board/scb9328/scb9328.c | 3 | ||||
-rw-r--r-- | include/asm-arm/armlinux.h | 5 |
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 */ |