All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Stephen Boyd <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, hpa@zytor.com, mingo@kernel.org,
	dmitry.torokhov@gmail.com, tglx@linutronix.de,
	sboyd@codeaurora.org
Subject: [tip:irq/core] genirq: Add devm_request_any_context_irq()
Date: Sun, 9 Feb 2014 06:30:29 -0800	[thread overview]
Message-ID: <tip-0668d3065128d39449c097e62dbdb5707820137d@git.kernel.org> (raw)
In-Reply-To: <1388709460-19222-3-git-send-email-sboyd@codeaurora.org>

Commit-ID:  0668d3065128d39449c097e62dbdb5707820137d
Gitweb:     http://git.kernel.org/tip/0668d3065128d39449c097e62dbdb5707820137d
Author:     Stephen Boyd <sboyd@codeaurora.org>
AuthorDate: Thu, 2 Jan 2014 16:37:32 -0800
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Sun, 9 Feb 2014 15:27:21 +0100

genirq: Add devm_request_any_context_irq()

Some drivers use request_any_context_irq() but there isn't a
devm_* function for it. Add one so that these drivers don't need
to explicitly free the irq on driver detach.

Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Cc: linux-arm-kernel@lists.infradead.org
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Link: http://lkml.kernel.org/r/1388709460-19222-3-git-send-email-sboyd@codeaurora.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 include/linux/interrupt.h |  5 +++++
 kernel/irq/devres.c       | 45 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+)

diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 0053add..a2678d3 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -158,6 +158,11 @@ devm_request_irq(struct device *dev, unsigned int irq, irq_handler_t handler,
 					 devname, dev_id);
 }
 
+extern int __must_check
+devm_request_any_context_irq(struct device *dev, unsigned int irq,
+		 irq_handler_t handler, unsigned long irqflags,
+		 const char *devname, void *dev_id);
+
 extern void devm_free_irq(struct device *dev, unsigned int irq, void *dev_id);
 
 /*
diff --git a/kernel/irq/devres.c b/kernel/irq/devres.c
index bd8e788..1ef0606 100644
--- a/kernel/irq/devres.c
+++ b/kernel/irq/devres.c
@@ -73,6 +73,51 @@ int devm_request_threaded_irq(struct device *dev, unsigned int irq,
 EXPORT_SYMBOL(devm_request_threaded_irq);
 
 /**
+ *	devm_request_any_context_irq - allocate an interrupt line for a managed device
+ *	@dev: device to request interrupt for
+ *	@irq: Interrupt line to allocate
+ *	@handler: Function to be called when the IRQ occurs
+ *	@thread_fn: function to be called in a threaded interrupt context. NULL
+ *		    for devices which handle everything in @handler
+ *	@irqflags: Interrupt type flags
+ *	@devname: An ascii name for the claiming device
+ *	@dev_id: A cookie passed back to the handler function
+ *
+ *	Except for the extra @dev argument, this function takes the
+ *	same arguments and performs the same function as
+ *	request_any_context_irq().  IRQs requested with this function will be
+ *	automatically freed on driver detach.
+ *
+ *	If an IRQ allocated with this function needs to be freed
+ *	separately, devm_free_irq() must be used.
+ */
+int devm_request_any_context_irq(struct device *dev, unsigned int irq,
+			      irq_handler_t handler, unsigned long irqflags,
+			      const char *devname, void *dev_id)
+{
+	struct irq_devres *dr;
+	int rc;
+
+	dr = devres_alloc(devm_irq_release, sizeof(struct irq_devres),
+			  GFP_KERNEL);
+	if (!dr)
+		return -ENOMEM;
+
+	rc = request_any_context_irq(irq, handler, irqflags, devname, dev_id);
+	if (rc) {
+		devres_free(dr);
+		return rc;
+	}
+
+	dr->irq = irq;
+	dr->dev_id = dev_id;
+	devres_add(dev, dr);
+
+	return 0;
+}
+EXPORT_SYMBOL(devm_request_any_context_irq);
+
+/**
  *	devm_free_irq - free an interrupt
  *	@dev: device to free interrupt for
  *	@irq: Interrupt line to free

  parent reply	other threads:[~2014-02-09 14:30 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-03  0:37 [PATCH v2 00/10] Use regmap+devm+DT in pm8xxx input drivers Stephen Boyd
2014-01-03  0:37 ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 01/10] Input: pmic8xxx-pwrkey - switch to using managed resources Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 02/10] genirq: Add devm_request_any_context_irq() Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-06 22:24   ` Stephen Boyd
2014-01-06 22:24     ` Stephen Boyd
2014-01-14 20:47     ` Stephen Boyd
2014-01-14 20:47       ` Stephen Boyd
2014-02-07 21:08       ` Stephen Boyd
2014-02-07 21:08         ` Stephen Boyd
2014-02-09 14:30   ` tip-bot for Stephen Boyd [this message]
2014-02-11  6:46     ` [tip:irq/core] " Stephen Boyd
2014-02-11  7:19       ` Ingo Molnar
2014-02-11 14:32       ` Thomas Gleixner
2014-02-11 16:39         ` Dmitry Torokhov
2014-02-18 22:11           ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 03/10] Input: pmic8xxx-keypad - Switch to using managed resources Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 04/10] Input: pmic8xxx-keypad - Migrate to regmap APIs Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 05/10] Input: pmic8xxx-pwrkey - Migrate to DT Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 06/10] Input: pm8xxx-vibrator - Add DT match table Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  1:17   ` Dmitry Torokhov
2014-01-03  1:17     ` Dmitry Torokhov
2014-01-03  1:17     ` Dmitry Torokhov
2014-01-03  1:27     ` Stephen Boyd
2014-01-03  1:27       ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 07/10] Input: pmic8xxx-keypad - Migrate to DT Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 08/10] devicetree: bindings: Document PM8921/8058 keypads Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 09/10] devicetree: bindings: Document PM8921/8058 power keys Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37 ` [PATCH v2 10/10] devicetree: bindings: Document PM8921/8058 vibrators Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd
2014-01-03  0:37   ` Stephen Boyd

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=tip-0668d3065128d39449c097e62dbdb5707820137d@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=sboyd@codeaurora.org \
    --cc=tglx@linutronix.de \
    /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.