Thread (17 messages) 17 messages, 3 authors, 2017-01-20

Re: [PATCH v2 6/7] Input: pwm-beeper - add optional amplifier regulator

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2017-01-20 17:47:09
Also in: lkml

On Fri, Jan 20, 2017 at 11:19:16AM +0100, Thierry Reding wrote:
On Thu, Jan 19, 2017 at 02:40:56PM -0800, Dmitry Torokhov wrote:
[...]
quoted
diff --git a/drivers/input/misc/pwm-beeper.c b/drivers/input/misc/pwm-beeper.c
index 9964c46468d3..7b213e0ab06c 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/regulator/consumer.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/of.h>
@@ -25,30 +26,59 @@
 struct pwm_beeper {
 	struct input_dev *input;
 	struct pwm_device *pwm;
+	struct regulator *amplifier;
 	struct work_struct work;
 	unsigned long period;
 	bool suspended;
+	bool amplifier_on;
Why do you need to track this? I thought regulator_enable() and
regulator_disable() were already reference counted?
That us exactly the issue: without the flag userspace application
sending:

EV_SND/SND_TONE/100
EV_SND/SND_TONE/200
EV_SND/SND_TONE/300
EV_SND/SND_TONE/200
EV_SND/SND_TONE/100
EV_SND/SND_TONE/0

will result in enable count of 4 (and not 0) and regulator will stay on
forever.

Thanks.

-- 
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help