From: Benoit Cousson <b-cousson@ti.com>
To: "Varadarajan, Charulatha" <charu@ti.com>
Cc: "david-b@pacbell.net" <david-b@pacbell.net>,
"broonie@opensource.wolfsonmicro.com"
<broonie@opensource.wolfsonmicro.com>,
"akpm@linux-foundation.org" <akpm@linux-foundation.org>,
"linux-omap@vger.kernel.org" <linux-omap@vger.kernel.org>,
"paul@pwsan.com" <paul@pwsan.com>,
"Nayak, Rajendra" <rnayak@ti.com>,
"khilman@deeprootsystems.com" <khilman@deeprootsystems.com>,
"tony@atomide.com" <tony@atomide.com>
Subject: Re: [PATCH 11/13 v3] OMAP: GPIO: Introduce support for OMAP2PLUS chip GPIO init
Date: Tue, 15 Jun 2010 19:22:53 +0200 [thread overview]
Message-ID: <4C17B6ED.203@ti.com> (raw)
In-Reply-To: <1276614348-5201-12-git-send-email-charu@ti.com>
On 6/15/2010 5:05 PM, Varadarajan, Charulatha wrote:
> From: Charulatha V<charu@ti.com>
>
> This patch adds support for handling GPIO as a HWMOD FW adapted
> platform device for OMAP2PLUS chips.
>
> gpio_init needs to be done before machine_init functions access gpio APIs.
> Hence gpio_init is made as a postcore_initcall.
>
> Signed-off-by: Charulatha V<charu@ti.com>
> ---
> arch/arm/mach-omap2/gpio.c | 104 ++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 104 insertions(+), 0 deletions(-)
> create mode 100644 arch/arm/mach-omap2/gpio.c
>
> diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c
> new file mode 100644
> index 0000000..993995a
> --- /dev/null
> +++ b/arch/arm/mach-omap2/gpio.c
> @@ -0,0 +1,104 @@
> +/*
> + * gpio.c - OMAP2PLUS-specific gpio code
> + *
> + * Copyright (C) 2010 Texas Instruments, Inc.
> + *
> + * Author:
> + * Charulatha V<charu@ti.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include<linux/gpio.h>
> +#include<linux/err.h>
> +#include<linux/slab.h>
> +
> +#include<plat/omap_hwmod.h>
> +#include<plat/omap_device.h>
> +
> +static struct omap_device_pm_latency omap_gpio_latency[] = {
> + [0] = {
> + .deactivate_func = omap_device_idle_hwmods,
> + .activate_func = omap_device_enable_hwmods,
> + .flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST,
> + },
> +};
> +
> +static int omap2_init_gpio(struct omap_hwmod *oh, void *user)
> +{
> + struct omap_device *od;
> + struct omap_gpio_platform_data *pdata;
> + char *name = "omap-gpio";
> + static int id;
> + struct omap_gpio_dev_attr *gpio_dev_data;
> +
> + if (!oh)
> + pr_err("Could not look up omap gpio %d\n", id + 1);
> +
> + pdata = kzalloc(sizeof(struct omap_gpio_platform_data),
> + GFP_KERNEL);
> + if (!pdata) {
> + pr_err("Memory allocation failed gpio%d\n", id + 1);
> + return -ENOMEM;
> + }
> +
> + gpio_dev_data = (struct omap_gpio_dev_attr *)oh->dev_attr;
> + pdata->gpio_attr = gpio_dev_data;
> + pdata->method = (int)user;
That method seems to be an IP version specific information and not a Soc
specific one. You should store that in the hwmod dev_attr.
What does 'method' mean in that context? Maybe the name should be revisited?
> + pdata->virtual_irq_start = IH_GPIO_BASE + 32 * id;
> +
> + od = omap_device_build(name, id, oh, pdata,
> + sizeof(*pdata), omap_gpio_latency,
> + ARRAY_SIZE(omap_gpio_latency),
> + false);
> + WARN(IS_ERR(od), "Cant build omap_device for %s:%s.\n",
> + name, oh->name);
> +
> + id++;
> + return 0;
> +}
> +
> +static int __init gpio_init(int method)
> +{
> + return omap_hwmod_for_each_by_class("gpio", omap2_init_gpio,
> + (void *)method);
> +}
> +
> +/*
> + * gpio_init needs to be done before
> + * machine_init functions access gpio APIs.
> + * Hence gpio_init is a postcore_initcall.
> + */
> +#ifdef CONFIG_ARCH_OMAP2
> +static int __init omap24xx_gpio_init(void)
> +{ if (!cpu_is_omap24xx())
> + return -EINVAL;
> +
> + return gpio_init(METHOD_GPIO_24XX);
> +}
> +postcore_initcall(omap24xx_gpio_init);
> +#endif
> +
> +#ifdef CONFIG_ARCH_OMAP3
> +static int __init omap3xxx_gpio_init(void)
> +{
> + if (!cpu_is_omap34xx())
> + return -EINVAL;
> +
> + return gpio_init(METHOD_GPIO_24XX);
> +}
> +postcore_initcall(omap3xxx_gpio_init);
> +#endif
> +
> +#ifdef CONFIG_ARCH_OMAP4
> +static int __init omap44xx_gpio_init(void)
> +{
> + if (!cpu_is_omap44xx())
> + return -EINVAL;
> +
> + return gpio_init(METHOD_GPIO_44XX);
> +}
You can avoid all this duplication of code by using the dev_attr instead
of using a parameter.
Benoit
next prev parent reply other threads:[~2010-06-15 17:23 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-15 15:05 [PATCH 00/13 v3] OMAP: GPIO: Implement GPIO in HWMOD way Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 01/13 v3] OMAP: GPIO: Modify init() in preparation for platform device implementation Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 02/13 v3] OMAP: GPIO: Populate GPIO base address in omapxxxx.h Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 03/13 v3] OMAP: GPIO: Include platform_data structure for GPIO Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 04/13 v3] OMAP: GPIO: Introduce support for OMAP15xx chip GPIO init Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 05/13 v3] OMAP: GPIO: Introduce support for OMAP16xx " Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 06/13 v3] OMAP: GPIO: Introduce support for OMAP7xx " Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 07/13 v3] OMAP: GPIO: add GPIO hwmods structures for OMAP3 Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 08/13 v3] OMAP: GPIO: add GPIO hwmods structures for OMAP242X Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 09/13 v3] OMAP: GPIO: add GPIO hwmods structures for OMAP243X Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 10/13 v3] OMAP: GPIO: Add gpio dev_attr and correct clks in OMAP4 hwmod struct Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 11/13 v3] OMAP: GPIO: Introduce support for OMAP2PLUS chip GPIO init Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 12/13 v3] OMAP: GPIO: Implement GPIO as a platform device Varadarajan, Charulatha
2010-06-15 15:05 ` [PATCH 13/13 v3] OMAP: GPIO: Remove omap_gpio_init() Varadarajan, Charulatha
2010-06-16 20:34 ` [PATCH 12/13 v3] OMAP: GPIO: Implement GPIO as a platform device Benoit Cousson
2010-06-21 16:02 ` Varadarajan, Charulatha
2010-06-15 17:22 ` Benoit Cousson [this message]
2010-06-16 6:55 ` [PATCH 11/13 v3] OMAP: GPIO: Introduce support for OMAP2PLUS chip GPIO init Varadarajan, Charulatha
2010-06-16 7:21 ` Shilimkar, Santosh
2010-06-16 8:46 ` Varadarajan, Charulatha
2010-06-16 9:35 ` Cousson, Benoit
2010-06-16 9:06 ` Cousson, Benoit
2010-06-16 15:43 ` Varadarajan, Charulatha
2010-06-17 16:34 ` Kevin Hilman
2010-06-21 15:53 ` Varadarajan, Charulatha
2010-06-15 16:40 ` [PATCH 10/13 v3] OMAP: GPIO: Add gpio dev_attr and correct clks in OMAP4 hwmod struct Benoit Cousson
2010-06-16 6:54 ` Varadarajan, Charulatha
2010-06-16 8:57 ` Cousson, Benoit
2010-06-16 15:41 ` Varadarajan, Charulatha
2010-06-16 20:25 ` Benoit Cousson
2010-06-17 16:42 ` Kevin Hilman
2010-06-22 13:30 ` Varadarajan, Charulatha
2010-06-22 14:35 ` Kevin Hilman
2010-06-24 8:44 ` [PATCH 07/13 v3] OMAP: GPIO: add GPIO hwmods structures for OMAP3 DebBarma, Tarun Kanti
2010-06-17 20:23 ` [PATCH 04/13 v3] OMAP: GPIO: Introduce support for OMAP15xx chip GPIO init Kevin Hilman
2010-06-21 10:52 ` Varadarajan, Charulatha
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=4C17B6ED.203@ti.com \
--to=b-cousson@ti.com \
--cc=akpm@linux-foundation.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=charu@ti.com \
--cc=david-b@pacbell.net \
--cc=khilman@deeprootsystems.com \
--cc=linux-omap@vger.kernel.org \
--cc=paul@pwsan.com \
--cc=rnayak@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).