summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/gpmc.c
diff options
context:
space:
mode:
authorAfzal Mohammed <afzal@ti.com>2012-09-24 01:28:24 +0200
committerPaul Walmsley <paul@pwsan.com>2012-09-24 01:28:24 +0200
commit4be48fd53bb7620220be5677bd767cda6d9ece0f (patch)
treea2dcb3772e6e3fb6e21650751aedd3df28372b1e /arch/arm/mach-omap2/gpmc.c
parentARM: OMAP2/3: hwmod data: add gpmc (diff)
downloadlinux-4be48fd53bb7620220be5677bd767cda6d9ece0f.tar.xz
linux-4be48fd53bb7620220be5677bd767cda6d9ece0f.zip
ARM: OMAP2+: gpmc: Adapt to HWMOD
Create API for platforms to adapt GPMC to HWMOD Signed-off-by: Afzal Mohammed <afzal@ti.com> Reviewed-by: Jon Hunter <jon-hunter@ti.com> Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm/mach-omap2/gpmc.c')
-rw-r--r--arch/arm/mach-omap2/gpmc.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index fe75656f9900..396ce77caeff 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -31,10 +31,13 @@
#include <plat/cpu.h>
#include <plat/gpmc.h>
#include <plat/sdrc.h>
+#include <plat/omap_device.h>
#include "soc.h"
#include "common.h"
+#define DEVICE_NAME "omap-gpmc"
+
/* GPMC register offsets */
#define GPMC_REVISION 0x00
#define GPMC_SYSCONFIG 0x10
@@ -898,6 +901,25 @@ static int __init gpmc_init(void)
}
postcore_initcall(gpmc_init);
+static int __init omap_gpmc_init(void)
+{
+ struct omap_hwmod *oh;
+ struct platform_device *pdev;
+ char *oh_name = "gpmc";
+
+ oh = omap_hwmod_lookup(oh_name);
+ if (!oh) {
+ pr_err("Could not look up %s\n", oh_name);
+ return -ENODEV;
+ }
+
+ pdev = omap_device_build(DEVICE_NAME, -1, oh, NULL, 0, NULL, 0, 0);
+ WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name);
+
+ return IS_ERR(pdev) ? PTR_ERR(pdev) : 0;
+}
+postcore_initcall(omap_gpmc_init);
+
static irqreturn_t gpmc_handle_irq(int irq, void *dev)
{
int i;