[alsa-devel] [PATCH] ALSA: jack: create jack kcontrols for every jack input device
Takashi Iwai
tiwai at suse.de
Thu Mar 19 13:01:30 CET 2015
At Thu, 19 Mar 2015 11:51:23 +0100,
Takashi Iwai wrote:
>
> At Thu, 19 Mar 2015 16:40:18 +0800,
> Jie Yang wrote:
> >
> > From: Liam Girdwood <liam.r.girdwood at linux.intel.com>
> >
> > Currently the ALSA jack core registers only input devices for each jack
> > registered. These jack input devices are not readable by userspace devices
> > that run as non root.
> >
> > This patch adds support for additionally registering jack kcontrol devices
> > for every input jack registered. This allows non root userspace to read
> > jack status.
> >
> > Signed-off-by: Liam Girdwood <liam.r.girdwood at linux.intel.com>
> > Modified-by: Jie Yang <yang.jie at intel.com>
> > Signed-off-by: Jie Yang <yang.jie at intel.com>
> > Reveiwed-by: Mark Brown <broonie at kernel.org>
> > ---
> > include/sound/control.h | 2 ++
> > include/sound/jack.h | 2 ++
> > sound/core/jack.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++--
> > 3 files changed, 91 insertions(+), 2 deletions(-)
> > mode change 100644 => 100755 sound/core/jack.c
> >
> > diff --git a/include/sound/control.h b/include/sound/control.h
> > index 75f3054..023b70a 100644
> > --- a/include/sound/control.h
> > +++ b/include/sound/control.h
> > @@ -66,6 +66,7 @@ struct snd_kcontrol_volatile {
> >
> > struct snd_kcontrol {
> > struct list_head list; /* list of controls */
> > + struct list_head jack_list; /* list of controls belong to the same jack*/
> > struct snd_ctl_elem_id id;
> > unsigned int count; /* count of same elements */
> > snd_kcontrol_info_t *info;
> > @@ -75,6 +76,7 @@ struct snd_kcontrol {
> > snd_kcontrol_tlv_rw_t *c;
> > const unsigned int *p;
> > } tlv;
> > + unsigned int jack_bit_idx; /*the corresponding jack type bit index */
> > unsigned long private_value;
> > void *private_data;
> > void (*private_free)(struct snd_kcontrol *kcontrol);
>
> NAK for these additions. There must be a way to implement without
> such *generic* additions in kcontrol.
IOW, you can allocate its own record in kctl->private_data. Currently
hda_jack.c is the only user of snd_kctl_jack_*(). So, if we remove
these callers, we can assign kctl->private_data for jack's own
purpose. There you'll allocate own record for keeping tracking the
list and bitmap, etc.
Takashi
More information about the Alsa-devel
mailing list