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
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