[alsa-devel] [PATCH 6/6] ASoC: Intel: boards: use strcmp with constant literals

Takashi Iwai tiwai at suse.de
Fri Oct 6 17:48:33 CEST 2017


On Fri, 06 Oct 2017 17:24:22 +0200,
Pierre-Louis Bossart wrote:
> 
> 
> 
> On 10/06/2017 09:28 AM, Pierre-Louis Bossart wrote:
> > On 10/6/17 6:50 AM, Andy Shevchenko wrote:
> >> On Fri, 2017-10-06 at 10:55 +0200, Takashi Iwai wrote:
> >>> On Thu, 05 Oct 2017 20:52:43 +0200,
> >>> Pierre-Louis Bossart wrote:
> >>>>
> >>>> we used strncmp in all audio machine drivers, this is not needed
> >>>> when comparing against constant literals.
> >>>> General replace of strncmp(a, b, strlen(b)) to strcmp(a,b)
> >>>>
> >>>> Suggested-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com>
> >>>> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart at linux.inte
> >>>> l.com>
> >>>> ---
> >>>>   sound/soc/intel/boards/bxt_da7219_max98357a.c   | 3 +--
> >>>>   sound/soc/intel/boards/bytcht_es8316.c          | 3 +--
> >>>>   sound/soc/intel/boards/bytcr_rt5640.c           | 6 ++----
> >>>>   sound/soc/intel/boards/bytcr_rt5651.c           | 3 +--
> >>>>   sound/soc/intel/boards/cht_bsw_max98090_ti.c    | 3 +--
> >>>>   sound/soc/intel/boards/cht_bsw_rt5645.c         | 6 ++----
> >>>>   sound/soc/intel/boards/cht_bsw_rt5672.c         | 3 +--
> >>>>   sound/soc/intel/boards/skl_nau88l25_max98357a.c | 3 +--
> >>>>   sound/soc/intel/boards/skl_nau88l25_ssm4567.c   | 3 +--
> >>>>   9 files changed, 11 insertions(+), 22 deletions(-)
> >>>
> >>> While we're at it: since all these do mostly same: wouldn't it make
> >>> more sense to create a helper to scan over the rtd_list?
> >>>
> >>> static inline snd_soc_intel_get_codec_dai(struct snd_soc_card *card,
> >>>                       const char *dai_name)
> >>> {
> >>>     struct snd_soc_pcm_runtime *rtd;
> >>>
> >>>     list_for_each_entry(rtd, &card->rtd_list, list) {
> >>>         if (!strcmp(rtd->codec_dai->name, dai_name))
> >>>             return rtd->codec_dai;
> >>>     }
> >>>
> >>>     return NULL;
> >>> }
> >>
> >> I like this!
> >>
> >>> Some drivers require to check two names, but it can call this function
> >>> twice.
> >>
> >> It looks like not hot path, so, 2 passes instead of one might be not a
> >> big deal.
> >
> > Yes, that'd be a good way to simplify further. I'll resend the
> > series, thanks for the suggestion Takashi.
> The code is not Intel-specific though, should it be moved to soc.h ? e.g.
> 
> diff --git a/include/sound/soc.h b/include/sound/soc.h
> index 11ca867033bd..68f829d32c76 100644
> --- a/include/sound/soc.h
> +++ b/include/sound/soc.h
> @@ -1736,6 +1736,19 @@ int snd_soc_register_dai(struct
> snd_soc_component *component,
>  struct snd_soc_dai *snd_soc_find_dai(
>         const struct snd_soc_dai_link_component *dlc);
> 
> +static inline snd_soc_card_get_codec_dai(struct snd_soc_card *card,
> +                                        const char *dai_name)
> +{
> +       struct snd_soc_pcm_runtime *rtd;
> +
> +       list_for_each_entry(rtd, &card->rtd_list, list) {
> +               if (!strcmp(rtd->codec_dai->name, dai_name))
> +                       return rtd->codec_dai;
> +       }
> +
> +       return NULL;
> +}

Currently only Intel drivers use this, so I guess we need no hustle to
lift up for now.  But it's an inline function, so it's basically
harmless, so I'd leave the decision to Mark.


thanks,

Takashi


More information about the Alsa-devel mailing list