aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/omap/patches-3.12/202-ARM-OMAP2-hwmod-Extract-no-idle-and-no-reset-info-from-DT.patch
diff options
context:
space:
mode:
authorImre Kaloz <kaloz@openwrt.org>2013-12-14 17:37:14 +0000
committerImre Kaloz <kaloz@openwrt.org>2013-12-14 17:37:14 +0000
commite504547e4c80f2a2963b69d1cfc7cd046f6253e6 (patch)
treea3206aa892ebe4f89781ca8a824aba978faebbee /target/linux/omap/patches-3.12/202-ARM-OMAP2-hwmod-Extract-no-idle-and-no-reset-info-from-DT.patch
parenta55649082a4cc02e85d3292a4077548c180c92dd (diff)
downloadupstream-e504547e4c80f2a2963b69d1cfc7cd046f6253e6.tar.gz
upstream-e504547e4c80f2a2963b69d1cfc7cd046f6253e6.tar.bz2
upstream-e504547e4c80f2a2963b69d1cfc7cd046f6253e6.zip
upgrade 3.12 targets to 3.12.5
Signed-off-by: Imre Kaloz <kaloz@openwrt.org> SVN-Revision: 39055
Diffstat (limited to 'target/linux/omap/patches-3.12/202-ARM-OMAP2-hwmod-Extract-no-idle-and-no-reset-info-from-DT.patch')
-rw-r--r--target/linux/omap/patches-3.12/202-ARM-OMAP2-hwmod-Extract-no-idle-and-no-reset-info-from-DT.patch56
1 files changed, 34 insertions, 22 deletions
diff --git a/target/linux/omap/patches-3.12/202-ARM-OMAP2-hwmod-Extract-no-idle-and-no-reset-info-from-DT.patch b/target/linux/omap/patches-3.12/202-ARM-OMAP2-hwmod-Extract-no-idle-and-no-reset-info-from-DT.patch
index 453ebd6cfe..56229603ab 100644
--- a/target/linux/omap/patches-3.12/202-ARM-OMAP2-hwmod-Extract-no-idle-and-no-reset-info-from-DT.patch
+++ b/target/linux/omap/patches-3.12/202-ARM-OMAP2-hwmod-Extract-no-idle-and-no-reset-info-from-DT.patch
@@ -1,36 +1,49 @@
+From f92d9597f781f6a5a39c73dc71604bd8a21c5299 Mon Sep 17 00:00:00 2001
+From: Rajendra Nayak <rnayak@ti.com>
+Date: Wed, 09 Oct 2013 07:26:55 +0000
+Subject: ARM: OMAP2+: hwmod: Extract no-idle and no-reset info from DT
+
Now that we have DT bindings to specify which devices should not
be reset and idled during init, make hwmod extract the information
(and store them in internal flags) from Device tree.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+[paul@pwsan.com: updated to apply]
+Signed-off-by: Paul Walmsley <paul@pwsan.com>
---
-arch/arm/mach-omap2/omap_hwmod.c | 23 ++++++++++++++++-------
- 1 file changed, 16 insertions(+), 7 deletions(-)
-
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
-@@ -2363,11 +2363,11 @@ static struct device_node *of_dev_hwmod_
- * are part of the device's address space can be ioremapped properly.
- * No return value.
+@@ -2357,6 +2357,8 @@ static struct device_node *of_dev_hwmod_
+ /**
+ * _init_mpu_rt_base - populate the virtual address for a hwmod
+ * @oh: struct omap_hwmod * to locate the virtual address
++ * @data: (unused, caller should pass NULL)
++ * @np: struct device_node * of the IP block's device node in the DT data
+ *
+ * Cache the virtual address used by the MPU to access this IP block's
+ * registers. This address is needed early so the OCP registers that
+@@ -2365,11 +2367,11 @@ static struct device_node *of_dev_hwmod_
+ * Returns 0 on success, -EINVAL if an invalid hwmod is passed, and
+ * -ENXIO on absent or invalid register target address space.
*/
--static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
-+static void __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data,
-+ struct device_node *np)
+-static int __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data)
++static int __init _init_mpu_rt_base(struct omap_hwmod *oh, void *data,
++ struct device_node *np)
{
struct omap_hwmod_addr_space *mem;
void __iomem *va_start = NULL;
- struct device_node *np;
if (!oh)
- return;
-@@ -2383,12 +2383,10 @@ static void __init _init_mpu_rt_base(str
+ return -EINVAL;
+@@ -2385,12 +2387,10 @@ static int __init _init_mpu_rt_base(stru
oh->name);
/* Extract the IO space from device tree blob */
- if (!of_have_populated_dt())
+ if (!np)
- return;
+ return -ENXIO;
- np = of_dev_hwmod_lookup(of_find_node_by_name(NULL, "ocp"), oh);
- if (np)
@@ -39,7 +52,7 @@ arch/arm/mach-omap2/omap_hwmod.c | 23 ++++++++++++++++-------
} else {
va_start = ioremap(mem->pa_start, mem->pa_end - mem->pa_start);
}
-@@ -2420,12 +2418,16 @@ static void __init _init_mpu_rt_base(str
+@@ -2423,12 +2423,16 @@ static int __init _init_mpu_rt_base(stru
static int __init _init(struct omap_hwmod *oh, void *data)
{
int r;
@@ -51,22 +64,21 @@ arch/arm/mach-omap2/omap_hwmod.c | 23 ++++++++++++++++-------
+ if (of_have_populated_dt())
+ np = of_dev_hwmod_lookup(of_find_node_by_name(NULL, "ocp"), oh);
+
- if (oh->class->sysc)
-- _init_mpu_rt_base(oh, NULL);
-+ _init_mpu_rt_base(oh, NULL, np);
-
- r = _init_clocks(oh, NULL);
- if (r < 0) {
-@@ -2433,6 +2435,13 @@ static int __init _init(struct omap_hwmo
+ if (oh->class->sysc) {
+- r = _init_mpu_rt_base(oh, NULL);
++ r = _init_mpu_rt_base(oh, NULL, np);
+ if (r < 0) {
+ WARN(1, "omap_hwmod: %s: doesn't have mpu register target base\n",
+ oh->name);
+@@ -2442,6 +2446,12 @@ static int __init _init(struct omap_hwmo
return -EINVAL;
}
-+ if (np) {
++ if (np)
+ if (of_find_property(np, "ti,no-reset-on-init", NULL))
+ oh->flags |= HWMOD_INIT_NO_RESET;
+ if (of_find_property(np, "ti,no-idle-on-init", NULL))
+ oh->flags |= HWMOD_INIT_NO_IDLE;
-+ }
+
oh->_state = _HWMOD_STATE_INITIALIZED;