Re: [PATCH v3 0/3] input: pwm-beeper: add feature to set volume level

From: Frieder Schrempf
Date: Fri Feb 17 2017 - 05:01:59 EST


On 16.02.2017 22:44, David Lechner wrote:
On 02/16/2017 03:15 PM, Frieder Schrempf wrote:
Hello David,

On 20.01.2017 20:11, David Lechner wrote:
On 01/19/2017 03:37 PM, Dmitry Torokhov wrote:
On Thu, Jan 19, 2017 at 04:24:07PM +0100, Frieder Schrempf wrote:
Make the driver accept switching volume levels via sysfs.
This can be helpful if the beep/bell sound intensity needs
to be adapted to the environment of the device.

The number of volume levels available and their values can
be specified via device tree (similar to pwm-backlight).

The volume adjustment is done by changing the duty cycle of
the pwm signal.

I wonder how this all will mesh up with beepers that have dedicated
amplifiers (support is being added by David Lechner).

This will work very well with it. I fact, it is a feature I would like
to have but I was not sure about a good way to implement it. Please Cc:
me on future revisions of this series and I will be glad to test it.

I have just send v4.

One thing that would be nice would be for a more generic way to change
the volume from userspace. Having a sysfs attribute on the platform
device will work, but it requires very specific knowledge from any
userspace program that wants to control the volume. Would it be possible
to add an alsa mixer volume control or something like that?

An alsa mixer control for the pwm-beeper volume sounds nice, but
unfortunately I have no idea how one would implement this, or if this is
even possible.



I know it is possible because I have done it. ;-)

https://github.com/ev3dev/lego-linux-drivers/blob/master/evb/evb_sound.c

The driver in the link above does PCM playback using PWM. But, it also
included an input device similar to pwm-beeper and it includes an ALSA
volume control specifically for the beeper.

Aha, thanks. Doesn't look too complicated. I think I will play with this a bit, when I have time. So maybe the sysfs volume control can be replaced with a proper volume mixer control at some point.