From: Sebastian Reichel <sre@kernel.org>
To: Sebastian Reichel <sre@kernel.org>,
Tony Lindgren <tony@atomide.com>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Lee Jones <lee.jones@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
linux-input@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: [PATCHv2 1/2] mfd: cpcap: implement irq sense helper
Date: Thu, 2 Mar 2017 01:22:41 +0100 [thread overview]
Message-ID: <20170302002242.21819-1-sre@kernel.org> (raw)
In-Reply-To: <20170224085909.30559-1-sre@kernel.org>
CPCAP can sense if IRQ is currently set or not. This
functionality is required for a few subdevices, such
as the power button and usb phy modules.
Signed-off-by: Sebastian Reichel <sre@kernel.org>
---
Changes since PATCHv1:
- Newly introduced patch
---
drivers/mfd/motorola-cpcap.c | 25 +++++++++++++++++++++++++
include/linux/mfd/motorola-cpcap.h | 2 ++
2 files changed, 27 insertions(+)
diff --git a/drivers/mfd/motorola-cpcap.c b/drivers/mfd/motorola-cpcap.c
index 6aeada7d7ce5..b2a53750d579 100644
--- a/drivers/mfd/motorola-cpcap.c
+++ b/drivers/mfd/motorola-cpcap.c
@@ -32,6 +32,31 @@ struct cpcap_ddata {
struct regmap *regmap;
};
+static int cpcap_sense_irq(struct regmap *regmap, int irq)
+{
+ int reg = CPCAP_REG_INTS1 + (irq / 16) * 4;
+ int mask = 1 << (irq % 16);
+ int err, val;
+
+ if (irq < 0 || irq > 64)
+ return -EINVAL;
+
+ err = regmap_read(regmap, reg, &val);
+ if (err)
+ return err;
+
+ return !!(val & mask);
+}
+
+int cpcap_sense_virq(struct regmap *regmap, int virq)
+{
+ struct regmap_irq_chip_data *d = irq_get_chip_data(virq);
+ int base = regmap_irq_chip_get_base(d);
+
+ return cpcap_sense_irq(regmap, virq - base);
+}
+EXPORT_SYMBOL_GPL(cpcap_sense_irq);
+
static int cpcap_check_revision(struct cpcap_ddata *cpcap)
{
u16 vendor, rev;
diff --git a/include/linux/mfd/motorola-cpcap.h b/include/linux/mfd/motorola-cpcap.h
index b4031c2b2214..7629e0d24d26 100644
--- a/include/linux/mfd/motorola-cpcap.h
+++ b/include/linux/mfd/motorola-cpcap.h
@@ -290,3 +290,5 @@ static inline int cpcap_get_vendor(struct device *dev,
return 0;
}
+
+int cpcap_sense_virq(struct regmap *regmap, int virq);
--
2.11.0
next prev parent reply other threads:[~2017-03-02 0:23 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-24 8:59 [PATCH] input: cpcap-pwrbutton: new driver Sebastian Reichel
2017-02-24 8:59 ` Sebastian Reichel
2017-02-25 18:58 ` Dmitry Torokhov
2017-02-25 19:21 ` Tony Lindgren
2017-02-28 2:32 ` Tony Lindgren
2017-02-28 2:32 ` Tony Lindgren
2017-02-28 0:18 ` Rob Herring
2017-03-02 0:22 ` Sebastian Reichel [this message]
2017-03-02 0:22 ` [PATCHv2 2/2] " Sebastian Reichel
2017-03-02 0:22 ` Sebastian Reichel
2017-03-02 1:20 ` Dmitry Torokhov
2017-03-02 18:01 ` Tony Lindgren
2017-03-04 16:22 ` kbuild test robot
2017-03-04 16:22 ` kbuild test robot
2017-03-02 15:17 ` [PATCHv2 1/2] mfd: cpcap: implement irq sense helper Tony Lindgren
2017-03-02 16:09 ` 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=20170302002242.21819-1-sre@kernel.org \
--to=sre@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.torokhov@gmail.com \
--cc=lee.jones@linaro.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--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.