From: Kevin Hilman <khilman@deeprootsystems.com>
To: Omar Ramirez Luna <omar.ramirez@ti.com>
Cc: Tony Lindgren <tony@atomide.com>,
Hiroshi DOYU <Hiroshi.DOYU@nokia.com>,
Felipe Contreras <felipe.contreras@gmail.com>,
Dmitry Kasatkin <dmitry.kasatkin@nokia.com>,
Suman Anna <s-anna@ti.com>, Paul Walmsley <paul@pwsan.com>,
Benoit Cousson <b-cousson@ti.com>,
"Govindraj.R" <govindraj.raja@ti.com>,
C A Subramaniam <subramaniam.ca@ti.com>,
linux-omap@vger.kernel.org
Subject: Re: [PATCH 3/5] omap: mailbox: add omap_device latency information
Date: Tue, 09 Nov 2010 15:48:10 -0800 [thread overview]
Message-ID: <87hbfqf491.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1288129984-22957-4-git-send-email-omar.ramirez@ti.com> (Omar Ramirez Luna's message of "Tue, 26 Oct 2010 16:53:02 -0500")
Omar Ramirez Luna <omar.ramirez@ti.com> writes:
> From: Felipe Contreras <felipe.contreras@gmail.com>
>
> So that we can enable the main clock.
-ENO_DESCRIPTIVE_CHANGELOG
omap_device_enable/disable do more than just manage the clocks
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> Signed-off-by: Omar Ramirez Luna <omar.ramirez@ti.com>
> ---
> arch/arm/mach-omap2/devices.c | 19 +++++++++++++++++--
> arch/arm/mach-omap2/mailbox.c | 21 +++++++++------------
> arch/arm/plat-omap/include/plat/mailbox.h | 6 ++++++
> 3 files changed, 32 insertions(+), 14 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
> index d977572..337fd7a 100644
> --- a/arch/arm/mach-omap2/devices.c
> +++ b/arch/arm/mach-omap2/devices.c
> @@ -29,6 +29,7 @@
> #include <plat/dma.h>
> #include <plat/omap_hwmod.h>
> #include <plat/omap_device.h>
> +#include <plat/mailbox.h>
>
> #include "mux.h"
> #include "control.h"
> @@ -141,10 +142,20 @@ static inline void omap_init_camera(void)
> #endif
>
> #if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
> +static struct omap_device_pm_latency mbox_latencies[] = {
> + [0] = {
> + .activate_func = omap_device_enable_clocks,
> + .activate_lat = 50000, /* FIXME random value */
> + .deactivate_func = omap_device_enable_clocks,
> + .deactivate_lat = 50000, /* FIXME random value */
> + },
> +};
hmm, I'm hoping you're not expecting this to merge when using random values.
> static inline void omap_init_mbox(void)
> {
> struct omap_hwmod *oh;
> struct omap_device *od;
> + struct omap_mbox_platform_data pdata;
>
> oh = omap_hwmod_lookup("mailbox");
> if (!oh) {
> @@ -152,10 +163,14 @@ static inline void omap_init_mbox(void)
> return;
> }
>
> + pdata.device_enable = omap_device_enable;
> + pdata.device_disable = omap_device_idle;
If the driver want's to use the hooks, just use the runtime PM API.
More on this below.
> od = omap_device_build("omap-mailbox", -1, oh,
> - NULL, 0,
> - NULL, 0,
> + &pdata, sizeof(pdata),
> + mbox_latencies, ARRAY_SIZE(mbox_latencies),
> 0);
> +
> if (!od) {
> pr_err("%s: could not build device\n", __func__);
> return;
> diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
> index 1ddb82d..61f2149 100644
> --- a/arch/arm/mach-omap2/mailbox.c
> +++ b/arch/arm/mach-omap2/mailbox.c
> @@ -53,6 +53,7 @@
> #define OMAP4_MBOX_NR_REGS (OMAP4_MBOX_REG_SIZE / sizeof(u32))
>
> static void __iomem *mbox_base;
> +static struct platform_device *mbox_pdev;
>
> struct omap_mbox2_fifo {
> unsigned long msg;
> @@ -71,8 +72,6 @@ struct omap_mbox2_priv {
> unsigned long irqdisable;
> };
>
> -static struct clk *mbox_ick_handle;
> -
> static void omap2_mbox_enable_irq(struct omap_mbox *mbox,
> omap_mbox_type_t irq);
>
> @@ -91,14 +90,10 @@ static int omap2_mbox_startup(struct omap_mbox *mbox)
> {
> u32 l;
> unsigned long timeout;
> + struct omap_mbox_platform_data *pdata = mbox_pdev->dev.platform_data;
>
> - mbox_ick_handle = clk_get(NULL, "mailboxes_ick");
> - if (IS_ERR(mbox_ick_handle)) {
> - printk(KERN_ERR "Could not get mailboxes_ick: %ld\n",
> - PTR_ERR(mbox_ick_handle));
> - return PTR_ERR(mbox_ick_handle);
> - }
> - clk_enable(mbox_ick_handle);
> + if (pdata->device_enable)
> + pdata->device_enable(mbox_pdev);
pm_runtime_get_sync(dev)
> if (cpu_is_omap44xx()) {
> mbox_write_reg(OMAP4_SOFTRESET, MAILBOX_SYSCONFIG);
> @@ -144,9 +139,9 @@ static int omap2_mbox_startup(struct omap_mbox *mbox)
>
> static void omap2_mbox_shutdown(struct omap_mbox *mbox)
> {
> - clk_disable(mbox_ick_handle);
> - clk_put(mbox_ick_handle);
> - mbox_ick_handle = NULL;
> + struct omap_mbox_platform_data *pdata = mbox_pdev->dev.platform_data;
> + if (pdata->device_disable)
> + pdata->device_disable(mbox_pdev);
pm_runtime_put(dev)
> }
>
> /* Mailbox FIFO handle functions */
> @@ -428,6 +423,8 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
> if (!mbox_base)
> return -ENOMEM;
>
> + mbox_pdev = pdev;
please don't use a global for this. What if a future SoC has more than
one mailbox?
How about adding a field to struct omap_mbox?
> ret = omap_mbox_register(&pdev->dev, list);
> if (ret) {
> iounmap(mbox_base);
> diff --git a/arch/arm/plat-omap/include/plat/mailbox.h b/arch/arm/plat-omap/include/plat/mailbox.h
> index 9976565..59443b1 100644
> --- a/arch/arm/plat-omap/include/plat/mailbox.h
> +++ b/arch/arm/plat-omap/include/plat/mailbox.h
> @@ -11,6 +11,7 @@
>
> typedef u32 mbox_msg_t;
> struct omap_mbox;
> +struct platform_device;
>
> typedef int __bitwise omap_mbox_irq_t;
> #define IRQ_TX ((__force omap_mbox_irq_t) 1)
> @@ -59,6 +60,11 @@ struct omap_mbox {
> void *priv;
> };
>
> +struct omap_mbox_platform_data {
> + int (*device_enable)(struct platform_device *pdev);
> + int (*device_disable)(struct platform_device *pdev);
> +};
> +
> int omap_mbox_msg_send(struct omap_mbox *, mbox_msg_t msg);
> void omap_mbox_init_seq(struct omap_mbox *);
Kevin
next prev parent reply other threads:[~2010-11-09 23:48 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-26 21:52 [PATCH 0/5] omap: mailbox: hwmod support and dependent cleanup patches Omar Ramirez Luna
2010-10-26 21:53 ` [PATCH 1/5] omap: mailbox: initial hwmod support for omap3 Omar Ramirez Luna
2010-10-27 5:07 ` Varadarajan, Charulatha
2010-10-27 11:50 ` Omar Ramirez Luna
2010-11-09 23:38 ` Kevin Hilman
2010-11-10 3:08 ` Ramirez Luna, Omar
2010-10-26 21:53 ` [PATCH 2/5] omap: mailbox: initial hwmod support for omap2 Omar Ramirez Luna
2010-10-27 5:07 ` Varadarajan, Charulatha
2010-10-26 21:53 ` [PATCH 3/5] omap: mailbox: add omap_device latency information Omar Ramirez Luna
2010-11-09 23:48 ` Kevin Hilman [this message]
2010-11-10 1:18 ` Felipe Contreras
2010-11-10 3:03 ` Ramirez Luna, Omar
2010-10-26 21:53 ` [PATCH 4/5] omap: mailbox: fix detection for previously supported chips Omar Ramirez Luna
2010-10-27 5:06 ` Varadarajan, Charulatha
2010-10-27 7:28 ` Felipe Contreras
2010-10-27 9:00 ` Grazvydas Ignotas
2010-10-27 9:46 ` Felipe Contreras
2010-10-26 21:53 ` [PATCH 5/5] omap: mailbox: remove unreachable return Omar Ramirez Luna
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=87hbfqf491.fsf@deeprootsystems.com \
--to=khilman@deeprootsystems.com \
--cc=Hiroshi.DOYU@nokia.com \
--cc=b-cousson@ti.com \
--cc=dmitry.kasatkin@nokia.com \
--cc=felipe.contreras@gmail.com \
--cc=govindraj.raja@ti.com \
--cc=linux-omap@vger.kernel.org \
--cc=omar.ramirez@ti.com \
--cc=paul@pwsan.com \
--cc=s-anna@ti.com \
--cc=subramaniam.ca@ti.com \
--cc=tony@atomide.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.