[alsa-devel] [PATCH 1/2] ucm: Automatically load the best config file based on the card long name

Mengdong Lin mengdong.lin at linux.intel.com
Fri Dec 23 09:08:13 CET 2016


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.

Thanks
mengdong


>
>> Thanks
>> Mengdong
>>
>>>
>>> The alternative is to include the exact DMI name in a top level config file
>>> that points to the UCM config.
>>
>>
>>
>> Thanks
>> Mengdong
>
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>


More information about the Alsa-devel mailing list