All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Linus Walleij <linus.walleij@linaro.org>,
	Alexandre Courbot <gnurou@gmail.com>,
	Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org,
	Bartosz Golaszewski <brgl@bgdev.pl>
Subject: [PATCH 04/10] gpio: mockup: support irqmask and irqunmask
Date: Thu, 25 May 2017 10:33:41 +0200	[thread overview]
Message-ID: <1495701227-28809-5-git-send-email-brgl@bgdev.pl> (raw)
In-Reply-To: <1495701227-28809-1-git-send-email-brgl@bgdev.pl>

Even though this is a testing module, be nice and actually implement
these functions.

Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
---
 drivers/gpio/gpio-mockup.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/drivers/gpio/gpio-mockup.c b/drivers/gpio/gpio-mockup.c
index c17578e..ba8d62a 100644
--- a/drivers/gpio/gpio-mockup.c
+++ b/drivers/gpio/gpio-mockup.c
@@ -41,6 +41,7 @@ enum {
 struct gpio_mockup_line_status {
 	int dir;
 	bool value;
+	bool irq_enabled;
 };
 
 struct gpio_mockup_irq_context {
@@ -142,12 +143,21 @@ static int gpio_mockup_to_irq(struct gpio_chip *chip, unsigned int offset)
 	return chip->irq_base + offset;
 }
 
-/*
- * While we should generally support irqmask and irqunmask, this driver is
- * for testing purposes only so we don't care.
- */
-static void gpio_mockup_irqmask(struct irq_data *d) { }
-static void gpio_mockup_irqunmask(struct irq_data *d) { }
+static void gpio_mockup_irqmask(struct irq_data *data)
+{
+	struct gpio_chip *gc = irq_data_get_irq_chip_data(data);
+	struct gpio_mockup_chip *chip = gpiochip_get_data(gc);
+
+	chip->lines[data->irq - gc->irq_base].irq_enabled = false;
+}
+
+static void gpio_mockup_irqunmask(struct irq_data *data)
+{
+	struct gpio_chip *gc = irq_data_get_irq_chip_data(data);
+	struct gpio_mockup_chip *chip = gpiochip_get_data(gc);
+
+	chip->lines[data->irq - gc->irq_base].irq_enabled = true;
+}
 
 static struct irq_chip gpio_mockup_irqchip = {
 	.name		= GPIO_MOCKUP_NAME,
@@ -178,6 +188,7 @@ static int gpio_mockup_irqchip_setup(struct device *dev,
 
 	for (i = 0; i < gc->ngpio; i++) {
 		irq_set_chip(irq_base + i, gc->irqchip);
+		irq_set_chip_data(irq_base + i, gc);
 		irq_set_handler(irq_base + i, &handle_simple_irq);
 		irq_modify_status(irq_base + i,
 				  IRQ_NOREQUEST | IRQ_NOAUTOEN, IRQ_NOPROBE);
@@ -206,6 +217,9 @@ static ssize_t gpio_mockup_event_write(struct file *file,
 	chip = priv->chip;
 	gc = &chip->gc;
 
+	if (!chip->lines[priv->offset].irq_enabled)
+		return size;
+
 	if (copy_from_user(&buf, usr_buf, 1))
 		return -EFAULT;
 
-- 
2.9.3


  parent reply	other threads:[~2017-05-25  8:34 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-25  8:33 [PATCH 00/10] gpio: mockup: updates for 4.13 Bartosz Golaszewski
2017-05-25  8:33 ` [PATCH 01/10] gpio: mockup: fix direction values Bartosz Golaszewski
2017-05-27 16:43   ` Andy Shevchenko
2017-05-29 11:27   ` Linus Walleij
2017-05-25  8:33 ` [PATCH 02/10] gpio: mockup: add prefixes to the direction enum Bartosz Golaszewski
2017-05-29 11:28   ` Linus Walleij
2017-05-25  8:33 ` [PATCH 03/10] gpio: mockup: be quiet unless something goes wrong Bartosz Golaszewski
2017-05-29 11:29   ` Linus Walleij
2017-05-25  8:33 ` Bartosz Golaszewski [this message]
2017-05-29 11:30   ` [PATCH 04/10] gpio: mockup: support irqmask and irqunmask Linus Walleij
2017-05-25  8:33 ` [PATCH 05/10] gpio: mockup: improve the debugfs input sanitization Bartosz Golaszewski
2017-05-27 16:45   ` Andy Shevchenko
2017-05-27 16:47     ` Andy Shevchenko
2017-05-29  6:57       ` Bartosz Golaszewski
2017-05-29 11:32   ` Linus Walleij
2017-05-25  8:33 ` [PATCH 06/10] gpio: mockup: refuse to accept an odd number of GPIO ranges Bartosz Golaszewski
2017-05-27 17:29   ` Andy Shevchenko
2017-05-27 17:30     ` Andy Shevchenko
2017-05-25  8:33 ` [PATCH 07/10] gpio: mockup: improve readability Bartosz Golaszewski
2017-05-25  8:33 ` [PATCH 08/10] gpio: mockup: don't return magic numbers from probe() Bartosz Golaszewski
2017-05-25  8:33 ` [PATCH 09/10] gpio: mockup: improve the error message Bartosz Golaszewski
2017-05-25  8:33 ` [PATCH 10/10] gpio: mockup: add myself as author Bartosz Golaszewski

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=1495701227-28809-5-git-send-email-brgl@bgdev.pl \
    --to=brgl@bgdev.pl \
    --cc=bamvor.zhangjian@linaro.org \
    --cc=gnurou@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@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 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.