From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH v8 2/7] ALSA: Jack: refactoring snd_kctl_jack_new to support embedded kctl Date: Wed, 22 Apr 2015 13:32:54 +0200 Message-ID: References: <1429682633-10765-1-git-send-email-yang.jie@intel.com> <1429682633-10765-3-git-send-email-yang.jie@intel.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id E1BA8260581 for ; Wed, 22 Apr 2015 13:32:55 +0200 (CEST) In-Reply-To: <1429682633-10765-3-git-send-email-yang.jie@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Jie Yang Cc: alsa-devel@alsa-project.org, broonie@kernel.org, tanu.kaskinen@linux.intel.com, liam.r.girdwood@intel.com List-Id: alsa-devel@alsa-project.org At Wed, 22 Apr 2015 14:03:48 +0800, Jie Yang wrote: > > Move available index get part into snd_kctl_jack_new(), also add kctl > name regenerating func to remove redundant " Jack" which is passed in > wrongly in some cases. The subject doesn't match with this description well. > Signed-off-by: Jie Yang > --- > include/sound/control.h | 2 +- > sound/core/ctljack.c | 39 +++++++++++++++++++++++++++++++++++---- > sound/core/jack.c | 2 +- > sound/pci/hda/hda_jack.c | 2 +- > 4 files changed, 38 insertions(+), 7 deletions(-) > > diff --git a/include/sound/control.h b/include/sound/control.h > index 75f3054..58751a0 100644 > --- a/include/sound/control.h > +++ b/include/sound/control.h > @@ -252,7 +252,7 @@ void snd_ctl_sync_vmaster(struct snd_kcontrol *kctl, bool hook_only); > * Helper functions for jack-detection controls > */ > struct snd_kcontrol * > -snd_kctl_jack_new(const char *name, int idx, void *private_data); > +snd_kctl_jack_new(const char *name, struct snd_card *card); > void snd_kctl_jack_report(struct snd_card *card, > struct snd_kcontrol *kctl, bool status); > > diff --git a/sound/core/ctljack.c b/sound/core/ctljack.c > index e4b38fb..b631996 100644 > --- a/sound/core/ctljack.c > +++ b/sound/core/ctljack.c > @@ -31,15 +31,46 @@ static struct snd_kcontrol_new jack_detect_kctl = { > .get = jack_detect_kctl_get, > }; > > +static int get_available_index(struct snd_card *card, const char *name) > +{ > + struct snd_ctl_elem_id sid; > + > + memset(&sid, 0, sizeof(sid)); > + > + sid.index = 0; > + sid.iface = SNDRV_CTL_ELEM_IFACE_CARD; > + strlcpy(sid.name, name, sizeof(sid.name)); > + > + while (snd_ctl_find_id(card, &sid)) > + sid.index++; > + > + return sid.index; > +} > + > +static void jack_kctl_name_gen(char *name, const char *src_name, int size) > +{ > + size_t count = strlen(src_name); > + bool need_cat = true; > + > + /* remove redundant " Jack" from src_name */ > + if (count >= 5) > + need_cat = strncmp(&src_name[count - 5], " Jack", 5) ? true : false; > + > + snprintf(name, size, need_cat ? "%s Jack" : "%s", src_name); > + > +} > + > struct snd_kcontrol * > -snd_kctl_jack_new(const char *name, int idx, void *private_data) > +snd_kctl_jack_new(const char *name, struct snd_card *card) > { > struct snd_kcontrol *kctl; > - kctl = snd_ctl_new1(&jack_detect_kctl, private_data); > + > + kctl = snd_ctl_new1(&jack_detect_kctl, card); Why changing the private data? Did it really work...? Takashi