summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2011-07-19 09:58:32 +0200
committerJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2011-07-18 20:32:45 +0800
commitf928efa818adfe56a08350569a9b0f3c2fb791d2 (patch)
tree4fc754655afbd235d466a5c9d7a63ce89faed24b /arch/arm
parent88618eb5f12c27be7bb4400eb13768e4c2822ae7 (diff)
downloadbarebox-f928efa818adfe56a08350569a9b0f3c2fb791d2.tar.gz
barebox-f928efa818adfe56a08350569a9b0f3c2fb791d2.tar.xz
add a add_mem_device function
Add a helper function for boards to register their memory devices. This makes the board code smaller and also helps getting rid of map_base and struct memory_platform_data. And switch all of the memory to it Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/boards/a9m2410/a9m2410.c35
-rw-r--r--arch/arm/boards/a9m2440/a9m2440.c22
-rw-r--r--arch/arm/boards/chumby_falconwing/falconwing.c21
-rw-r--r--arch/arm/boards/edb93xx/edb93xx.c91
-rw-r--r--arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c20
-rw-r--r--arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c19
-rw-r--r--arch/arm/boards/eukrea_cpuimx35/eukrea_cpuimx35.c20
-rw-r--r--arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c20
-rw-r--r--arch/arm/boards/freescale-mx23-evk/mx23-evk.c20
-rw-r--r--arch/arm/boards/freescale-mx25-3-stack/3stack.c48
-rw-r--r--arch/arm/boards/freescale-mx35-3-stack/3stack.c19
-rw-r--r--arch/arm/boards/freescale-mx51-pdk/board.c19
-rw-r--r--arch/arm/boards/guf-cupid/board.c19
-rw-r--r--arch/arm/boards/guf-neso/board.c19
-rw-r--r--arch/arm/boards/imx21ads/imx21ads.c19
-rw-r--r--arch/arm/boards/imx27ads/imx27ads.c21
-rw-r--r--arch/arm/boards/karo-tx25/board.c54
-rw-r--r--arch/arm/boards/karo-tx28/tx28.c22
-rw-r--r--arch/arm/boards/mini2440/mini2440.c24
-rw-r--r--arch/arm/boards/netx/netx.c21
-rw-r--r--arch/arm/boards/omap/board-beagle.c28
-rw-r--r--arch/arm/boards/omap/board-omap3evm.c30
-rw-r--r--arch/arm/boards/omap/board-sdp343x.c30
-rw-r--r--arch/arm/boards/panda/board.c20
-rw-r--r--arch/arm/boards/pcm037/pcm037.c67
-rw-r--r--arch/arm/boards/pcm038/pcm038.c35
-rw-r--r--arch/arm/boards/pcm043/pcm043.c20
-rw-r--r--arch/arm/boards/pcm049/board.c36
-rw-r--r--arch/arm/boards/phycard-i.MX27/pca100.c19
-rw-r--r--arch/arm/boards/scb9328/scb9328.c19
-rw-r--r--arch/arm/mach-at91/at91rm9200_devices.c27
-rw-r--r--arch/arm/mach-at91/at91sam9260_devices.c27
-rw-r--r--arch/arm/mach-at91/at91sam9261_devices.c27
-rw-r--r--arch/arm/mach-at91/at91sam9263_devices.c27
-rw-r--r--arch/arm/mach-at91/at91sam9g45_devices.c27
-rw-r--r--arch/arm/mach-nomadik/8815.c27
-rw-r--r--arch/arm/mach-versatile/core.c20
37 files changed, 235 insertions, 804 deletions
diff --git a/arch/arm/boards/a9m2410/a9m2410.c b/arch/arm/boards/a9m2410/a9m2410.c
index bdf634d033..54012d9fec 100644
--- a/arch/arm/boards/a9m2410/a9m2410.c
+++ b/arch/arm/boards/a9m2410/a9m2410.c
@@ -35,18 +35,6 @@
#include <mach/s3c24x0-iomap.h>
#include <mach/s3c24x0-nand.h>
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "ram",
- .map_base = CS6_BASE,
- .platform_data = &ram_pdata,
-};
-
// {"NAND 1MiB 3,3V 8-bit", 0xec, 256, 1, 0x1000, 0},
static struct s3c24x0_nand_platform_data nand_info = {
.nand_timing = CALC_NFCONF_TIMING(A9M2410_TACLS, A9M2410_TWRPH0, A9M2410_TWRPH1)
@@ -74,6 +62,8 @@ static struct device_d network_dev = {
static int a9m2410_devices_init(void)
{
uint32_t reg;
+ resource_size_t size = 0;
+ struct device_d *sdram_dev;
/*
* detect the current memory size
@@ -83,25 +73,25 @@ static int a9m2410_devices_init(void)
switch (reg &= 0x7) {
case 0:
- sdram_dev.size = 32 * 1024 * 1024;
+ size = 32 * 1024 * 1024;
break;
case 1:
- sdram_dev.size = 64 * 1024 * 1024;
+ size = 64 * 1024 * 1024;
break;
case 2:
- sdram_dev.size = 128 * 1024 * 1024;
+ size = 128 * 1024 * 1024;
break;
case 4:
- sdram_dev.size = 2 * 1024 * 1024;
+ size = 2 * 1024 * 1024;
break;
case 5:
- sdram_dev.size = 4 * 1024 * 1024;
+ size = 4 * 1024 * 1024;
break;
case 6:
- sdram_dev.size = 8 * 1024 * 1024;
+ size = 8 * 1024 * 1024;
break;
case 7:
- sdram_dev.size = 16 * 1024 * 1024;
+ size = 16 * 1024 * 1024;
break;
}
@@ -152,7 +142,8 @@ static int a9m2410_devices_init(void)
/* ----------- the devices the boot loader should work with -------- */
register_device(&nand_dev);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", CS6_BASE, size,
+ IORESOURCE_MEM_WRITEABLE);
register_device(&network_dev);
#ifdef CONFIG_NAND
@@ -164,8 +155,8 @@ static int a9m2410_devices_init(void)
dev_add_bb_dev("env_raw", "env0");
#endif
- armlinux_add_dram(&sdram_dev);
- armlinux_set_bootparams((void *)sdram_dev.map_base + 0x100);
+ armlinux_add_dram(sdram_dev);
+ armlinux_set_bootparams(dev_get_mem_region(sdram_dev, 0) + 0x100);
armlinux_set_architecture(MACH_TYPE_A9M2410);
return 0;
diff --git a/arch/arm/boards/a9m2440/a9m2440.c b/arch/arm/boards/a9m2440/a9m2440.c
index 55e9e8e953..7ea7f1ca18 100644
--- a/arch/arm/boards/a9m2440/a9m2440.c
+++ b/arch/arm/boards/a9m2440/a9m2440.c
@@ -38,18 +38,6 @@
#include "baseboards.h"
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = CS6_BASE,
- .platform_data = &ram_pdata,
-};
-
static struct s3c24x0_nand_platform_data nand_info = {
.nand_timing = CALC_NFCONF_TIMING(A9M2440_TACLS, A9M2440_TWRPH0, A9M2440_TWRPH1)
};
@@ -106,6 +94,7 @@ static void a9m2440_disable_second_sdram_bank(void)
static int a9m2440_devices_init(void)
{
uint32_t reg;
+ struct device_d *sdram_dev;
/*
* The special SDRAM setup code for this machine will always enable
@@ -136,8 +125,6 @@ static int a9m2440_devices_init(void)
break;
}
- sdram_dev.size = s3c24x0_get_memory_size();
-
/* ----------- configure the access to the outer space ---------- */
reg = readl(BWSCON);
@@ -159,7 +146,8 @@ static int a9m2440_devices_init(void)
/* ----------- the devices the boot loader should work with -------- */
register_device(&nand_dev);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", CS6_BASE, s3c24x0_get_memory_size(),
+ IORESOURCE_MEM_WRITEABLE);
register_device(&network_dev);
#ifdef CONFIG_NAND
@@ -170,8 +158,8 @@ static int a9m2440_devices_init(void)
devfs_add_partition("nand0", 0x40000, 0x20000, PARTITION_FIXED, "env_raw");
dev_add_bb_dev("env_raw", "env0");
#endif
- armlinux_add_dram(&sdram_dev);
- armlinux_set_bootparams((void *)sdram_dev.map_base + 0x100);
+ armlinux_add_dram(sdram_dev);
+ armlinux_set_bootparams(dev_get_mem_region(sdram_dev, 0) + 0x100);
armlinux_set_architecture(MACH_TYPE_A9M2440);
return 0;
diff --git a/arch/arm/boards/chumby_falconwing/falconwing.c b/arch/arm/boards/chumby_falconwing/falconwing.c
index 52c7459ec3..7a5f37e91b 100644
--- a/arch/arm/boards/chumby_falconwing/falconwing.c
+++ b/arch/arm/boards/chumby_falconwing/falconwing.c
@@ -34,19 +34,6 @@
#include <mach/fb.h>
#include <mach/usb.h>
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_MEMORY_BASE,
- .size = 64 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
static struct mxs_mci_platform_data mci_pdata = {
.caps = MMC_MODE_4BIT | MMC_MODE_HS | MMC_MODE_HS_52MHz,
.voltages = MMC_VDD_32_33 | MMC_VDD_33_34, /* fixed to 3.3 V */
@@ -372,12 +359,14 @@ static void falconwing_init_usb(void)
static int falconwing_devices_init(void)
{
int i, rc;
+ struct device_d *sdram_dev;
/* initizalize gpios */
for (i = 0; i < ARRAY_SIZE(pad_setup); i++)
imx_gpio_mode(pad_setup[i]);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", IMX_MEMORY_BASE, 64 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
imx_set_ioclk(480000000); /* enable IOCLK to run at the PLL frequency */
/* run the SSP unit clock at 100,000 kHz */
imx_set_sspclk(0, 100000000, 1);
@@ -386,8 +375,8 @@ static int falconwing_devices_init(void)
falconwing_init_usb();
- armlinux_add_dram(&sdram_dev);
- armlinux_set_bootparams((void*)(sdram_dev.map_base + 0x100));
+ armlinux_add_dram(sdram_dev);
+ armlinux_set_bootparams(dev_get_mem_region(sdram_dev, 0) + 0x100);
armlinux_set_architecture(MACH_TYPE_CHUMBY);
rc = register_persistant_environment();
diff --git a/arch/arm/boards/edb93xx/edb93xx.c b/arch/arm/boards/edb93xx/edb93xx.c
index 85fd2c0fe8..49a01d6507 100644
--- a/arch/arm/boards/edb93xx/edb93xx.c
+++ b/arch/arm/boards/edb93xx/edb93xx.c
@@ -45,64 +45,6 @@ static struct device_d cfi_dev = {
.size = EDB93XX_CFI_FLASH_SIZE,
};
-static struct memory_platform_data ram_dev_pdata0 = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram0_dev = {
- .id = -1,
- .name = "mem",
- .map_base = CONFIG_EP93XX_SDRAM_BANK0_BASE,
- .size = CONFIG_EP93XX_SDRAM_BANK0_SIZE,
- .platform_data = &ram_dev_pdata0,
-};
-
-#if (CONFIG_EP93XX_SDRAM_NUM_BANKS >= 2)
-static struct memory_platform_data ram_dev_pdata1 = {
- .name = "ram1",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram1_dev = {
- .id = -1,
- .name = "mem",
- .map_base = CONFIG_EP93XX_SDRAM_BANK1_BASE,
- .size = CONFIG_EP93XX_SDRAM_BANK1_SIZE,
- .platform_data = &ram_dev_pdata1,
-};
-#endif
-
-#if (CONFIG_EP93XX_SDRAM_NUM_BANKS >= 3)
-static struct memory_platform_data ram_dev_pdata2 = {
- .name = "ram2",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram2_dev = {
- .id = -1,
- .name = "mem",
- .map_base = CONFIG_EP93XX_SDRAM_BANK2_BASE,
- .size = CONFIG_EP93XX_SDRAM_BANK2_SIZE,
- .platform_data = &ram_dev_pdata2,
-};
-#endif
-
-#if (CONFIG_EP93XX_SDRAM_NUM_BANKS == 4)
-static struct memory_platform_data ram_dev_pdata3 = {
- .name = "ram3",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram3_dev = {
- .id = -1,
- .name = "mem",
- .map_base = CONFIG_EP93XX_SDRAM_BANK3_BASE,
- .size = CONFIG_EP93XX_SDRAM_BANK3_SIZE,
- .platform_data = &ram_dev_pdata3,
-};
-#endif
-
static struct device_d eth_dev = {
.id = -1,
.name = "ep93xx_eth",
@@ -110,6 +52,8 @@ static struct device_d eth_dev = {
static int ep93xx_devices_init(void)
{
+ struct device_d *sdram_dev;
+
register_device(&cfi_dev);
/*
@@ -121,26 +65,27 @@ static int ep93xx_devices_init(void)
protect_file("/dev/env0", 1);
- register_device(&sdram0_dev);
-#if (CONFIG_EP93XX_SDRAM_NUM_BANKS >= 2)
- register_device(&sdram1_dev);
-#endif
-#if (CONFIG_EP93XX_SDRAM_NUM_BANKS >= 3)
- register_device(&sdram2_dev);
-#endif
-#if (CONFIG_EP93XX_SDRAM_NUM_BANKS == 4)
- register_device(&sdram3_dev);
-#endif
-
- armlinux_add_dram(&sdram0_dev);
+ sdram_dev = add_mem_device("ram0", CONFIG_EP93XX_SDRAM_BANK0_BASE,
+ CONFIG_EP93XX_SDRAM_BANK0_SIZE,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
#if (CONFIG_EP93XX_SDRAM_NUM_BANKS >= 2)
- armlinux_add_dram(&sdram1_dev);
+ sdram_dev = add_mem_device("ram1", CONFIG_EP93XX_SDRAM_BANK1_BASE,
+ CONFIG_EP93XX_SDRAM_BANK1_SIZE,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
#endif
#if (CONFIG_EP93XX_SDRAM_NUM_BANKS >= 3)
- armlinux_add_dram(&sdram2_dev);
+ sdram_dev = add_mem_device("ram2", CONFIG_EP93XX_SDRAM_BANK2_BASE,
+ CONFIG_EP93XX_SDRAM_BANK2_SIZE,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
#endif
#if (CONFIG_EP93XX_SDRAM_NUM_BANKS == 4)
- armlinux_add_dram(&sdram3_dev);
+ sdram_dev = add_mem_device("ram3", CONFIG_EP93XX_SDRAM_BANK3_BASE,
+ CONFIG_EP93XX_SDRAM_BANK2_SIZE,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
#endif
register_device(&eth_dev);
diff --git a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c
index 36f5aa8543..6ea4a6ec71 100644
--- a/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c
+++ b/arch/arm/boards/eukrea_cpuimx25/eukrea_cpuimx25.c
@@ -90,19 +90,6 @@ static struct fec_platform_data fec_info = {
.phy_addr = 1,
};
-static struct memory_platform_data sdram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram0_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS0,
- .size = 64 * 1024 * 1024,
- .platform_data = &sdram_pdata,
-};
-
struct imx_nand_platform_data nand_info = {
.width = 1,
.hw_ecc = 1,
@@ -255,6 +242,8 @@ static struct pad_desc eukrea_cpuimx25_pads[] = {
static int eukrea_cpuimx25_devices_init(void)
{
+ struct device_d *sdram_dev;
+
eukrea_cpuimx25_mmu_init();
mxc_iomux_v3_setup_multiple_pads(eukrea_cpuimx25_pads,
@@ -275,7 +264,9 @@ static int eukrea_cpuimx25_devices_init(void)
PARTITION_FIXED, "env_raw");
dev_add_bb_dev("env_raw", "env0");
- register_device(&sdram0_dev);
+ sdram_dev = add_mem_device("ram0", IMX_SDRAM_CS0, 64 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
/* enable LCD */
gpio_direction_output(26, 1);
@@ -295,7 +286,6 @@ static int eukrea_cpuimx25_devices_init(void)
#endif
register_device(&usbotg_dev);
- armlinux_add_dram(&sdram0_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_EUKREA_CPUIMX25);
diff --git a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c
index 108636f273..92424e690a 100644
--- a/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c
+++ b/arch/arm/boards/eukrea_cpuimx27/eukrea_cpuimx27.c
@@ -63,25 +63,12 @@ static struct device_d cfi_dev1 = {
};
#endif
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
#if defined CONFIG_EUKREA_CPUIMX27_SDRAM_256MB
#define SDRAM0 256
#elif defined CONFIG_EUKREA_CPUIMX27_SDRAM_128MB
#define SDRAM0 128
#endif
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0xa0000000,
- .size = SDRAM0 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
static struct fec_platform_data fec_info = {
.xcv_type = MII100,
.phy_addr = 1,
@@ -197,6 +184,7 @@ static struct device_d imxfb_dev = {
static int eukrea_cpuimx27_devices_init(void)
{
+ struct device_d *sdram_dev;
char *envdev = "no";
int i;
@@ -271,7 +259,9 @@ static int eukrea_cpuimx27_devices_init(void)
register_device(&cfi_dev1);
#endif
imx27_add_nand(&nand_info);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", 0xa0000000, SDRAM0 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
PCCR0 |= PCCR0_I2C1_EN;
i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices));
@@ -292,7 +282,6 @@ static int eukrea_cpuimx27_devices_init(void)
gpio_set_value(GPIO_PORTA | 25, 1);
#endif
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0xa0000100);
armlinux_set_architecture(MACH_TYPE_CPUIMX27);
diff --git a/arch/arm/boards/eukrea_cpuimx35/eukrea_cpuimx35.c b/arch/arm/boards/eukrea_cpuimx35/eukrea_cpuimx35.c
index dd842d5699..d1de495e38 100644
--- a/arch/arm/boards/eukrea_cpuimx35/eukrea_cpuimx35.c
+++ b/arch/arm/boards/eukrea_cpuimx35/eukrea_cpuimx35.c
@@ -61,19 +61,6 @@ static struct fec_platform_data fec_info = {
.phy_addr = 0x1F,
};
-static struct memory_platform_data sdram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS0,
- .size = 128 * 1024 * 1024,
- .platform_data = &sdram_pdata,
-};
-
struct imx_nand_platform_data nand_info = {
.width = 1,
.hw_ecc = 1,
@@ -173,6 +160,8 @@ postcore_initcall(eukrea_cpuimx35_mmu_init);
static int eukrea_cpuimx35_devices_init(void)
{
+ struct device_d *sdram_dev;
+
imx35_add_nand(&nand_info);
devfs_add_partition("nand0", 0x00000, 0x40000, PARTITION_FIXED, "self_raw");
@@ -182,7 +171,9 @@ static int eukrea_cpuimx35_devices_init(void)
imx35_add_fec(&fec_info);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", IMX_SDRAM_CS0, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
imx35_add_fb(&ipu_fb_data);
imx35_add_i2c0(NULL);
@@ -198,7 +189,6 @@ static int eukrea_cpuimx35_devices_init(void)
writel(tmp | (1 << 23), IMX_OTG_BASE + 0x608);
register_device(&usbotg_dev);
#endif
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_EUKREA_CPUIMX35);
diff --git a/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c b/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c
index 3a07e22fc2..4d281f4a82 100644
--- a/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c
+++ b/arch/arm/boards/eukrea_cpuimx51/eukrea_cpuimx51.c
@@ -42,19 +42,6 @@
#include <mach/iomux-mx51.h>
#include <mach/devices-imx51.h>
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x90000000,
- .size = 256 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
static struct fec_platform_data fec_info = {
.xcv_type = MII100,
};
@@ -132,9 +119,13 @@ static void eukrea_cpuimx51_mmu_init(void)
static int eukrea_cpuimx51_devices_init(void)
{
+ struct device_d *sdram_dev;
+
eukrea_cpuimx51_mmu_init();
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", 0x90000000, 256 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
imx51_add_fec(&fec_info);
#ifdef CONFIG_MCI_IMX_ESDHC
imx51_add_mmc0(NULL);
@@ -150,7 +141,6 @@ static int eukrea_cpuimx51_devices_init(void)
gpio_set_value(GPIO_LAN8700_RESET, 1);
gpio_direction_output(GPIO_LCD_BL, 0);
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x90000100);
armlinux_set_architecture(MACH_TYPE_EUKREA_CPUIMX51SD);
diff --git a/arch/arm/boards/freescale-mx23-evk/mx23-evk.c b/arch/arm/boards/freescale-mx23-evk/mx23-evk.c
index c2fbfa245e..d6c2996850 100644
--- a/arch/arm/boards/freescale-mx23-evk/mx23-evk.c
+++ b/arch/arm/boards/freescale-mx23-evk/mx23-evk.c
@@ -25,24 +25,14 @@
#include <generated/mach-types.h>
#include <mach/imx-regs.h>
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .name = "mem",
- .map_base = IMX_MEMORY_BASE,
- .size = 32 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
static int mx23_evk_devices_init(void)
{
- register_device(&sdram_dev);
+ struct device_d *sdram_dev;
- armlinux_add_dram(&sdram_dev);
- armlinux_set_bootparams((void*)(sdram_dev.map_base + 0x100));
+ sdram_dev = add_mem_device("ram0", IMX_MEMORY_BASE, 32 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
+ armlinux_set_bootparams(dev_get_mem_region(sdram_dev, 0) + 0x100);
armlinux_set_architecture(MACH_TYPE_MX23EVK);
return 0;
diff --git a/arch/arm/boards/freescale-mx25-3-stack/3stack.c b/arch/arm/boards/freescale-mx25-3-stack/3stack.c
index 212a937ccf..6d4bde5893 100644
--- a/arch/arm/boards/freescale-mx25-3-stack/3stack.c
+++ b/arch/arm/boards/freescale-mx25-3-stack/3stack.c
@@ -113,38 +113,6 @@ static struct fec_platform_data fec_info = {
.phy_addr = 1,
};
-static struct memory_platform_data sdram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram0_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS0,
-#if defined CONFIG_FREESCALE_MX25_3STACK_SDRAM_64MB_DDR2
- .size = 64 * 1024 * 1024,
-#elif defined CONFIG_FREESCALE_MX25_3STACK_SDRAM_128MB_MDDR
- .size = 128 * 1024 * 1024,
-#else
-#error "Unsupported SDRAM type"
-#endif
- .platform_data = &sdram_pdata,
-};
-
-static struct memory_platform_data sram_pdata = {
- .name = "sram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sram0_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x78000000,
- .size = 128 * 1024,
- .platform_data = &sram_pdata,
-};
-
struct imx_nand_platform_data nand_info = {
.width = 1,
.hw_ecc = 1,
@@ -232,6 +200,8 @@ late_initcall(imx25_3ds_fec_init);
static int imx25_devices_init(void)
{
+ struct device_d *sdram_dev;
+
#ifdef CONFIG_USB
/* USB does not work yet. Don't know why. Maybe
* the CPLD has to be initialized.
@@ -253,13 +223,21 @@ static int imx25_devices_init(void)
devfs_add_partition("nand0", 0x40000, 0x20000, PARTITION_FIXED, "env_raw");
dev_add_bb_dev("env_raw", "env0");
- register_device(&sdram0_dev);
- register_device(&sram0_dev);
+ sdram_dev = add_mem_device("ram0", IMX_SDRAM_CS0,
+#if defined CONFIG_FREESCALE_MX25_3STACK_SDRAM_64MB_DDR2
+ 64 * 1024 * 1024,
+#elif defined CONFIG_FREESCALE_MX25_3STACK_SDRAM_128MB_MDDR
+ 128 * 1024 * 1024,
+#else
+#error "Unsupported SDRAM type"
+#endif
+ IORESOURCE_MEM_WRITEABLE);
+ add_mem_device("sram0", 0x78000000, 128 * 1024, IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices));
imx25_add_i2c0(NULL);
- armlinux_add_dram(&sdram0_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_MX25_3DS);
armlinux_set_serial(imx_uid());
diff --git a/arch/arm/boards/freescale-mx35-3-stack/3stack.c b/arch/arm/boards/freescale-mx35-3-stack/3stack.c
index 0c54337fdc..b3a03cc185 100644
--- a/arch/arm/boards/freescale-mx35-3-stack/3stack.c
+++ b/arch/arm/boards/freescale-mx35-3-stack/3stack.c
@@ -71,19 +71,6 @@ static struct fec_platform_data fec_info = {
.phy_addr = 0x1F,
};
-static struct memory_platform_data sdram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS0,
- .size = 128 * 1024 * 1024,
- .platform_data = &sdram_pdata,
-};
-
struct imx_nand_platform_data nand_info = {
.hw_ecc = 1,
.flash_bbt = 1,
@@ -165,6 +152,7 @@ static void set_board_rev(int rev)
static int f3s_devices_init(void)
{
uint32_t reg;
+ struct device_d *sdram_dev;
/* CS0: Nor Flash */
writel(0x0000cf03, CSCR_U(0));
@@ -209,10 +197,11 @@ static int f3s_devices_init(void)
imx35_add_mmc0(NULL);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", IMX_SDRAM_CS0, 124 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
imx35_add_fb(&ipu_fb_data);
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_MX35_3DS);
diff --git a/arch/arm/boards/freescale-mx51-pdk/board.c b/arch/arm/boards/freescale-mx51-pdk/board.c
index 706642b829..d0b8b89ff6 100644
--- a/arch/arm/boards/freescale-mx51-pdk/board.c
+++ b/arch/arm/boards/freescale-mx51-pdk/board.c
@@ -41,19 +41,6 @@
#include <mach/iomux-mx51.h>
#include <mach/devices-imx51.h>
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x90000000,
- .size = 512 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
static struct fec_platform_data fec_info = {
.xcv_type = MII100,
};
@@ -242,9 +229,12 @@ static void babbage_power_init(void)
static int f3s_devices_init(void)
{
+ struct device_d *sdram_dev;
babbage_mmu_init();
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", 0x90000000, 512 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
imx51_add_fec(&fec_info);
imx51_add_mmc0(NULL);
@@ -254,7 +244,6 @@ static int f3s_devices_init(void)
babbage_power_init();
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x90000100);
armlinux_set_architecture(MACH_TYPE_MX51_BABBAGE);
diff --git a/arch/arm/boards/guf-cupid/board.c b/arch/arm/boards/guf-cupid/board.c
index 88fde349b7..313e2803df 100644
--- a/arch/arm/boards/guf-cupid/board.c
+++ b/arch/arm/boards/guf-cupid/board.c
@@ -55,19 +55,6 @@ static struct device_d fec_dev = {
.platform_data = &fec_info,
};
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram0_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS0,
- .size = 128 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
struct imx_nand_platform_data nand_info = {
.width = 1,
.hw_ecc = 1,
@@ -158,6 +145,7 @@ postcore_initcall(cupid_mmu_init);
static int cupid_devices_init(void)
{
uint32_t reg;
+ struct device_d *sdram_dev;
gpio_direction_output(GPIO_LCD_ENABLE, 0);
gpio_direction_output(GPIO_LCD_BACKLIGHT, 0);
@@ -177,11 +165,12 @@ static int cupid_devices_init(void)
devfs_add_partition("nand0", 0x40000, 0x80000, PARTITION_FIXED, "env_raw");
dev_add_bb_dev("env_raw", "env0");
- register_device(&sdram0_dev);
+ sdram_dev = add_mem_device("ram0", IMX_SDRAM_CS0, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
register_device(&imx_ipu_fb_dev);
register_device(&esdhc_dev);
- armlinux_add_dram(&sdram0_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_GUF_CUPID);
diff --git a/arch/arm/boards/guf-neso/board.c b/arch/arm/boards/guf-neso/board.c
index 83d20ec59c..4e0ac9008e 100644
--- a/arch/arm/boards/guf-neso/board.c
+++ b/arch/arm/boards/guf-neso/board.c
@@ -54,19 +54,6 @@
#define LCD_POWER_GPIO (GPIO_PORTF + 18)
#define BACKLIGHT_POWER_GPIO (GPIO_PORTE + 5)
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0xa0000000,
- .size = 128 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
static struct fec_platform_data fec_info = {
.xcv_type = MII100,
.phy_addr = 31,
@@ -178,6 +165,7 @@ static void neso_mmu_init(void)
static int neso_devices_init(void)
{
int i;
+ struct device_d *sdram_dev;
unsigned int mode[] = {
/* UART1 */
@@ -309,7 +297,9 @@ static int neso_devices_init(void)
imx_gpio_mode(mode[i]);
imx27_add_nand(&nand_info);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", 0xa0000000, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
imx27_add_fb(&neso_fb_data);
#ifdef CONFIG_USB
@@ -325,7 +315,6 @@ static int neso_devices_init(void)
devfs_add_partition("nand0", 0x40000, 0x80000, PARTITION_FIXED, "env_raw");
dev_add_bb_dev("env_raw", "env0");
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0xa0000100);
armlinux_set_architecture(MACH_TYPE_NESO);
diff --git a/arch/arm/boards/imx21ads/imx21ads.c b/arch/arm/boards/imx21ads/imx21ads.c
index 2ff3d4bb77..ab47a8d8a9 100644
--- a/arch/arm/boards/imx21ads/imx21ads.c
+++ b/arch/arm/boards/imx21ads/imx21ads.c
@@ -48,19 +48,6 @@ static struct device_d cfi_dev = {
.size = 32 * 1024 * 1024,
};
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0xc0000000,
- .size = 64 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
struct imx_nand_platform_data nand_info = {
.width = 1,
.hw_ecc = 1,
@@ -145,6 +132,7 @@ core_initcall(imx21ads_timing_init);
static int mx21ads_devices_init(void)
{
int i;
+ struct device_d *sdram_dev;
unsigned int mode[] = {
PA5_PF_LSCLK,
PA6_PF_LD0,
@@ -184,12 +172,13 @@ static int mx21ads_devices_init(void)
imx_gpio_mode(mode[i]);
register_device(&cfi_dev);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", 0xc0000000, 64 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
imx21_add_nand(&nand_info);
register_device(&cs8900_dev);
imx21_add_fb(&imx_fb_data);
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0xc0000100);
armlinux_set_architecture(MACH_TYPE_MX21ADS);
diff --git a/arch/arm/boards/imx27ads/imx27ads.c b/arch/arm/boards/imx27ads/imx27ads.c
index e95712572b..8aaf3a25cc 100644
--- a/arch/arm/boards/imx27ads/imx27ads.c
+++ b/arch/arm/boards/imx27ads/imx27ads.c
@@ -41,19 +41,6 @@ static struct device_d cfi_dev = {
.size = 32 * 1024 * 1024,
};
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0xa0000000,
- .size = 128 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
static struct fec_platform_data fec_info = {
.xcv_type = MII100,
.phy_addr = 1,
@@ -97,6 +84,7 @@ core_initcall(imx27ads_timing_init);
static int mx27ads_devices_init(void)
{
int i;
+ struct device_d *sdram_dev;
unsigned int mode[] = {
PD0_AIN_FEC_TXD0,
PD1_AIN_FEC_TXD1,
@@ -127,14 +115,15 @@ static int mx27ads_devices_init(void)
imx_gpio_mode(mode[i]);
register_device(&cfi_dev);
- register_device(&sdram_dev);
- imx27_add_fec(&fec_info);
+ sdram_dev = add_mem_device("ram0", 0xa0000000, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
+ imx27_add_fec(&fec_info);
devfs_add_partition("nor0", 0x00000, 0x20000, PARTITION_FIXED, "self0");
devfs_add_partition("nor0", 0x20000, 0x20000, PARTITION_FIXED, "env0");
protect_file("/dev/env0", 1);
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0xa0000100);
armlinux_set_architecture(MACH_TYPE_MX27ADS);
diff --git a/arch/arm/boards/karo-tx25/board.c b/arch/arm/boards/karo-tx25/board.c
index dbe0284a6b..a463c82e1f 100644
--- a/arch/arm/boards/karo-tx25/board.c
+++ b/arch/arm/boards/karo-tx25/board.c
@@ -45,45 +45,6 @@ static struct fec_platform_data fec_info = {
.phy_addr = 0x1f,
};
-static struct memory_platform_data sdram0_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram0_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS0,
- .size = 32 * 1024 * 1024,
- .platform_data = &sdram0_pdata,
-};
-
-static struct memory_platform_data sdram1_pdata = {
- .name = "ram1",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram1_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS1,
- .size = 32 * 1024 * 1024,
- .platform_data = &sdram1_pdata,
-};
-
-static struct memory_platform_data sram_pdata = {
- .name = "sram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sram0_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x78000000,
- .size = 128 * 1024,
- .platform_data = &sram_pdata,
-};
-
struct imx_nand_platform_data nand_info = {
.width = 1,
.hw_ecc = 1,
@@ -156,6 +117,8 @@ static void noinline gpio_fec_active(void)
static int tx25_devices_init(void)
{
+ struct device_d *sdram_dev;
+
gpio_fec_active();
imx25_add_fec(&fec_info);
@@ -171,12 +134,15 @@ static int tx25_devices_init(void)
devfs_add_partition("nand0", 0x40000, 0x80000, PARTITION_FIXED, "env_raw");
dev_add_bb_dev("env_raw", "env0");
- register_device(&sdram0_dev);
- register_device(&sdram1_dev);
- register_device(&sram0_dev);
+ sdram_dev = add_mem_device("ram0", IMX_SDRAM_CS0, 32 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
+ sdram_dev = add_mem_device("ram0", IMX_SDRAM_CS1, 32 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
+ add_mem_device("ram0", 0x78000000, 128 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
- armlinux_add_dram(&sdram0_dev);
- armlinux_add_dram(&sdram1_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_TX25);
armlinux_set_serial(imx_uid());
diff --git a/arch/arm/boards/karo-tx28/tx28.c b/arch/arm/boards/karo-tx28/tx28.c
index 095b1bf0d3..b9d5454301 100644
--- a/arch/arm/boards/karo-tx28/tx28.c
+++ b/arch/arm/boards/karo-tx28/tx28.c
@@ -23,19 +23,6 @@
#include <mach/imx-regs.h>
#include <asm/mmu.h>
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_MEMORY_BASE,
- .size = 128 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
/* setup the CPU card internal signals */
static const uint32_t tx28_pad_setup[] = {
/* NAND interface */
@@ -103,15 +90,16 @@ postcore_initcall(tx28_mmu_init);
static int tx28_devices_init(void)
{
int i;
+ struct device_d *sdram_dev;
/* initizalize gpios */
for (i = 0; i < ARRAY_SIZE(tx28_pad_setup); i++)
imx_gpio_mode(tx28_pad_setup[i]);
- register_device(&sdram_dev);
-
- armlinux_add_dram(&sdram_dev);
- armlinux_set_bootparams((void *)(sdram_dev.map_base + 0x100));
+ sdram_dev = add_mem_device("ram0", IMX_MEMORY_BASE, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
+ armlinux_set_bootparams(dev_get_mem_region(sdram_dev, 0) + 0x100);
armlinux_set_architecture(MACH_TYPE_TX28);
base_board_init();
diff --git a/arch/arm/boards/mini2440/mini2440.c b/arch/arm/boards/mini2440/mini2440.c
index f0be4b8bdd..2bdc2ca680 100644
--- a/arch/arm/boards/mini2440/mini2440.c
+++ b/arch/arm/boards/mini2440/mini2440.c
@@ -44,18 +44,6 @@
#include <mach/mci.h>
#include <mach/fb.h>
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = CS6_BASE,
- .platform_data = &ram_pdata,
-};
-
static struct s3c24x0_nand_platform_data nand_info = {
.nand_timing = CALC_NFCONF_TIMING(A9M2440_TACLS, A9M2440_TWRPH0, A9M2440_TWRPH1),
.flash_bbt = 1, /* same as the kernel */
@@ -316,8 +304,7 @@ static int mini2440_devices_init(void)
{
uint32_t reg;
int i;
-
- sdram_dev.size = s3c24x0_get_memory_size();
+ struct device_d *sdram_dev;
/* ----------- configure the access to the outer space ---------- */
for (i = 0; i < ARRAY_SIZE(pin_usage); i++)
@@ -338,7 +325,11 @@ static int mini2440_devices_init(void)
writel(reg, MISCCR);
register_device(&nand_dev);
- register_device(&sdram_dev);
+
+ sdram_dev = add_mem_device("ram0", CS6_BASE, s3c24x0_get_memory_size(),
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
+
register_device(&dm9000_dev);
#ifdef CONFIG_NAND
/* ----------- add some vital partitions -------- */
@@ -352,8 +343,7 @@ static int mini2440_devices_init(void)
#endif
register_device(&mci_dev);
register_device(&s3cfb_dev);
- armlinux_add_dram(&sdram_dev);
- armlinux_set_bootparams((void *)sdram_dev.map_base + 0x100);
+ armlinux_set_bootparams(dev_get_mem_region(sdram_dev, 0) + 0x100);
armlinux_set_architecture(MACH_TYPE_MINI2440);
return 0;
diff --git a/arch/arm/boards/netx/netx.c b/arch/arm/boards/netx/netx.c
index 970530019b..5e25b94bac 100644
--- a/arch/arm/boards/netx/netx.c
+++ b/arch/arm/boards/netx/netx.c
@@ -37,19 +37,6 @@ static struct device_d cfi_dev = {
.size = 32 * 1024 * 1024,
};
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x80000000,
- .size = 64 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
struct netx_eth_platform_data eth0_data = {
.xcno = 0,
};
@@ -71,8 +58,13 @@ static struct device_d netx_eth_dev1 = {
};
static int netx_devices_init(void) {
+ struct device_d *sdram_dev;
+
register_device(&cfi_dev);
- register_device(&sdram_dev);
+
+ sdram_dev = add_mem_device("ram0", 0x80000000, 64 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
register_device(&netx_eth_dev0);
register_device(&netx_eth_dev1);
@@ -83,7 +75,6 @@ static int netx_devices_init(void) {
protect_file("/dev/env0", 1);
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_NXDB500);
diff --git a/arch/arm/boards/omap/board-beagle.c b/arch/arm/boards/omap/board-beagle.c
index 0385666ac8..107a009827 100644
--- a/arch/arm/boards/omap/board-beagle.c
+++ b/arch/arm/boards/omap/board-beagle.c
@@ -264,19 +264,6 @@ static int beagle_console_init(void)
console_initcall(beagle_console_init);
#endif /* CONFIG_DRIVER_SERIAL_NS16550 */
-static struct memory_platform_data sram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x80000000,
- .size = 128 * 1024 * 1024,
- .platform_data = &sram_pdata,
-};
-
#ifdef CONFIG_USB_EHCI_OMAP
static struct omap_hcd omap_ehci_pdata = {
.port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
@@ -324,11 +311,13 @@ static struct device_d hsmmc_dev = {
static int beagle_devices_init(void)
{
- int ret;
+ struct device_d *sdram_dev;
- ret = register_device(&sdram_dev);
- if (ret)
- goto failed;
+ sdram_dev = add_mem_device("ram0", 0x80000000, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ if (!sdram_dev)
+ return -EIO;
+ armlinux_add_dram(sdram_dev);
i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices));
register_device(&i2c_dev);
@@ -345,11 +334,10 @@ static int beagle_devices_init(void)
register_device(&hsmmc_dev);
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_OMAP3_BEAGLE);
-failed:
- return ret;
+
+ return 0;
}
device_initcall(beagle_devices_init);
diff --git a/arch/arm/boards/omap/board-omap3evm.c b/arch/arm/boards/omap/board-omap3evm.c
index d7654c7f90..d555da4abc 100644
--- a/arch/arm/boards/omap/board-omap3evm.c
+++ b/arch/arm/boards/omap/board-omap3evm.c
@@ -58,6 +58,7 @@
#include <mach/control.h>
#include <mach/omap3-mux.h>
#include <mach/gpmc.h>
+#include <errno.h>
#include "board.h"
@@ -241,26 +242,15 @@ static int omap3evm_init_console(void)
console_initcall(omap3evm_init_console);
#endif /* CONFIG_DRIVER_SERIAL_NS16550 */
-static struct memory_platform_data sram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x80000000,
- .size = 128 * 1024 * 1024,
- .platform_data = &sram_pdata,
-};
-
static int omap3evm_init_devices(void)
{
- int ret;
+ struct device_d *sdram_dev;
- ret = register_device(&sdram_dev);
- if (ret)
- goto failed;
+ sdram_dev = add_mem_device("ram0", 0x80000000, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ if (!sdram_dev)
+ return -EIO;
+ armlinux_add_dram(sdram_dev);
#ifdef CONFIG_GPMC
/*
@@ -268,10 +258,6 @@ static int omap3evm_init_devices(void)
*/
gpmc_generic_init(0x10);
#endif
-
- armlinux_add_dram(&sdram_dev);
-
-failed:
- return ret;
+ return 0;
}
device_initcall(omap3evm_init_devices);
diff --git a/arch/arm/boards/omap/board-sdp343x.c b/arch/arm/boards/omap/board-sdp343x.c
index 048168d524..04aa302791 100644
--- a/arch/arm/boards/omap/board-sdp343x.c
+++ b/arch/arm/boards/omap/board-sdp343x.c
@@ -61,6 +61,7 @@
#include <mach/control.h>
#include <mach/omap3-mux.h>
#include <mach/gpmc.h>
+#include <errno.h>
#include "board.h"
/******************** Board Boot Time *******************/
@@ -641,34 +642,19 @@ static int sdp3430_flash_init(void)
return 0;
}
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x80000000,
- .size = 128 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
/*-----------------------Generic Devices Initialization ---------------------*/
static int sdp3430_devices_init(void)
{
+ struct device_d *sdram_dev;
int ret;
- ret = register_device(&sdram_dev);
- if (ret)
- goto failed;
- ret = sdp3430_flash_init();
- if (ret)
- goto failed;
- armlinux_add_dram(&sdram_dev);
-failed:
- return ret;
+ sdram_dev = add_mem_device("ram0", 0x80000000, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ if (!sdram_dev)
+ return -EIO;
+ armlinux_add_dram(sdram_dev);
+ return sdp3430_flash_init();
}
device_initcall(sdp3430_devices_init);
diff --git a/arch/arm/boards/panda/board.c b/arch/arm/boards/panda/board.c
index 43fa0d9a99..c5b1e5cc6e 100644
--- a/arch/arm/boards/panda/board.c
+++ b/arch/arm/boards/panda/board.c
@@ -52,19 +52,6 @@ static int panda_console_init(void)
}
console_initcall(panda_console_init);
-static struct memory_platform_data sram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x80000000,
- .size = SZ_1G,
- .platform_data = &sram_pdata,
-};
-
#ifdef CONFIG_MMU
static int panda_mmu_init(void)
{
@@ -145,6 +132,8 @@ static struct device_d hsmmc_dev = {
static int panda_devices_init(void)
{
+ struct device_d *sdram_dev;
+
panda_boardrev_init();
if (gpio_get_value(182)) {
@@ -171,11 +160,12 @@ static int panda_devices_init(void)
sr32(OMAP44XX_SCRM_ALTCLKSRC, 2, 2, 0x3);
}
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", 0x80000000, SZ_1G,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
register_device(&hsmmc_dev);
panda_ehci_init();
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_OMAP4_PANDA);
diff --git a/arch/arm/boards/pcm037/pcm037.c b/arch/arm/boards/pcm037/pcm037.c
index 366a8a413c..7895059ad7 100644
--- a/arch/arm/boards/pcm037/pcm037.c
+++ b/arch/arm/boards/pcm037/pcm037.c
@@ -51,23 +51,6 @@ static struct device_d cfi_dev = {
};
/*
- * up to 2MiB static RAM type memory, connected
- * to CS4, data width is 16 bit
- */
-static struct memory_platform_data sram_dev_pdata0 = {
- .name = "sram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_CS4_BASE,
- .size = IMX_CS4_RANGE, /* area size */
- .platform_data = &sram_dev_pdata0,
-};
-
-/*
* SMSC 9217 network controller
* connected to CS line 1 and interrupt line
* GPIO3, data width is 16 bit
@@ -85,41 +68,12 @@ static struct device_d network_dev = {
#define SDRAM0 256
#endif
-static struct memory_platform_data ram_dev_pdata0 = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram0_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS0,
- .size = SDRAM0 * 1024 * 1024, /* fix size */
- .platform_data = &ram_dev_pdata0,
-};
-
-#ifndef CONFIG_PCM037_SDRAM_BANK1_NONE
-
#if defined CONFIG_PCM037_SDRAM_BANK1_128MB
#define SDRAM1 128
#elif defined CONFIG_PCM037_SDRAM_BANK1_256MB
#define SDRAM1 256
#endif
-static struct memory_platform_data ram_dev_pdata1 = {
- .name = "ram1",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram1_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS1,
- .size = SDRAM1 * 1024 * 1024, /* fix size */
- .platform_data = &ram_dev_pdata1,
-};
-#endif
-
struct imx_nand_platform_data nand_info = {
.width = 1,
.hw_ecc = 1,
@@ -253,6 +207,8 @@ static void pcm037_mmu_init(void)
static int imx31_devices_init(void)
{
+ struct device_d *sdram_dev;
+
pcm037_mmu_init();
__REG(CSCR_U(0)) = 0x0000cf03; /* CS0: Nor Flash */
@@ -282,13 +238,22 @@ static int imx31_devices_init(void)
protect_file("/dev/env0", 1);
- register_device(&sram_dev);
+ /*
+ * up to 2MiB static RAM type memory, connected
+ * to CS4, data width is 16 bit
+ */
+ add_mem_device("sram0", IMX_CS4_BASE, IMX_CS4_RANGE, /* area size */
+ IORESOURCE_MEM_WRITEABLE);
imx31_add_nand(&nand_info);
register_device(&network_dev);
- register_device(&sdram0_dev);
+ sdram_dev = add_mem_device("ram0", IMX_SDRAM_CS1, SDRAM0 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
#ifndef CONFIG_PCM037_SDRAM_BANK1_NONE
- register_device(&sdram1_dev);
+ sdram_dev = add_mem_device("ram1", IMX_SDRAM_CS1, SDRAM1 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
#endif
#ifdef CONFIG_USB
pcm037_usb_init();
@@ -296,10 +261,6 @@ static int imx31_devices_init(void)
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/arch/arm/boards/pcm038/pcm038.c b/arch/arm/boards/pcm038/pcm038.c
index 2f4e671406..046fbd50ea 100644
--- a/arch/arm/boards/pcm038/pcm038.c
+++ b/arch/arm/boards/pcm038/pcm038.c
@@ -54,32 +54,6 @@ static struct device_d cfi_dev = {
.size = 32 * 1024 * 1024,
};
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0xa0000000,
- .size = 128 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
-static struct memory_platform_data sram_pdata = {
- .name = "sram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0xc8000000,
- .size = 512 * 1024, /* Can be up to 2MiB */
- .platform_data = &sram_pdata,
-};
-
static struct fec_platform_data fec_info = {
.xcv_type = MII100,
.phy_addr = 1,
@@ -191,6 +165,7 @@ static int pcm038_devices_init(void)
{
int i;
char *envdev;
+ struct device_d *sdram_dev;
unsigned int mode[] = {
PD0_AIN_FEC_TXD0,
@@ -294,8 +269,11 @@ static int pcm038_devices_init(void)
register_device(&cfi_dev);
imx27_add_nand(&nand_info);
- register_device(&sdram_dev);
- register_device(&sram_dev);
+ sdram_dev = add_mem_device("ram0", 0xa0000000, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
+ add_mem_device("ram0", 0xc8000000, 512 * 1024, /* Can be up to 2MiB */
+ IORESOURCE_MEM_WRITEABLE);
imx27_add_fb(&pcm038_fb_data);
#ifdef CONFIG_USB
@@ -330,7 +308,6 @@ 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/arch/arm/boards/pcm043/pcm043.c b/arch/arm/boards/pcm043/pcm043.c
index ab88617d3e..0cfd6751fb 100644
--- a/arch/arm/boards/pcm043/pcm043.c
+++ b/arch/arm/boards/pcm043/pcm043.c
@@ -61,19 +61,6 @@ static struct fec_platform_data fec_info = {
.xcv_type = MII100,
};
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram0_dev = {
- .id = -1,
- .name = "mem",
- .map_base = IMX_SDRAM_CS0,
- .size = 128 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
struct imx_nand_platform_data nand_info = {
.width = 1,
.hw_ecc = 1,
@@ -149,6 +136,7 @@ struct gpio_led led0 = {
static int imx35_devices_init(void)
{
+ struct device_d *sdram_dev;
uint32_t reg;
/* CS0: Nor Flash */
@@ -189,10 +177,12 @@ static int imx35_devices_init(void)
}
}
- register_device(&sdram0_dev);
+
+ sdram_dev = add_mem_device("ram0", IMX_SDRAM_CS0, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
imx35_add_fb(&ipu_fb_data);
- armlinux_add_dram(&sdram0_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_PCM043);
diff --git a/arch/arm/boards/pcm049/board.c b/arch/arm/boards/pcm049/board.c
index b5d22bb9b3..1b7923f234 100644
--- a/arch/arm/boards/pcm049/board.c
+++ b/arch/arm/boards/pcm049/board.c
@@ -63,32 +63,6 @@ static int pcm049_console_init(void)
}
console_initcall(pcm049_console_init);
-static struct memory_platform_data sram_pdata = {
- .name = "sram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x40300000,
- .size = 48 * 1024,
- .platform_data = &sram_pdata,
-};
-
-static struct memory_platform_data sdram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x80000000,
- .size = SZ_512M,
- .platform_data = &sdram_pdata,
-};
-
#ifdef CONFIG_MMU
static int pcm049_mmu_init(void)
{
@@ -141,8 +115,13 @@ static void pcm049_network_init(void)
static int pcm049_devices_init(void)
{
- register_device(&sdram_dev);
- register_device(&sram_dev);
+ struct device_d *sdram_dev;
+
+ sdram_dev = add_mem_device("ram0", 0x80000000, SZ_512M,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
+ add_mem_device("ram0", 0x40300000, 48 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
register_device(&hsmmc_dev);
gpmc_generic_init(0x10);
@@ -160,7 +139,6 @@ static int pcm049_devices_init(void)
dev_add_bb_dev("env_raw", "env0");
#endif
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x80000100);
armlinux_set_architecture(MACH_TYPE_PCM049);
diff --git a/arch/arm/boards/phycard-i.MX27/pca100.c b/arch/arm/boards/phycard-i.MX27/pca100.c
index 2eba3e4959..63216f523e 100644
--- a/arch/arm/boards/phycard-i.MX27/pca100.c
+++ b/arch/arm/boards/phycard-i.MX27/pca100.c
@@ -41,19 +41,6 @@
#include <mach/iomux-mx27.h>
#include <mach/devices-imx27.h>
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0xa0000000,
- .size = 128 * 1024 * 1024,
- .platform_data = &ram_pdata,
-};
-
static struct fec_platform_data fec_info = {
.xcv_type = MII100,
.phy_addr = 1,
@@ -150,6 +137,7 @@ static int pca100_devices_init(void)
{
int i;
struct device_d *nand;
+ struct device_d *sdram_dev;
unsigned int mode[] = {
PD0_AIN_FEC_TXD0,
@@ -224,7 +212,9 @@ static int pca100_devices_init(void)
imx_gpio_mode(mode[i]);
imx27_add_nand(&nand_info);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", 0xa0000000, 128 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
imx27_add_fec(&fec_info);
imx27_add_mmc0(NULL);
@@ -241,7 +231,6 @@ 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/arch/arm/boards/scb9328/scb9328.c b/arch/arm/boards/scb9328/scb9328.c
index 2227427d8b..dc818ce5f0 100644
--- a/arch/arm/boards/scb9328/scb9328.c
+++ b/arch/arm/boards/scb9328/scb9328.c
@@ -41,19 +41,6 @@ static struct device_d cfi_dev = {
.size = 16 * 1024 * 1024,
};
-static struct memory_platform_data sdram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x08000000,
- .size = 16 * 1024 * 1024,
- .platform_data = &sdram_pdata,
-};
-
static struct dm9000_platform_data dm9000_data = {
.buswidth = DM9000_WIDTH_16,
.srom = 1,
@@ -93,6 +80,7 @@ struct gpio_led leds[] = {
static int scb9328_devices_init(void)
{
int i;
+ struct device_d *sdram_dev;
imx_gpio_mode(PA23_PF_CS5);
imx_gpio_mode(GPIO_PORTB | GPIO_GPIO | GPIO_OUT | 21);
@@ -121,14 +109,15 @@ static int scb9328_devices_init(void)
CS5L = 0x00000D03;
register_device(&cfi_dev);
- register_device(&sdram_dev);
+ sdram_dev = add_mem_device("ram0", 0x08000000, 16 * 1024 * 1024,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
register_device(&dm9000_dev);
devfs_add_partition("nor0", 0x00000, 0x40000, PARTITION_FIXED, "self0");
devfs_add_partition("nor0", 0x40000, 0x20000, PARTITION_FIXED, "env0");
protect_file("/dev/env0", 1);
- armlinux_add_dram(&sdram_dev);
armlinux_set_bootparams((void *)0x08000100);
armlinux_set_architecture(MACH_TYPE_SCB9328);
diff --git a/arch/arm/mach-at91/at91rm9200_devices.c b/arch/arm/mach-at91/at91rm9200_devices.c
index c6c823ec86..d0502ca193 100644
--- a/arch/arm/mach-at91/at91rm9200_devices.c
+++ b/arch/arm/mach-at91/at91rm9200_devices.c
@@ -20,30 +20,13 @@
#include "generic.h"
-static struct resource sdram_dev_resources[] = {
- [0] = {
- .start = AT91_CHIPSELECT_1,
- },
-};
-
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .num_resources = ARRAY_SIZE(sdram_dev_resources),
- .resource = sdram_dev_resources,
- .platform_data = &ram_pdata,
-};
-
void at91_add_device_sdram(u32 size)
{
- sdram_dev_resources[0].size = size;
- register_device(&sdram_dev);
- armlinux_add_dram(&sdram_dev);
+ struct device_d *sdram_dev;
+
+ sdram_dev = add_mem_device("ram0", AT91_CHIPSELECT_1, size,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
}
/* --------------------------------------------------------------------
diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c
index a149ede8a9..988dd92e3c 100644
--- a/arch/arm/mach-at91/at91sam9260_devices.c
+++ b/arch/arm/mach-at91/at91sam9260_devices.c
@@ -21,30 +21,13 @@
#include "generic.h"
-static struct resource sdram_dev_resources[] = {
- [0] = {
- .start = AT91_CHIPSELECT_1,
- },
-};
-
-static struct memory_platform_data sram_pdata = {
- .name = "sram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .num_resources = ARRAY_SIZE(sdram_dev_resources),
- .resource = sdram_dev_resources,
- .platform_data = &sram_pdata,
-};
-
void at91_add_device_sdram(u32 size)
{
- sdram_dev_resources[0].size = size;
- register_device(&sdram_dev);
- armlinux_add_dram(&sdram_dev);
+ struct device_d *sdram_dev;
+
+ sdram_dev = add_mem_device("ram0", AT91_CHIPSELECT_1, size,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
}
#if defined(CONFIG_DRIVER_NET_MACB)
diff --git a/arch/arm/mach-at91/at91sam9261_devices.c b/arch/arm/mach-at91/at91sam9261_devices.c
index 901f7e4a71..e00c3e05f8 100644
--- a/arch/arm/mach-at91/at91sam9261_devices.c
+++ b/arch/arm/mach-at91/at91sam9261_devices.c
@@ -21,30 +21,13 @@
#include "generic.h"
-static struct resource sdram_dev_resources[] = {
- [0] = {
- .start = AT91_CHIPSELECT_1,
- },
-};
-
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .num_resources = ARRAY_SIZE(sdram_dev_resources),
- .resource = sdram_dev_resources,
- .platform_data = &ram_pdata,
-};
-
void at91_add_device_sdram(u32 size)
{
- sdram_dev_resources[0].size = size;
- register_device(&sdram_dev);
- armlinux_add_dram(&sdram_dev);
+ struct device_d *sdram_dev;
+
+ sdram_dev = add_mem_device("ram0", AT91_CHIPSELECT_1, size,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
}
#if defined(CONFIG_NAND_ATMEL)
diff --git a/arch/arm/mach-at91/at91sam9263_devices.c b/arch/arm/mach-at91/at91sam9263_devices.c
index 74edb8d69b..752f789877 100644
--- a/arch/arm/mach-at91/at91sam9263_devices.c
+++ b/arch/arm/mach-at91/at91sam9263_devices.c
@@ -21,30 +21,13 @@
#include "generic.h"
-static struct resource sdram_dev_resources[] = {
- [0] = {
- .start = AT91_CHIPSELECT_1,
- },
-};
-
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .num_resources = ARRAY_SIZE(sdram_dev_resources),
- .resource = sdram_dev_resources,
- .platform_data = &ram_pdata,
-};
-
void at91_add_device_sdram(u32 size)
{
- sdram_dev_resources[0].size = size;
- register_device(&sdram_dev);
- armlinux_add_dram(&sdram_dev);
+ struct device_d *sdram_dev;
+
+ sdram_dev = add_mem_device("ram0", AT91_CHIPSELECT_1, size,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
}
#if defined(CONFIG_DRIVER_NET_MACB)
diff --git a/arch/arm/mach-at91/at91sam9g45_devices.c b/arch/arm/mach-at91/at91sam9g45_devices.c
index 9657649f0a..8a02c8dc3d 100644
--- a/arch/arm/mach-at91/at91sam9g45_devices.c
+++ b/arch/arm/mach-at91/at91sam9g45_devices.c
@@ -21,30 +21,13 @@
#include "generic.h"
-static struct resource sdram_dev_resources[] = {
- [0] = {
- .start = AT91_CHIPSELECT_6,
- },
-};
-
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .num_resources = ARRAY_SIZE(sdram_dev_resources),
- .resource = sdram_dev_resources,
- .platform_data = &ram_pdata,
-};
-
void at91_add_device_sdram(u32 size)
{
- sdram_dev_resources[0].size = size;
- register_device(&sdram_dev);
- armlinux_add_dram(&sdram_dev);
+ struct device_d *sdram_dev;
+
+ sdram_dev = add_mem_device("ram0", AT91_CHIPSELECT_6, size,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
}
#if defined(CONFIG_DRIVER_NET_MACB)
diff --git a/arch/arm/mach-nomadik/8815.c b/arch/arm/mach-nomadik/8815.c
index e742a0981d..e5adafd017 100644
--- a/arch/arm/mach-nomadik/8815.c
+++ b/arch/arm/mach-nomadik/8815.c
@@ -31,30 +31,13 @@ static struct clk st8815_clk_48 = {
.rate = 48 * 1000 * 1000,
};
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct resource sdram_dev_resources[] = {
- [0] = {
- .start = 0x00000000,
- },
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .num_resources = ARRAY_SIZE(sdram_dev_resources),
- .resource = sdram_dev_resources,
- .platform_data = &ram_pdata,
-};
-
void st8815_add_device_sdram(u32 size)
{
- sdram_dev_resources[0].size = size;
- register_device(&sdram_dev);
- armlinux_add_dram(&sdram_dev);
+ struct device_d *sdram_dev;
+
+ sdram_dev = add_mem_device("ram0", 0x00000000, size,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
}
static struct resource uart0_serial_resources[] = {
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c
index 5857d43510..63cf4a5003 100644
--- a/arch/arm/mach-versatile/core.c
+++ b/arch/arm/mach-versatile/core.c
@@ -42,23 +42,13 @@
#include <mach/platform.h>
#include <mach/init.h>
-static struct memory_platform_data ram_pdata = {
- .name = "ram0",
- .flags = IORESOURCE_MEM_WRITEABLE,
-};
-
-static struct device_d sdram_dev = {
- .id = -1,
- .name = "mem",
- .map_base = 0x00000000,
- .platform_data = &ram_pdata,
-};
-
void versatile_add_sdram(u32 size)
{
- sdram_dev.size = size;
- register_device(&sdram_dev);
- armlinux_add_dram(&sdram_dev);
+ struct device_d *sdram_dev;
+
+ sdram_dev = add_mem_device("ram0", 0x00000000, size,
+ IORESOURCE_MEM_WRITEABLE);
+ armlinux_add_dram(sdram_dev);
}
static struct device_d uart0_serial_device = {