[alsa-devel] [PATCH 1/2] ucm: Automatically load the best config file based on the card long name
Lin, Mengdong
mengdong.lin at intel.com
Fri Dec 23 13:56:01 CET 2016
> -----Original Message-----
> From: Liam Girdwood [mailto:liam.r.girdwood at linux.intel.com]
> Sent: Friday, December 23, 2016 5:08 PM
> To: Mengdong Lin <mengdong.lin at linux.intel.com>
> Cc: Lin, Mengdong <mengdong.lin at intel.com>; alsa-devel at alsa-project.org;
> tiwai at suse.de; Koul, Vinod <vinod.koul at intel.com>; broonie at kernel.org;
> Bossart, Pierre-louis <pierre-louis.bossart at intel.com>
> Subject: Re: [alsa-devel] [PATCH 1/2] ucm: Automatically load the best config
> file based on the card long name
>
> On Fri, 2016-12-23 at 16:08 +0800, Mengdong Lin wrote:
> > On 12/22/2016 11:35 PM, Liam Girdwood wrote:
> >
> > >>>>>> +/* This function will find the best device-specific
> > >>>>>> +configuration file based
> > >>>>>> + * on the sound card long name.
> > >>>>>> + * Different devices may share the same sound driver and thus
> > >>>>>> +the same sound
> > >>>>>> + * card name (short name), but they may still need different
> > >>>>>> +device-specific
> > >>>>>> + * configurations. For user space to differentiate them,
> > >>>>>> +kernel drivers may
> > >>>>>> + * include the DMI info (vendor, product and board) in the
> > >>>>>> +card long
> > >>>>> name.
> > >>>>>> + * And user space can define configuration file names
> > >>>>>> +appending DMI keywords
> > >>>>>> + * to the card name, like:
> > >>>>>> + * bytcr-rt5640.ASUS.T100
> > >>>>>> + * bytcr-rt5651.MinnowBoard
> > >>>>>> + *
> > >>>>>> + * When being asked to load the configuration file for a card,
> > >>>>>> +this function
> > >>>>>> + * will try to find the card long name from the local machine,
> > >>>>>> +and then scan
> > >>>>>> + * all available configuration file names, search every field
> > >>>>>> +of the config
> > >>>>>> + * file name in the card long name. The more characters match,
> > >>>>>> +the higher
> > >>>>>> + * score the file has. Finally, the file with the highest
> > >>>>>> +score will be
> > >>> loaded.
> > >>>>>> + */
> > >>>>>
> > >>>>> Id' expect this function to try and open card longname and then
> > >>>>> card name if longname is not found. So providing we use the
> > >>>>> exact same names as the DMI name we wont need any string
> > >>>>> formatting or scoring (i.e. file
> > >>>>> open("longname/longname.conf") will either succeed or fail)
> > >>>>>
> > >>>>> Liam
> > >>>>
> > >>>> I feel we cannot use the exact same names for the configuration
> > >>>> file and card long name. The DMI info in the card long name can
> > >>>> be lengthy, including '.' , SPACE, meaningless info like "Corp."
> > >>>> and sometime duplicated info for some OEMs.I hope developers
> can
> > >>>> just extract key words from the messy DMI info to make a simple
> > >>>> configuration file name, and UCM automatically do the matching
> > >>>> and give each configuration file a score. Then the file with
> > >>>> highest score will be used for the card.
> > >>>
> > >>> Providing the DMI name does not use invalid filename characters we
> are ok.
> > >>> Extracting key words and matching is prone to many problems and
> > >>> painful to debug....
> > >>
> > >> May I revise the UCM code like this? It will try to open the file
> > >> with DMI name at first. And only if that file is not available,
> > >> fall back to key words matching.
> > >>
> > >> I hope to keep the possibility that user can use a simple
> > >> configuration file for a product family, without generating too
> > >> many card directories and files.
> > >>
> > >
> > > If the DMI names are too complex for directory names, then you could
> > > add an alias file at the top level that would list the DMI name and
> > > the shortened name i.e.
> > >
> > > # DMI name # UCM directory name
> > > "Dell blah Corp. XPS, 13 blah" "Dell XPS13 BDW"
> > >
> > > So the alias file could be searched for the DMI name, before the
> > > legacy name was tried.
> > >
> > > The alias method above also allows for reuse of configs on machines
> > > that are similar, but with different DMI names. So this would also
> > > keep the number of configs low.
> > >
> > > Liam
> >
> > I'll try to use the alias file. But it seems we need to maintain a lot
> > of entries in the file :-(
> >
> > In addition, I found we cannot use paths with SPACE as the UCM
> > directory name. Autoconf cannot support this. It complains although I tried
> \ or "
> > to escape. We need something like "Dell.XPS13.BDW" as the UCM
> > directory names.
> >
>
> Gah, it looks like autoconf may have defeated this ! Autoconf has
> special uses for some chars in names.
>
> So you may want to "fix" the DMI name to exclude any special chars when
> creating your longname (maybe also set a shorter length too). I still
> dont want any scoring, we just want to open the "longname.conf" then
> "drivername.conf"
>
> Liam
>
Okay. I'll remove the special chars from the card long name and make UCM code simpler as you suggested :-)
Thanks
Mengdong
More information about the Alsa-devel
mailing list