From: Grant Likely <grant.likely@secretlab.ca>
To: Tony Lindgren <tony@atomide.com>
Cc: linux-kernel@vger.kernel.org,
Linus Walleij <linus.walleij@stericsson.com>,
Arnd Bergmann <arnd@arndb.de>, Rajendra Nayak <rnayak@ti.com>,
linux-mmc@vger.kernel.org, linux-omap@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 1/4] gpiolib: Add gpiochip_find_by_name() and gpio_find_by_chip_name()
Date: Fri, 02 Mar 2012 11:48:33 -0700 [thread overview]
Message-ID: <20120302184833.C296A3E1C63@localhost> (raw)
In-Reply-To: <20120302180848.GM18901@atomide.com>
On Fri, 2 Mar 2012 10:08:48 -0800, Tony Lindgren <tony@atomide.com> wrote:
> * Tony Lindgren <tony@atomide.com> [120302 08:31]:
> > * Grant Likely <grant.likely@secretlab.ca> [120302 01:00]:
> > > On Thu, 01 Mar 2012 10:55:24 -0800, Tony Lindgren <tony@atomide.com> wrote:
> > > > +
> > > > +/**
> > > > + * gpiochip_find_by_name() - iterator for locating a gpio_chip by name
> > > > + * @name: name of the gpio_chip
> > > > + *
> > > > + * Similar to bus_find_device_by_name. It returns a reference to the
> > > > + * first gpio_chip with matching name. It ignores NULL and empty names.
> > > > + * If you need to do something more complex, then use gpiochip_find.
> > > > + */
> > > > +struct gpio_chip *gpiochip_find_by_name(const char *name)
> > > > +{
> > > > + if (!name || !strcmp(name, ""))
> > > > + return NULL;
> > > > +
> > > > + return gpiochip_find((void *)name, match_name);
> > >
> > > Nasty cast. Can the signature for gpiochip_find be changed to accept
> > > a (const void *)?
> >
> > I think so, this too comes from the bus code.
>
> Looks like it can't be const as of_node_to_gpiochip uses it with
> a struct device_node * that for of_get_named_gpio_flags comes from
> of_parse_phandle_with_args.
Really? It sees to work fine here:
---
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index d773540..e633a2a 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1152,8 +1152,9 @@ EXPORT_SYMBOL_GPL(gpiochip_remove);
* non-zero, this function will return to the caller and not iterate over any
* more gpio_chips.
*/
-struct gpio_chip *gpiochip_find(void *data,
- int (*match)(struct gpio_chip *chip, void *data))
+struct gpio_chip *gpiochip_find(const void *data,
+ int (*match)(struct gpio_chip *chip,
+ const void *data))
{
struct gpio_chip *chip = NULL;
unsigned long flags;
diff --git a/drivers/of/gpio.c b/drivers/of/gpio.c
index e034b38..bba8121 100644
--- a/drivers/of/gpio.c
+++ b/drivers/of/gpio.c
@@ -229,7 +229,7 @@ void of_gpiochip_remove(struct gpio_chip *chip)
}
/* Private function for resolving node pointer to gpio_chip */
-static int of_gpiochip_is_match(struct gpio_chip *chip, void *data)
+static int of_gpiochip_is_match(struct gpio_chip *chip, const void *data)
{
return chip->of_node == data;
}
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
index 1ff4e22..5f52690 100644
--- a/include/asm-generic/gpio.h
+++ b/include/asm-generic/gpio.h
@@ -142,9 +142,9 @@ extern int __must_check gpiochip_reserve(int start, int ngpio);
/* add/remove chips */
extern int gpiochip_add(struct gpio_chip *chip);
extern int __must_check gpiochip_remove(struct gpio_chip *chip);
-extern struct gpio_chip *gpiochip_find(void *data,
+extern struct gpio_chip *gpiochip_find(const void *data,
int (*match)(struct gpio_chip *chip,
- void *data));
+ const void *data));
/* Always use the library code for GPIO management calls,
WARNING: multiple messages have this Message-ID (diff)
From: grant.likely@secretlab.ca (Grant Likely)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/4] gpiolib: Add gpiochip_find_by_name() and gpio_find_by_chip_name()
Date: Fri, 02 Mar 2012 11:48:33 -0700 [thread overview]
Message-ID: <20120302184833.C296A3E1C63@localhost> (raw)
In-Reply-To: <20120302180848.GM18901@atomide.com>
On Fri, 2 Mar 2012 10:08:48 -0800, Tony Lindgren <tony@atomide.com> wrote:
> * Tony Lindgren <tony@atomide.com> [120302 08:31]:
> > * Grant Likely <grant.likely@secretlab.ca> [120302 01:00]:
> > > On Thu, 01 Mar 2012 10:55:24 -0800, Tony Lindgren <tony@atomide.com> wrote:
> > > > +
> > > > +/**
> > > > + * gpiochip_find_by_name() - iterator for locating a gpio_chip by name
> > > > + * @name: name of the gpio_chip
> > > > + *
> > > > + * Similar to bus_find_device_by_name. It returns a reference to the
> > > > + * first gpio_chip with matching name. It ignores NULL and empty names.
> > > > + * If you need to do something more complex, then use gpiochip_find.
> > > > + */
> > > > +struct gpio_chip *gpiochip_find_by_name(const char *name)
> > > > +{
> > > > + if (!name || !strcmp(name, ""))
> > > > + return NULL;
> > > > +
> > > > + return gpiochip_find((void *)name, match_name);
> > >
> > > Nasty cast. Can the signature for gpiochip_find be changed to accept
> > > a (const void *)?
> >
> > I think so, this too comes from the bus code.
>
> Looks like it can't be const as of_node_to_gpiochip uses it with
> a struct device_node * that for of_get_named_gpio_flags comes from
> of_parse_phandle_with_args.
Really? It sees to work fine here:
---
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index d773540..e633a2a 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1152,8 +1152,9 @@ EXPORT_SYMBOL_GPL(gpiochip_remove);
* non-zero, this function will return to the caller and not iterate over any
* more gpio_chips.
*/
-struct gpio_chip *gpiochip_find(void *data,
- int (*match)(struct gpio_chip *chip, void *data))
+struct gpio_chip *gpiochip_find(const void *data,
+ int (*match)(struct gpio_chip *chip,
+ const void *data))
{
struct gpio_chip *chip = NULL;
unsigned long flags;
diff --git a/drivers/of/gpio.c b/drivers/of/gpio.c
index e034b38..bba8121 100644
--- a/drivers/of/gpio.c
+++ b/drivers/of/gpio.c
@@ -229,7 +229,7 @@ void of_gpiochip_remove(struct gpio_chip *chip)
}
/* Private function for resolving node pointer to gpio_chip */
-static int of_gpiochip_is_match(struct gpio_chip *chip, void *data)
+static int of_gpiochip_is_match(struct gpio_chip *chip, const void *data)
{
return chip->of_node == data;
}
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
index 1ff4e22..5f52690 100644
--- a/include/asm-generic/gpio.h
+++ b/include/asm-generic/gpio.h
@@ -142,9 +142,9 @@ extern int __must_check gpiochip_reserve(int start, int ngpio);
/* add/remove chips */
extern int gpiochip_add(struct gpio_chip *chip);
extern int __must_check gpiochip_remove(struct gpio_chip *chip);
-extern struct gpio_chip *gpiochip_find(void *data,
+extern struct gpio_chip *gpiochip_find(const void *data,
int (*match)(struct gpio_chip *chip,
- void *data));
+ const void *data));
/* Always use the library code for GPIO management calls,
next prev parent reply other threads:[~2012-03-02 18:48 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-01 18:55 [PATCH 0/4] Start getting rid of pdata callbacks with gpio_find_by_chip_name() Tony Lindgren
2012-03-01 18:55 ` Tony Lindgren
2012-03-01 18:55 ` [PATCH 1/4] gpiolib: Add gpiochip_find_by_name() and gpio_find_by_chip_name() Tony Lindgren
2012-03-01 18:55 ` Tony Lindgren
2012-03-02 7:58 ` Grant Likely
2012-03-02 7:58 ` Grant Likely
2012-03-02 17:03 ` Tony Lindgren
2012-03-02 17:03 ` Tony Lindgren
2012-03-02 18:08 ` Tony Lindgren
2012-03-02 18:08 ` Tony Lindgren
2012-03-02 18:48 ` Grant Likely [this message]
2012-03-02 18:48 ` Grant Likely
2012-03-02 19:06 ` Tony Lindgren
2012-03-02 19:06 ` Tony Lindgren
2012-03-09 1:05 ` Grant Likely
2012-03-09 1:05 ` Grant Likely
2012-03-09 2:09 ` Tony Lindgren
2012-03-09 2:09 ` Tony Lindgren
2012-03-01 18:55 ` [PATCH 2/4] mmc: omap_hsmmc: Use gpio_find_by_chip_name() for omap_hsmmc_gpio_init() Tony Lindgren
2012-03-01 18:55 ` Tony Lindgren
2012-03-02 5:54 ` Rajendra Nayak
2012-03-02 5:54 ` Rajendra Nayak
2012-03-02 17:06 ` Tony Lindgren
2012-03-02 17:06 ` Tony Lindgren
2012-03-02 7:25 ` Rajendra Nayak
2012-03-02 7:25 ` Rajendra Nayak
2012-03-02 17:08 ` Tony Lindgren
2012-03-02 17:08 ` Tony Lindgren
2012-03-02 18:35 ` Tony Lindgren
2012-03-02 18:35 ` Tony Lindgren
2012-03-01 18:55 ` [PATCH 3/4] mmc: omap_hsmmc: Use GPIO offset for external GPIO chips Tony Lindgren
2012-03-01 18:55 ` Tony Lindgren
2012-03-02 6:02 ` Rajendra Nayak
2012-03-02 6:02 ` Rajendra Nayak
2012-03-02 17:16 ` Tony Lindgren
2012-03-02 17:16 ` Tony Lindgren
2012-03-01 18:55 ` [PATCH 4/4] mmc: omap_hsmmc: Simplify init for twl6030 MMC card detect Tony Lindgren
2012-03-01 18:55 ` Tony Lindgren
2012-03-02 6:10 ` Rajendra Nayak
2012-03-02 6:10 ` Rajendra Nayak
2012-03-02 17:22 ` Tony Lindgren
2012-03-02 17:22 ` Tony Lindgren
2012-03-05 9:16 ` Rajendra Nayak
2012-03-05 9:16 ` Rajendra Nayak
2012-03-05 10:25 ` T Krishnamoorthy, Balaji
2012-03-05 10:25 ` T Krishnamoorthy, Balaji
2012-03-07 15:36 ` T Krishnamoorthy, Balaji
2012-03-07 15:36 ` T Krishnamoorthy, Balaji
2012-03-07 15:36 ` T Krishnamoorthy, Balaji
2012-03-07 15:42 ` Chris Ball
2012-03-07 15:42 ` Chris Ball
2012-03-07 15:42 ` Chris Ball
2012-03-07 17:31 ` Tony Lindgren
2012-03-07 17:31 ` Tony Lindgren
2012-03-08 15:53 ` T Krishnamoorthy, Balaji
2012-03-08 15:53 ` T Krishnamoorthy, Balaji
2012-03-08 15:53 ` T Krishnamoorthy, Balaji
2012-03-02 10:25 ` Samuel Ortiz
2012-03-02 10:25 ` Samuel Ortiz
2012-03-02 9:06 ` [PATCH 0/4] Start getting rid of pdata callbacks with gpio_find_by_chip_name() Rajendra Nayak
2012-03-02 9:06 ` Rajendra Nayak
2012-03-02 17:30 ` Tony Lindgren
2012-03-02 17:30 ` Tony Lindgren
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=20120302184833.C296A3E1C63@localhost \
--to=grant.likely@secretlab.ca \
--cc=arnd@arndb.de \
--cc=linus.walleij@stericsson.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--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 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.