diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2012-12-18 15:22:27 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2012-12-19 21:51:49 +0100 |
commit | e412cb78053ebfe5d9546a98abcf1f671b14ca43 (patch) | |
tree | 184ed5dd5fbd6e6536d2dd3d92d157d858064294 /arch | |
parent | f42ee5fd404e49d84291b7a1ac0c28fd987c176e (diff) | |
download | barebox-e412cb78053ebfe5d9546a98abcf1f671b14ca43.tar.gz barebox-e412cb78053ebfe5d9546a98abcf1f671b14ca43.tar.xz |
ARM omap: Make gpmc base runtime configurable
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-omap/devices-gpmc-nand.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap/gpmc.c | 14 | ||||
-rw-r--r-- | arch/arm/mach-omap/include/mach/gpmc.h | 4 |
3 files changed, 16 insertions, 4 deletions
diff --git a/arch/arm/mach-omap/devices-gpmc-nand.c b/arch/arm/mach-omap/devices-gpmc-nand.c index 42cb1b42bf..b2a2b0fdb9 100644 --- a/arch/arm/mach-omap/devices-gpmc-nand.c +++ b/arch/arm/mach-omap/devices-gpmc-nand.c @@ -46,7 +46,7 @@ int omap_add_gpmc_nand_device(struct gpmc_nand_platform_data *pdata) /* Configure GPMC CS before register */ gpmc_cs_config(pdata->cs, pdata->nand_cfg); - add_generic_device("gpmc_nand", DEVICE_ID_DYNAMIC, NULL, OMAP_GPMC_BASE, + add_generic_device("gpmc_nand", DEVICE_ID_DYNAMIC, NULL, (resource_size_t)omap_gpmc_base, 1024 * 4, IORESOURCE_MEM, pdata); return 0; diff --git a/arch/arm/mach-omap/gpmc.c b/arch/arm/mach-omap/gpmc.c index 4cfb7cf4ee..d2b70247f7 100644 --- a/arch/arm/mach-omap/gpmc.c +++ b/arch/arm/mach-omap/gpmc.c @@ -29,6 +29,16 @@ #include <mach/sys_info.h> #include <mach/syslib.h> +void __iomem *omap_gpmc_base; + +static int gpmc_init(void) +{ + omap_gpmc_base = (void *)OMAP_GPMC_BASE; + + return 0; +} +pure_initcall(gpmc_init); + /** * @brief Do a Generic initialization of GPMC. if you choose otherwise, * Use gpmc registers to modify the values. The defaults configured are: @@ -43,7 +53,7 @@ void gpmc_generic_init(unsigned int cfg) { uint64_t start; - unsigned int reg = GPMC_REG(CONFIG7_0); + void __iomem *reg = GPMC_REG(CONFIG7_0); char x = 0; debug("gpmccfg=0x%x\n", cfg); @@ -89,7 +99,7 @@ EXPORT_SYMBOL(gpmc_generic_init); */ void gpmc_cs_config(char cs, struct gpmc_config *config) { - unsigned int reg = GPMC_REG(CONFIG1_0) + (cs * GPMC_CONFIG_CS_SIZE); + void __iomem *reg = GPMC_REG(CONFIG1_0) + (cs * GPMC_CONFIG_CS_SIZE); unsigned char x = 0; debug("gpmccs=0x%x cfg=0x%p\n", cs, config); diff --git a/arch/arm/mach-omap/include/mach/gpmc.h b/arch/arm/mach-omap/include/mach/gpmc.h index 957ff55eff..d4eac79717 100644 --- a/arch/arm/mach-omap/include/mach/gpmc.h +++ b/arch/arm/mach-omap/include/mach/gpmc.h @@ -32,8 +32,10 @@ #ifndef __ASM_ARCH_OMAP_GPMC_H #define __ASM_ARCH_OMAP_GPMC_H +extern void __iomem *omap_gpmc_base; + /** GPMC Reg Wrapper */ -#define GPMC_REG(REGNAME) (OMAP_GPMC_BASE + GPMC_##REGNAME) +#define GPMC_REG(REGNAME) (omap_gpmc_base + GPMC_##REGNAME) #define GPMC_SYS_CONFIG (0x10) #define GPMC_SYS_STATUS (0x14) |