All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@deeprootsystems.com>
To: Felipe Contreras <felipe.contreras@gmail.com>
Cc: linux-omap <linux-omap@vger.kernel.org>,
	Hiroshi Doyu <hiroshi.doyu@nokia.com>,
	Paul Walmsley <paul@pwsan.com>, Ohad Ben-Cohen <ohad@wizery.com>
Subject: Re: [RFC/PATCH 1/2] omap: mailbox: initial hwmod support
Date: Mon, 24 May 2010 17:00:25 -0700	[thread overview]
Message-ID: <871vd0voiu.fsf@deeprootsystems.com> (raw)
In-Reply-To: <1274549122-26521-2-git-send-email-felipe.contreras@gmail.com> (Felipe Contreras's message of "Sat\, 22 May 2010 20\:25\:21 +0300")

Felipe Contreras <felipe.contreras@gmail.com> writes:

> Only OMAP3 would work.
>
> Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
> ---
>  arch/arm/mach-omap2/devices.c              |  103 +++++----------------------
>  arch/arm/mach-omap2/mailbox.c              |   14 +---
>  arch/arm/mach-omap2/omap_hwmod_3xxx_data.c |   45 ++++++++++++
>  arch/arm/plat-omap/include/plat/mailbox.h  |    4 +
>  4 files changed, 72 insertions(+), 94 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
> index d9ac853..89f6cbc 100644
> --- a/arch/arm/mach-omap2/devices.c
> +++ b/arch/arm/mach-omap2/devices.c
> @@ -20,12 +20,14 @@
>  #include <asm/mach-types.h>
>  #include <asm/mach/map.h>
>  
> +#include <plat/omap_device.h>
>  #include <plat/control.h>
>  #include <plat/tc.h>
>  #include <plat/board.h>
>  #include <plat/mux.h>
>  #include <mach/gpio.h>
>  #include <plat/mmc.h>
> +#include <plat/mailbox.h>
>  
>  #include "mux.h"
>  
> @@ -137,95 +139,28 @@ static inline void omap_init_camera(void)
>  #endif
>  
>  #if defined(CONFIG_OMAP_MBOX_FWK) || defined(CONFIG_OMAP_MBOX_FWK_MODULE)
> +static inline void omap_init_mbox(void)
> +{
> +	struct omap_hwmod *hwmod;
> +	struct omap_device *odev;
> +	struct omap_mbox_platform_data pdata;
>  
> -#define MBOX_REG_SIZE   0x120
> -
> -#ifdef CONFIG_ARCH_OMAP2
> -static struct resource omap2_mbox_resources[] = {
> -	{
> -		.start		= OMAP24XX_MAILBOX_BASE,
> -		.end		= OMAP24XX_MAILBOX_BASE + MBOX_REG_SIZE - 1,
> -		.flags		= IORESOURCE_MEM,
> -	},
> -	{
> -		.start		= INT_24XX_MAIL_U0_MPU,
> -		.flags		= IORESOURCE_IRQ,
> -		.name		= "dsp",
> -	},
> -	{
> -		.start		= INT_24XX_MAIL_U3_MPU,
> -		.flags		= IORESOURCE_IRQ,
> -		.name		= "iva",
> -	},
> -};
> -static int omap2_mbox_resources_sz = ARRAY_SIZE(omap2_mbox_resources);
> -#else
> -#define omap2_mbox_resources		NULL
> -#define omap2_mbox_resources_sz		0
> -#endif
> -
> -#ifdef CONFIG_ARCH_OMAP3
> -static struct resource omap3_mbox_resources[] = {
> -	{
> -		.start		= OMAP34XX_MAILBOX_BASE,
> -		.end		= OMAP34XX_MAILBOX_BASE + MBOX_REG_SIZE - 1,
> -		.flags		= IORESOURCE_MEM,
> -	},
> -	{
> -		.start		= INT_24XX_MAIL_U0_MPU,
> -		.flags		= IORESOURCE_IRQ,
> -		.name		= "dsp",
> -	},
> -};
> -static int omap3_mbox_resources_sz = ARRAY_SIZE(omap3_mbox_resources);
> -#else
> -#define omap3_mbox_resources		NULL
> -#define omap3_mbox_resources_sz		0
> -#endif
> -
> -#ifdef CONFIG_ARCH_OMAP4
> -
> -#define OMAP4_MBOX_REG_SIZE	0x130
> -static struct resource omap4_mbox_resources[] = {
> -	{
> -		.start          = OMAP44XX_MAILBOX_BASE,
> -		.end            = OMAP44XX_MAILBOX_BASE +
> -					OMAP4_MBOX_REG_SIZE - 1,
> -		.flags          = IORESOURCE_MEM,
> -	},
> -	{
> -		.start          = OMAP44XX_IRQ_MAIL_U0,
> -		.flags          = IORESOURCE_IRQ,
> -		.name		= "mbox",
> -	},
> -};
> -static int omap4_mbox_resources_sz = ARRAY_SIZE(omap4_mbox_resources);
> -#else
> -#define omap4_mbox_resources		NULL
> -#define omap4_mbox_resources_sz		0
> -#endif
> +	hwmod = omap_hwmod_lookup("mailbox");
> +	if (!hwmod) {
> +		pr_err("%s: unable to find hwmod\n", __func__);
> +		return;
> +	}
>  
> -static struct platform_device mbox_device = {
> -	.name		= "omap-mailbox",
> -	.id		= -1,
> -};
> +	pdata.base_addr = hwmod->_rt_va;

Shouldn't need the base address in pdata.  The driver should just do a
platform_get_resource() to get the physical address and then ioremap.

> -static inline void omap_init_mbox(void)
> -{
> -	if (cpu_is_omap24xx()) {
> -		mbox_device.resource = omap2_mbox_resources;
> -		mbox_device.num_resources = omap2_mbox_resources_sz;
> -	} else if (cpu_is_omap34xx()) {
> -		mbox_device.resource = omap3_mbox_resources;
> -		mbox_device.num_resources = omap3_mbox_resources_sz;
> -	} else if (cpu_is_omap44xx()) {
> -		mbox_device.resource = omap4_mbox_resources;
> -		mbox_device.num_resources = omap4_mbox_resources_sz;
> -	} else {
> -		pr_err("%s: platform not supported\n", __func__);
> +	odev = omap_device_build("omap-mailbox", -1, hwmod,
> +			&pdata, sizeof(pdata),
> +			NULL, 0,
> +			0);
> +	if (!odev) {
> +		pr_err("%s: could not build device\n", __func__);
>  		return;
>  	}
> -	platform_device_register(&mbox_device);
>  }
>  #else
>  static inline void omap_init_mbox(void) { }
> diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
> index d46e439..baaaa5a 100644
> --- a/arch/arm/mach-omap2/mailbox.c
> +++ b/arch/arm/mach-omap2/mailbox.c
> @@ -15,6 +15,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/io.h>
>  #include <plat/mailbox.h>
> +#include <plat/omap_hwmod.h>
>  #include <mach/irqs.h>
>  
>  #define MAILBOX_REVISION		0x000
> @@ -388,11 +389,9 @@ struct omap_mbox *omap4_mboxes[] = { &mbox_1_info, &mbox_2_info, NULL };
>  
>  static int __devinit omap2_mbox_probe(struct platform_device *pdev)
>  {
> -	struct resource *res;
>  	int ret;
>  	struct omap_mbox **list;
> -
> -	res = pdev->resource;
> +	struct omap_mbox_platform_data *pdata = pdev->dev.platform_data;
>  
>  	if (false);
>  #if defined(CONFIG_ARCH_OMAP3430)
> @@ -423,15 +422,11 @@ static int __devinit omap2_mbox_probe(struct platform_device *pdev)
>  		return -ENODEV;
>  	}
>  
> -	mbox_base = ioremap(res[0].start, resource_size(&res[0]));
> -	if (!mbox_base)
> -		return -ENOMEM;
> +	mbox_base = pdata->base_addr;

Here is where the platform_get_resource() and ioremap should be.

>  	ret = omap_mbox_register(&pdev->dev, list);
> -	if (ret) {
> -		iounmap(mbox_base);
> +	if (ret)
>  		return ret;
> -	}
>  	return 0;
>  
>  	return ret;

[...]

Kevin

  parent reply	other threads:[~2010-05-25  0:00 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-22 17:25 [RFC/PATCH 0/2] omap: mailbox: hwmod experiment Felipe Contreras
2010-05-22 17:25 ` [RFC/PATCH 1/2] omap: mailbox: initial hwmod support Felipe Contreras
2010-05-24  0:59   ` Kanigeri, Hari
2010-05-24 23:56     ` Kevin Hilman
2010-05-25  0:00   ` Kevin Hilman [this message]
2010-05-25  0:29     ` Felipe Contreras
2010-05-25 14:49       ` Kevin Hilman
2010-05-25 15:23         ` Felipe Contreras
2010-05-25 16:08           ` Kevin Hilman
2010-05-22 17:25 ` [RFC/PATCH 2/2] omap: mailbox: add omap_device latency information Felipe Contreras
2010-05-24 17:29 ` [RFC/PATCH 0/2] omap: mailbox: hwmod experiment Ohad Ben-Cohen
2010-05-24 19:33   ` Felipe Contreras
2010-05-24 19:55     ` Ohad Ben-Cohen
2010-05-25  0:02       ` Kevin Hilman

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=871vd0voiu.fsf@deeprootsystems.com \
    --to=khilman@deeprootsystems.com \
    --cc=felipe.contreras@gmail.com \
    --cc=hiroshi.doyu@nokia.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=ohad@wizery.com \
    --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.