All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@deeprootsystems.com>
To: linux-omap@vger.kernel.org
Cc: paul@pwsan.com
Subject: [PATCH 11/13] OMAP: create omap_devices for MPU, DSP, L3
Date: Wed, 23 Jun 2010 16:42:41 -0700	[thread overview]
Message-ID: <1277336563-24988-12-git-send-email-khilman@deeprootsystems.com> (raw)
In-Reply-To: <1277336563-24988-1-git-send-email-khilman@deeprootsystems.com>

Create simple omap_devices for the main processors and busses.

This is required to support the forth-coming device-based OPP
approach, where OPPs are managed and tracked at the device level.

So that these primary devices are available for early PM initialization,
they are created as early platform_devices.

Cc: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
---
 arch/arm/mach-omap2/devices.c            |    2 +
 arch/arm/mach-omap2/io.c                 |   55 +++++++++++++++++++++++++++++-
 arch/arm/plat-omap/include/plat/common.h |    4 ++
 3 files changed, 60 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 03e6c9e..62920ac 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -15,6 +15,7 @@
 #include <linux/platform_device.h>
 #include <linux/io.h>
 #include <linux/clk.h>
+#include <linux/err.h>
 
 #include <mach/hardware.h>
 #include <mach/irqs.h>
@@ -29,6 +30,7 @@
 #include <mach/gpio.h>
 #include <plat/mmc.h>
 #include <plat/dma.h>
+#include <plat/omap_device.h>
 
 #include "mux.h"
 
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 3cfb425..ecebbbf 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -45,7 +45,7 @@
 
 #include <plat/clockdomain.h>
 #include "clockdomains.h"
-#include <plat/omap_hwmod.h>
+#include <plat/omap_device.h>
 
 /*
  * The machine specific code may provide the extra mapping besides the
@@ -313,6 +313,58 @@ static int __init _omap2_init_reprogram_sdrc(void)
 	return v;
 }
 
+static struct omap_device_pm_latency *pm_lats;
+
+static DEFINE_PER_CPU(struct device *, mpu_dev);
+static struct device *dsp_dev;
+static struct device *l3_dev;
+
+struct device *omap_get_mpu_device(void)
+{
+	mpu_dev = per_cpu(mpu_dev, smp_processor_id());
+	WARN_ON_ONCE(!mpu_dev);
+	return mpu_dev;
+}
+
+struct device *omap_get_dsp_device(void)
+{
+	WARN_ON_ONCE(!dsp_dev);
+	return dsp_dev;
+}
+
+struct device *omap_get_l3_device(void)
+{
+	WARN_ON_ONCE(!l3_dev);
+	return l3_dev;
+}
+
+static int _init_omap_device(struct omap_hwmod *oh, void *user)
+{
+	struct omap_device *od;
+	const char *name = oh->name;
+	struct device **new_dev = (struct device **)user;
+
+	od = omap_device_build(name, 0, oh, NULL, 0, pm_lats, 0, true);
+	if (WARN(IS_ERR(od), "Could not build omap_device for %s\n", name))
+		return -ENODEV;
+
+	*new_dev = &od->pdev.dev;
+
+	return 0;
+}
+
+/*
+ * Build omap_devices for processors and bus.
+ */
+static void omap_init_processor_devices(void)
+{
+	mpu_dev = per_cpu(mpu_dev, smp_processor_id());
+
+	omap_hwmod_for_each_by_class("mpu", _init_omap_device, &mpu_dev);
+	omap_hwmod_for_each_by_class("dsp", _init_omap_device, &dsp_dev);
+	omap_hwmod_for_each_by_class("l3", _init_omap_device, &l3_dev);
+}
+
 void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
 				 struct omap_sdrc_params *sdrc_cs1)
 {
@@ -342,6 +394,7 @@ void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
 	omap_serial_early_init();
 	if (cpu_is_omap24xx() || cpu_is_omap34xx())   /* FIXME: OMAP4 */
 		omap_hwmod_late_init();
+	omap_init_processor_devices();
 	omap_pm_if_init();
 	if (cpu_is_omap24xx() || cpu_is_omap34xx()) {
 		omap2_sdrc_init(sdrc_cs0, sdrc_cs1);
diff --git a/arch/arm/plat-omap/include/plat/common.h b/arch/arm/plat-omap/include/plat/common.h
index d265018..0059dec 100644
--- a/arch/arm/plat-omap/include/plat/common.h
+++ b/arch/arm/plat-omap/include/plat/common.h
@@ -87,4 +87,8 @@ void omap2_set_globals_uart(struct omap_globals *);
 	}							\
 })
 
+struct device *omap_get_mpu_device(void);
+struct device *omap_get_dsp_device(void);
+struct device *omap_get_l3_device(void);
+
 #endif /* __ARCH_ARM_MACH_OMAP_COMMON_H */
-- 
1.7.0.2


  parent reply	other threads:[~2010-06-23 23:43 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-23 23:42 [PATCH 00/13] OMAP: CM, hwmod, omap_device fixes and updates Kevin Hilman
2010-06-23 23:42 ` [PATCH 01/13] OMAP24xx: CM: fix mask used for checking IDLEST status Kevin Hilman
2010-06-23 23:42 ` [PATCH 02/13] OMAP: hwmod: allow idle after HWMOD_INIT_NO_IDLE Kevin Hilman
2010-06-24  5:02   ` Paul Walmsley
2010-06-24 17:48     ` Kevin Hilman
2010-06-29 21:47       ` Kevin Hilman
2010-06-23 23:42 ` [PATCH 03/13] OMAP2/3: hwmod: L3 and L4 CORE/PER/WKUP hwmods don't have IDLEST Kevin Hilman
2010-06-23 23:42 ` [PATCH 04/13] OMAP: hwmod: Fix the missing braces Kevin Hilman
2010-06-23 23:46   ` Gadiyar, Anand
2010-06-24  0:19     ` Paul Walmsley
2010-06-23 23:42 ` [PATCH 05/13] OMAP2&3: hwmod: Remove _hwmod prefix in name string Kevin Hilman
2010-06-24  5:04   ` Paul Walmsley
2010-06-24 11:53     ` Cousson, Benoit
2010-07-02 11:47   ` Paul Walmsley
2010-06-23 23:42 ` [PATCH 06/13] OMAP: hwmod: add non-locking versions of enable and idle functions Kevin Hilman
2010-06-24  5:08   ` Paul Walmsley
2010-06-24 12:59     ` Basak, Partha
2010-06-24 17:55       ` Kevin Hilman
2010-06-24 17:55     ` Kevin Hilman
2010-06-23 23:42 ` [PATCH 07/13] OMAP: hwmod: don't auto-disable hwmod when !CONFIG_PM_RUNTIME Kevin Hilman
2010-07-02 11:38   ` Paul Walmsley
2010-06-23 23:42 ` [PATCH 08/13] OMAP4: hwmod: Enable omap_device build for OMAP4 Kevin Hilman
2010-06-24  5:11   ` Paul Walmsley
2010-06-24 14:23     ` Nayak, Rajendra
2010-06-24 17:52       ` Kevin Hilman
2010-06-24 19:29         ` Nayak, Rajendra
2010-06-24 21:47           ` Kevin Hilman
2010-07-02 11:46   ` Paul Walmsley
2010-06-23 23:42 ` [PATCH 09/13] OMAP: omap_device: ensure hwmod tracks attached omap_device pointer Kevin Hilman
2010-07-02 11:40   ` Paul Walmsley
2010-06-23 23:42 ` [PATCH 10/13] OMAP: omap_device: add flag to disable automatic bus-level suspend/resume Kevin Hilman
2010-06-24  3:40   ` Paul Walmsley
2010-06-24 17:39     ` Kevin Hilman
2010-06-24 18:06       ` Paul Walmsley
2010-06-24 18:28         ` Kevin Hilman
2010-06-23 23:42 ` Kevin Hilman [this message]
2010-06-24  6:26   ` [PATCH 11/13] OMAP: create omap_devices for MPU, DSP, L3 Paul Walmsley
2010-06-24  6:55     ` Paul Walmsley
2010-06-24 17:59       ` Kevin Hilman
2010-06-24  6:58     ` Shilimkar, Santosh
2010-06-24  7:19       ` Paul Walmsley
2010-06-24  7:27         ` Shilimkar, Santosh
2010-06-23 23:42 ` [PATCH 12/13] OMAP: hwmod data: add class for DSP hwmods Kevin Hilman
2010-06-24 18:44   ` Paul Walmsley
2010-06-24 20:35     ` Kevin Hilman
2010-06-24 21:26       ` Kevin Hilman
2010-06-24 21:34         ` Kevin Hilman
2010-06-23 23:42 ` [PATCH 13/13] OMAP3: hwmod data: add data for OMAP3 IVA2 Kevin Hilman
2010-06-24 20:43   ` Kevin Hilman
2010-06-24 21:36     ` Cousson, Benoit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1277336563-24988-12-git-send-email-khilman@deeprootsystems.com \
    --to=khilman@deeprootsystems.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=paul@pwsan.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.