linux-sh.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Simon Horman <horms@verge.net.au>
To: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Cc: "linus.walleij@linaro.org" <linus.walleij@linaro.org>,
	Linux-SH <linux-sh@vger.kernel.org>,
	ENGELMAYER Christian <Christian.Engelmayer@frequentis.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] gpio: pcf857x: use client->irq for gpio_to_irq()
Date: Fri, 07 Dec 2012 00:26:39 +0000	[thread overview]
Message-ID: <20121207002630.GG18360@verge.net.au> (raw)
In-Reply-To: <87lidb7dhb.wl%kuninori.morimoto.gx@renesas.com>

On Thu, Dec 06, 2012 at 01:10:28AM -0800, Kuninori Morimoto wrote:
> 6e20a0a429bd4dc07d6de16d9c247270e04e4aa0
> (gpio: pcf857x: enable gpio_to_irq() support)
> added gpio_to_irq() support on pcf857x driver,
> but it used pdata->irq.
> This patch modifies driver to use client->irq instead of it.
> It modifies kzm9g board platform settings,
> and device probe information too.
> This patch is tested on kzm9g board
> 
> Reported-by: ENGELMAYER Christian Christian.Engelmayer@frequentis.com
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> >> Simon
> 
> This patch modify kzm9g board settings.
> Please give your acked-by on this patch

Thanks Morimoto-san,

This seems reasonable to me and a quick boot check doesn't show up
any breakage.

Acked-by: Simon Horman <horms+renesas@verge.net.au>

> 
>  arch/arm/mach-shmobile/board-kzm9g.c |    2 +-
>  drivers/gpio/gpio-pcf857x.c          |   29 +++++++++++------------------
>  include/linux/i2c/pcf857x.h          |    3 ---
>  3 files changed, 12 insertions(+), 22 deletions(-)
> 
> diff --git a/arch/arm/mach-shmobile/board-kzm9g.c b/arch/arm/mach-shmobile/board-kzm9g.c
> index f63f2ee..c02448d 100644
> --- a/arch/arm/mach-shmobile/board-kzm9g.c
> +++ b/arch/arm/mach-shmobile/board-kzm9g.c
> @@ -552,7 +552,6 @@ static struct platform_device fsi_ak4648_device = {
>  /* I2C */
>  static struct pcf857x_platform_data pcf8575_pdata = {
>  	.gpio_base	= GPIO_PCF8575_BASE,
> -	.irq		= intcs_evt2irq(0x3260), /* IRQ19 */
>  };
>  
>  static struct i2c_board_info i2c0_devices[] = {
> @@ -582,6 +581,7 @@ static struct i2c_board_info i2c1_devices[] = {
>  static struct i2c_board_info i2c3_devices[] = {
>  	{
>  		I2C_BOARD_INFO("pcf8575", 0x20),
> +		.irq		= intcs_evt2irq(0x3260), /* IRQ19 */
>  		.platform_data = &pcf8575_pdata,
>  	},
>  };
> diff --git a/drivers/gpio/gpio-pcf857x.c b/drivers/gpio/gpio-pcf857x.c
> index 16af35c..a19b745 100644
> --- a/drivers/gpio/gpio-pcf857x.c
> +++ b/drivers/gpio/gpio-pcf857x.c
> @@ -223,11 +223,11 @@ static void pcf857x_irq_domain_cleanup(struct pcf857x *gpio)
>  
>  static int pcf857x_irq_domain_init(struct pcf857x *gpio,
>  				   struct pcf857x_platform_data *pdata,
> -				   struct device *dev)
> +				   struct i2c_client *client)
>  {
>  	int status;
>  
> -	gpio->irq_domain = irq_domain_add_linear(dev->of_node,
> +	gpio->irq_domain = irq_domain_add_linear(client->dev.of_node,
>  						 gpio->chip.ngpio,
>  						 &pcf857x_irq_domain_ops,
>  						 NULL);
> @@ -235,15 +235,15 @@ static int pcf857x_irq_domain_init(struct pcf857x *gpio,
>  		goto fail;
>  
>  	/* enable real irq */
> -	status = request_irq(pdata->irq, pcf857x_irq_demux, 0,
> -			     dev_name(dev), gpio);
> +	status = request_irq(client->irq, pcf857x_irq_demux, 0,
> +			     dev_name(&client->dev), gpio);
>  	if (status)
>  		goto fail;
>  
>  	/* enable gpio_to_irq() */
>  	INIT_WORK(&gpio->work, pcf857x_irq_demux_work);
>  	gpio->chip.to_irq	= pcf857x_to_irq;
> -	gpio->irq		= pdata->irq;
> +	gpio->irq		= client->irq;
>  
>  	return 0;
>  
> @@ -285,8 +285,8 @@ static int pcf857x_probe(struct i2c_client *client,
>  	gpio->chip.ngpio		= id->driver_data;
>  
>  	/* enable gpio_to_irq() if platform has settings */
> -	if (pdata && pdata->irq) {
> -		status = pcf857x_irq_domain_init(gpio, pdata, &client->dev);
> +	if (pdata && client->irq) {
> +		status = pcf857x_irq_domain_init(gpio, pdata, client);
>  		if (status < 0) {
>  			dev_err(&client->dev, "irq_domain init failed\n");
>  			goto fail;
> @@ -368,15 +368,6 @@ static int pcf857x_probe(struct i2c_client *client,
>  	if (status < 0)
>  		goto fail;
>  
> -	/* NOTE: these chips can issue "some pin-changed" IRQs, which we
> -	 * don't yet even try to use.  Among other issues, the relevant
> -	 * genirq state isn't available to modular drivers; and most irq
> -	 * methods can't be called from sleeping contexts.
> -	 */
> -
> -	dev_info(&client->dev, "%s\n",
> -			client->irq ? " (irq ignored)" : "");
> -
>  	/* Let platform code set up the GPIOs and their users.
>  	 * Now is the first time anyone could use them.
>  	 */
> @@ -388,13 +379,15 @@ static int pcf857x_probe(struct i2c_client *client,
>  			dev_warn(&client->dev, "setup --> %d\n", status);
>  	}
>  
> +	dev_info(&client->dev, "probed\n");
> +
>  	return 0;
>  
>  fail:
>  	dev_dbg(&client->dev, "probe error %d for '%s'\n",
>  			status, client->name);
>  
> -	if (pdata && pdata->irq)
> +	if (pdata && client->irq)
>  		pcf857x_irq_domain_cleanup(gpio);
>  
>  	kfree(gpio);
> @@ -418,7 +411,7 @@ static int pcf857x_remove(struct i2c_client *client)
>  		}
>  	}
>  
> -	if (pdata && pdata->irq)
> +	if (pdata && client->irq)
>  		pcf857x_irq_domain_cleanup(gpio);
>  
>  	status = gpiochip_remove(&gpio->chip);
> diff --git a/include/linux/i2c/pcf857x.h b/include/linux/i2c/pcf857x.h
> index 781e6bd..0767a2a 100644
> --- a/include/linux/i2c/pcf857x.h
> +++ b/include/linux/i2c/pcf857x.h
> @@ -10,7 +10,6 @@
>   * @setup: optional callback issued once the GPIOs are valid
>   * @teardown: optional callback issued before the GPIOs are invalidated
>   * @context: optional parameter passed to setup() and teardown()
> - * @irq: optional interrupt number
>   *
>   * In addition to the I2C_BOARD_INFO() state appropriate to each chip,
>   * the i2c_board_info used with the pcf875x driver must provide its
> @@ -40,8 +39,6 @@ struct pcf857x_platform_data {
>  					int gpio, unsigned ngpio,
>  					void *context);
>  	void		*context;
> -
> -	int		irq;
>  };
>  
>  #endif /* __LINUX_PCF857X_H */
> -- 
> 1.7.9.5
> 

  reply	other threads:[~2012-12-07  0:26 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20121203222248.298b3671@frequentis.com>
     [not found] ` <87y5hd80ep.wl%kuninori.morimoto.gx@renesas.com>
     [not found]   ` <EA116A090B102B4EBF532A9EECFA1EC5795252C6@vie196nt>
     [not found]     ` <87obi86kpp.wl%kuninori.morimoto.gx@renesas.com>
     [not found]       ` <EA116A090B102B4EBF532A9EECFA1EC579525758@vie196nt>
2012-12-06  9:10         ` [PATCH] gpio: pcf857x: use client->irq for gpio_to_irq() Kuninori Morimoto
2012-12-07  0:26           ` Simon Horman [this message]
2012-12-07  8:16           ` Linus Walleij

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=20121207002630.GG18360@verge.net.au \
    --to=horms@verge.net.au \
    --cc=Christian.Engelmayer@frequentis.com \
    --cc=kuninori.morimoto.gx@renesas.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sh@vger.kernel.org \
    /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).