Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1552482 > unrolled thread

[PATCH 0/3] Input: add optional enable gpio to pwm-beeper

Started byDavid Lechner <david@lechnology.com>
First post2017-01-06 03:50 +0100
Last post2017-01-06 18:50 +0100
Articles 4 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/3] Input: add optional enable gpio to pwm-beeper David Lechner <david@lechnology.com> - 2017-01-06 03:50 +0100
    [PATCH 3/3] Input: pwm-beeper: add optional enable gpio David Lechner <david@lechnology.com> - 2017-01-06 03:50 +0100
      Re: [PATCH 3/3] Input: pwm-beeper: add optional enable gpio Andy Shevchenko <andy.shevchenko@gmail.com> - 2017-01-06 18:30 +0100
        Re: [PATCH 3/3] Input: pwm-beeper: add optional enable gpio David Lechner <david@lechnology.com> - 2017-01-06 18:50 +0100

#1552482 — [PATCH 0/3] Input: add optional enable gpio to pwm-beeper

FromDavid Lechner <david@lechnology.com>
Date2017-01-06 03:50 +0100
Subject[PATCH 0/3] Input: add optional enable gpio to pwm-beeper
Message-ID<sWsLn-3qX-3@gated-at.bofh.it>
This series adds an optional enable gpio to the pwm-beeper driver. This is for
cases when the beeper needs to be "enabled", for example, if there is an
amplifier that drives the speaker that is not always on.

David Lechner (3):
  Input: pwm-beeper: suppress error message on probe defer
  dt-bindings: Input: Add enable-gpios to pwm-beeper
  Input: pwm-beeper: add optional enable gpio

 .../devicetree/bindings/input/pwm-beeper.txt       | 11 +++++++++
 drivers/input/misc/pwm-beeper.c                    | 27 ++++++++++++++++++----
 2 files changed, 34 insertions(+), 4 deletions(-)

-- 
2.7.4

[toc] | [next] | [standalone]


#1552486 — [PATCH 3/3] Input: pwm-beeper: add optional enable gpio

FromDavid Lechner <david@lechnology.com>
Date2017-01-06 03:50 +0100
Subject[PATCH 3/3] Input: pwm-beeper: add optional enable gpio
Message-ID<sWsLn-3qX-27@gated-at.bofh.it>
In reply to#1552482
This adds an optional enable gpio to the pwm-beeper device. This gpio is
used in cases where the beeper needs to be switched on before using it. For
example, there may be an amplifier that is not always powered on.

Tested on LEGO MINDSTORMS EV3, which has a speaker connected to PWM through
an amplifier. The amplifier has an enable pin that is connected to a gpio.

Signed-off-by: David Lechner <david@lechnology.com>
---
 drivers/input/misc/pwm-beeper.c | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/drivers/input/misc/pwm-beeper.c b/drivers/input/misc/pwm-beeper.c
index e76b710..4379ceb 100644
--- a/drivers/input/misc/pwm-beeper.c
+++ b/drivers/input/misc/pwm-beeper.c
@@ -14,6 +14,7 @@
  */
 
 #include <linux/input.h>
+#include <linux/gpio/consumer.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/of.h>
@@ -25,6 +26,7 @@
 struct pwm_beeper {
 	struct input_dev *input;
 	struct pwm_device *pwm;
+	struct gpio_desc *enable_gpio;
 	struct work_struct work;
 	unsigned long period;
 };
@@ -38,8 +40,13 @@ static void __pwm_beeper_set(struct pwm_beeper *beeper)
 	if (period) {
 		pwm_config(beeper->pwm, period / 2, period);
 		pwm_enable(beeper->pwm);
-	} else
+		if (beeper->enable_gpio)
+			gpiod_direction_output(beeper->enable_gpio, 1);
+	} else {
+		if (beeper->enable_gpio)
+			gpiod_direction_output(beeper->enable_gpio, 0);
 		pwm_disable(beeper->pwm);
+	}
 }
 
 static void pwm_beeper_work(struct work_struct *work)
@@ -82,6 +89,8 @@ static void pwm_beeper_stop(struct pwm_beeper *beeper)
 {
 	cancel_work_sync(&beeper->work);
 
+	if (beeper->enable_gpio)
+		gpiod_direction_output(beeper->enable_gpio, 0);
 	if (beeper->period)
 		pwm_disable(beeper->pwm);
 }
@@ -116,6 +125,15 @@ static int pwm_beeper_probe(struct platform_device *pdev)
 		goto err_free;
 	}
 
+	beeper->enable_gpio = devm_gpiod_get_optional(&pdev->dev, "enable",
+						      GPIOD_OUT_LOW);
+	error = PTR_ERR_OR_ZERO(beeper->enable_gpio);
+	if (error) {
+		if (error != -EPROBE_DEFER)
+			dev_err(&pdev->dev, "Failed to get enable gpio\n");
+		goto err_pwm_free;
+	}
+
 	/*
 	 * FIXME: pwm_apply_args() should be removed when switching to
 	 * the atomic PWM API.
-- 
2.7.4

[toc] | [prev] | [next] | [standalone]


#1552981 — Re: [PATCH 3/3] Input: pwm-beeper: add optional enable gpio

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2017-01-06 18:30 +0100
SubjectRe: [PATCH 3/3] Input: pwm-beeper: add optional enable gpio
Message-ID<sWGuZ-569-1@gated-at.bofh.it>
In reply to#1552486
On Fri, Jan 6, 2017 at 4:43 AM, David Lechner <david@lechnology.com> wrote:
> This adds an optional enable gpio to the pwm-beeper device. This gpio is
> used in cases where the beeper needs to be switched on before using it.

Isn't it a property of pin muxing?

> For
> example, there may be an amplifier that is not always powered on.

This looks like GPIO based fixed voltage regulator.

>
> Tested on LEGO MINDSTORMS EV3, which has a speaker connected to PWM through
> an amplifier. The amplifier has an enable pin that is connected to a gpio.

-- 
With Best Regards,
Andy Shevchenko

[toc] | [prev] | [next] | [standalone]


#1552994 — Re: [PATCH 3/3] Input: pwm-beeper: add optional enable gpio

FromDavid Lechner <david@lechnology.com>
Date2017-01-06 18:50 +0100
SubjectRe: [PATCH 3/3] Input: pwm-beeper: add optional enable gpio
Message-ID<sWGOl-5dK-19@gated-at.bofh.it>
In reply to#1552981
On 01/06/2017 11:28 AM, Andy Shevchenko wrote:
> On Fri, Jan 6, 2017 at 4:43 AM, David Lechner <david@lechnology.com> wrote:
>> This adds an optional enable gpio to the pwm-beeper device. This gpio is
>> used in cases where the beeper needs to be switched on before using it.
>
> Isn't it a property of pin muxing?

You may want to turn if off when not making a sound to save power.


>
>> For
>> example, there may be an amplifier that is not always powered on.
>
> This looks like GPIO based fixed voltage regulator.


Yes, I think a regulator could work here just as well.

>
>>
>> Tested on LEGO MINDSTORMS EV3, which has a speaker connected to PWM through
>> an amplifier. The amplifier has an enable pin that is connected to a gpio.
>

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web