ASoC: Use DMI name in sound card long name
Subsystems (3)
cover ASoC: Use DMI name in sound card long name
From: Mengdong Lin <[email protected]>
This series is based on Liam's idea to use DMI name as the sound card short name in the audio workshop. Now we add DMI info to the card long name:
- Not change the card name (short name), keep it simple. So the card ID won't change as well.
- Use short name and DMI name together to make a readable and unqique long name.
Machine drivers can use a new API to get this feature.
In user space, when the sound server ask UCM to open a sound card, UCM will try to find the best configuration file based on the card long name, and only if not avaiable, fallback to the default configuration file that matches the card name (short name). Please see patch:
ucm: Automatically load the best config file based on the card long name
History:
v1 from RFC: Give up using a table to map DMI info to a simple string,
since we cannot maintain such a table for each machine. Just do verbatim copy of DMI info and let user space decide how to use the DMI info in card long name to find the best UCM config file.
If device driver adds a flavor string, just append it after the DMI info fields to the card long name.
Liam Girdwood (1):
ASoC: core: Add API to use DMI name in sound card long name
Mengdong Lin (1):
ASoC: Intel: Use DMI name for sound card long name in Broadwell
machine driver
include/sound/soc.h | 4 ++ sound/soc/intel/boards/broadwell.c | 2 + sound/soc/soc-core.c | 81 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 87 insertions(+)
Signature · 1 line
2.5.0
PATCH 1/2 ASoC: core: Add API to use DMI name in sound card long name
From: Liam Girdwood <[email protected]>
Intel DSP platform drivers are used by many different devices but are difficult for userspace to differentiate. This patch adds an API to allow the DMI name to be used in the sound card long name, thereby helping userspace load the correct UCM configuration. Usually machine drivers uses their own name as the sound card name (short name), and leave the long name and driver name blank. This API will append the DMI info like vendor, product and board info, to the card name to make up the card long name. If the machine driver has already explicitly set the long name, this API will do nothing.
This patch also allows for further differentiation as many devices that share the same DMI name i.e. Minnowboards, UP boards may be configured with different codecs or firmwares. The API supports flavoring the DMI name into the card longname to provide the extra differentiation required for these devices.
include/sound/soc.h +4 -0
@@ -497,6 +497,8 @@ void snd_soc_runtime_deactivate(struct snd_soc_pcm_runtime *rtd, int stream);int snd_soc_runtime_set_dai_fmt (struct snd_soc_pcm_runtime *rtd,unsigned int dai_fmt); +int snd_soc_set_dmi_name (struct snd_soc_card *card,const char *flavour); +/* Utility functions to get clock rates from various things */ int snd_soc_calc_frame_size (int sample_size,int channels,int tdm_slots);int snd_soc_params_to_frame_size (struct snd_pcm_hw_params *params);
@@ -1094,6 +1096,8 @@ struct snd_soc_card {const char *name;const char *long_name;const char *driver_name; +char dmi_longname[80 ]; +struct device *dev;struct snd_card *snd_card;struct module *owner;
sound/soc/soc-core.c +81 -0
93 lines not on this page · raw message
Signature · 1 line
2.5.0
Liam Girdwood
maintainerRe: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long name
Quoted 66 lines · On Wed, 2016-12-21 at 21:04 +0800, [email protected] wrote:
From: Liam Girdwood <[email protected]>
Intel DSP platform drivers are used by many different devices but are difficult for userspace to differentiate. This patch adds an API to allow the DMI name to be used in the sound card long name, thereby helping userspace load the correct UCM configuration. Usually machine drivers uses their own name as the sound card name (short name), and leave the long name and driver name blank. This API will append the DMI info like vendor, product and board info, to the card name to make up the card long name. If the machine driver has already explicitly set the long name, this API will do nothing.
This patch also allows for further differentiation as many devices that share the same DMI name i.e. Minnowboards, UP boards may be configured with different codecs or firmwares. The API supports flavoring the DMI name into the card longname to provide the extra differentiation required for these devices.
Signed-off-by Liam Girdwood <[email protected]>Signed-off-by Mengdong Lin <[email protected]>include/sound/soc.h +4
-0@@ -497,6 +497,8 @@ void snd_soc_runtime_deactivate(struct snd_soc_pcm_runtime *rtd, int stream);int snd_soc_runtime_set_dai_fmt (struct snd_soc_pcm_runtime *rtd,unsigned int dai_fmt); +int snd_soc_set_dmi_name (struct snd_soc_card *card,const char *flavour); +/* Utility functions to get clock rates from various things */ int snd_soc_calc_frame_size (int sample_size,int channels,int tdm_slots);int snd_soc_params_to_frame_size (struct snd_pcm_hw_params *params);@@ -1094,6 +1096,8 @@ struct snd_soc_card {const char *name;const char *long_name;const char *driver_name; +char dmi_longname[80 ]; +struct device *dev;struct snd_card *snd_card;struct module *owner;sound/soc/soc-core.c +8
-0@@ -34,6 +34,7 @@#include <linux/ctype.h> #include <linux/slab.h> #include <linux/of.h> +#include <linux/dmi.h> #include <sound/core.h> #include <sound/jack.h> #include <sound/pcm.h> @@ -1886,6 +1887,86 @@ int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd, }EXPORT_SYMBOL_GPL (snd_soc_runtime_set_dai_fmt); +/** +* snd_soc_set_dmi_name() - Register DMI names to card +* @card: The card to register DMI names +* @flavour: The flavour "differentiator" for the card amongst its peers. +* +* Intel DSP platform drivers are used by many different devices but are +* difficult for userspace to differentiate, since machine drivers ususally
sound/soc/soc-core.c int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd, · line 1906
Quoted 10 lines
sound/soc/soc-core.c +10
-0+* use their own name as the card name (short name) and leave the card long +* name blank. This function will allow DMI info to be used in the sound +* card long name, thereby helping userspace load the correct UCM (Use Case +* Manager) configuration. +* Possible card long names may be: +* broadwell-rt286-Dell Inc.-XPS 13 9343-0310JH +* broadwell-rt286-Intel Corp.-Broadwell Client platform-Wilson Beach SDS +* bytcr-rt5640-ASUSTeK COMPUTER INC.-T100TA-T100TA +* bytcr-rt5651-Circuitco-Minnowboard Max D0 PLATFORM-MinnowBoard MAX +*
Lets keep it simpler, we dont need to prepend the driver name to the longname as it's already available in driver_name.
The purpose of the patch is to uniquely identify the machine, so we dont need to provide or duplicate other information in the name.
So longname should be "dmi-flavour" where dmi is product OR board (if product is not available).
Liam
Quoted 66 lines
sound/soc/soc-core.c +63
-0+* This function also supports flavoring the card longname to provide +* the extra differentiation. +* +* Returns 0 on success, otherwise a negative error code. +*/ +int snd_soc_set_dmi_name (struct snd_soc_card *card,const char *flavour) +{ +const char *vendor, *product, *board; + +if (card->long_name) +return 0 ;/* long name already set by driver or from DMI */ + + vendor =dmi_get_system_info (DMI_BOARD_VENDOR ); +if (!vendor) { +dev_warn (card->dev,"ASoC: no DMI vendor name!\n" ); +return 0 ; + } + + product =dmi_get_system_info (DMI_PRODUCT_NAME ); + board =dmi_get_system_info (DMI_BOARD_NAME ); +if (!board && !product) { +/* fall back to using legacy name */ +dev_warn (card->dev,"ASoC: no DMI board/product name!\n" ); +return 0 ; + } + +/* make up dmi long name as: +* card name (usually machine driver name) -vendor -product -board +*/ +snprintf (card->dmi_longname,sizeof (card->snd_card->longname), +"%s-%s" , card->name, vendor); + +if (product) { +strncat (card->dmi_longname,"-" , +sizeof (card->snd_card->longname)); +strncat (card->dmi_longname, product, +sizeof (card->snd_card->longname)); + } + +if (board) { +strncat (card->dmi_longname,"-" , +sizeof (card->snd_card->longname)); +strncat (card->dmi_longname, board, +sizeof (card->snd_card->longname)); + } + + +/* Add flavour to dmi long name */ +if (flavour) { +strncat (card->dmi_longname,"-" , +sizeof (card->snd_card->longname)); +strncat (card->dmi_longname, flavour, +sizeof (card->snd_card->longname)); + } + +/* set long name */ + card->long_name = card->dmi_longname; + + +return 0 ; +} +EXPORT_SYMBOL_GPL (snd_soc_set_dmi_name); +static int snd_soc_instantiate_card (struct snd_soc_card *card) {struct snd_soc_codec *codec;
Re: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long name
Quoted 102 lines
-----Original Message-----
From: Liam Girdwood [mailto:[email protected]]
Sent: Wednesday, December 21, 2016 10:27 PM
To: [email protected]
Cc: [email protected]; [email protected]; [email protected]; Bossart, Pierre-louis <[email protected]>; Koul, Vinod <[email protected]>; Lin, Mengdong <[email protected]>
Subject: Re: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long nameQuoted 26 lines · On Wed, 2016-12-21 at 21:04 +0800, [email protected] wrote:
From: Liam Girdwood <[email protected]>
Intel DSP platform drivers are used by many different devices but are difficult for userspace to differentiate. This patch adds an API to allow the DMI name to be used in the sound card long name, thereby helping userspace load the correct UCM configuration. Usually machine drivers uses their own name as the sound card name (short name), and leave the long name and driver name blank. This API will append the DMI info like vendor, product and board info, to the card name to make up the card long name. If the machine driver has already explicitly set the long name, this API will do nothing.
This patch also allows for further differentiation as many devices that share the same DMI name i.e. Minnowboards, UP boards may be configured with different codecs or firmwares. The API supports flavoring the DMI name into the card longname to provide the extra differentiation required for these devices.
Signed-off-by Liam Girdwood <[email protected]>Signed-off-by Mengdong Lin <[email protected]>include/sound/soc.h index renamed from include/sound/soc.h +0
-0795e6c4..e4f1844 100644
include/sound/soc.h +0
-0@@ -497,6 +497,8 @@ void snd_soc_runtime_deactivate(structQuoted 1 line
snd_soc_pcm_runtime*rtd, int stream); intsnd_soc_runtime_set_dai_fmt(struct
snd_soc_pcm_runtime*rtd,Quoted 8 lines
include/sound/soc.h +3
-0unsigned int dai_fmt); +int snd_soc_set_dmi_name (struct snd_soc_card *card,const char +*flavour); +/* Utility functions to get clock rates from various things */ int
snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots); intsnd_soc_params_to_frame_size(struct snd_pcm_hw_params *params);@@
Quoted 37 lines
-1094,6 +1096,8 @@ struct
snd_soc_card{include/sound/soc.h +2
-0const char *name;const char *long_name;const char *driver_name; +char dmi_longname[80 ]; +struct device *dev;struct snd_card *snd_card;struct module *owner;sound/soc/soc-core.c index renamed from sound/soc/soc-core.c +0
-0aaab26a..8bcf241 100644
sound/soc/soc-core.c +13
-0@@ -34,6 +34,7 @@#include <linux/ctype.h> #include <linux/slab.h> #include <linux/of.h> +#include <linux/dmi.h> #include <sound/core.h> #include <sound/jack.h> #include <sound/pcm.h> @@ -1886,6 +1887,86 @@ int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd, }EXPORT_SYMBOL_GPL (snd_soc_runtime_set_dai_fmt ); +/** +* snd_soc_set_dmi_name() - Register DMI names to card +* @card: The card to register DMI names +* @flavour: The flavour "differentiator" for the card amongst its peers. +* +* Intel DSP platform drivers are used by many different devices but +are +* difficult for userspace to differentiate, since machine drivers +ususally +* use their own name as the card name (short name) and leave the +card long +* name blank. This function will allow DMI info to be used in the sound/soc/soc-core.c int snd_soc_runtime_set_dai_fmt(struct · line 1911
Quoted 10 lines
sound/soc/soc-core.c +10
-0+sound + * card long name, thereby helping userspace load the correct UCM +(Use Case + * Manager) configuration. + * Possible card long names may be: + * broadwell-rt286-Dell Inc.-XPS 13 9343-0310JH + * broadwell-rt286-Intel Corp.-Broadwell Client platform-Wilson Beach +SDS + * bytcr-rt5640-ASUSTeK COMPUTER INC.-T100TA-T100TA + * bytcr-rt5651-Circuitco-Minnowboard Max D0 PLATFORM-MinnowBoardMAX
sound/soc/soc-core.c int snd_soc_runtime_set_dai_fmt(struct · line 1912
Quoted 1 line
sound/soc/soc-core.c +1
-0+* Lets keep it simpler, we dont need to prepend the driver name to the longname as it's already available in
driver_name.
Quoted 7 lines
The purpose of the patch is to uniquely identify the machine, so we dont need to provide or duplicate other information in the name.
So longname should be "dmi-flavour" where dmi is product OR board (if product is not available).
Liam
Hi Liam,
Yes, there is some duplication. But may we keep this?
It's because that if the card long name itself has all the information, the user space UCM code can just compare the configuration file names against the card long name, no need to involve the card name (driver name). In addition, I want to make the naming same as HD-Audio, their card long name is the card short name with some suffixes. Although HD-Audio does not use UCM now, but maybe in the future? So we can process ASoC and HD-Audio cards in the same way.
Thanks
Mengdong
Re: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long name
Quoted 112 lines · Mengdong
Quoted 102 lines
-----Original Message-----
From: Liam Girdwood [mailto:[email protected]]
Sent: Wednesday, December 21, 2016 10:27 PM
To: [email protected]
Cc: [email protected]; [email protected]; [email protected]; Bossart, Pierre-louis <[email protected]>; Koul, Vinod <[email protected]>; Lin, Mengdong <[email protected]>
Subject: Re: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long nameQuoted 26 lines · On Wed, 2016-12-21 at 21:04 +0800, [email protected] wrote:
From: Liam Girdwood <[email protected]>
Intel DSP platform drivers are used by many different devices but are difficult for userspace to differentiate. This patch adds an API to allow the DMI name to be used in the sound card long name, thereby helping userspace load the correct UCM configuration. Usually machine drivers uses their own name as the sound card name (short name), and leave the long name and driver name blank. This API will append the DMI info like vendor, product and board info, to the card name to make up the card long name. If the machine driver has already explicitly set the long name, this API will do nothing.
This patch also allows for further differentiation as many devices that share the same DMI name i.e. Minnowboards, UP boards may be configured with different codecs or firmwares. The API supports flavoring the DMI name into the card longname to provide the extra differentiation required for these devices.
Signed-off-by Liam Girdwood <[email protected]>Signed-off-by Mengdong Lin <[email protected]>include/sound/soc.h index renamed from include/sound/soc.h +0
-0795e6c4..e4f1844 100644
include/sound/soc.h +0
-0@@ -497,6 +497,8 @@ void snd_soc_runtime_deactivate(structQuoted 1 line
snd_soc_pcm_runtime*rtd, int stream); intsnd_soc_runtime_set_dai_fmt(struct
snd_soc_pcm_runtime*rtd,Quoted 8 lines
unsigned int
dai_fmt);include/sound/soc.h +3
-0+int snd_soc_set_dmi_name (struct snd_soc_card *card,const char +*flavour); +/* Utility functions to get clock rates from various things */ int
snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots); intsnd_soc_params_to_frame_size(struct snd_pcm_hw_params *params);@@
Quoted 37 lines
-1094,6 +1096,8 @@ struct
snd_soc_card{
const char *name;
const char*long_name;
const char*driver_name;include/sound/soc.h +2
-0+char dmi_longname[80 ]; +struct device *dev;struct snd_card *snd_card;struct module *owner;sound/soc/soc-core.c index renamed from sound/soc/soc-core.c +0
-0aaab26a..8bcf241 100644
sound/soc/soc-core.c +13
-0@@ -34,6 +34,7 @@#include <linux/ctype.h> #include <linux/slab.h> #include <linux/of.h> +#include <linux/dmi.h> #include <sound/core.h> #include <sound/jack.h> #include <sound/pcm.h> @@ -1886,6 +1887,86 @@ int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd, }EXPORT_SYMBOL_GPL (snd_soc_runtime_set_dai_fmt ); +/** +* snd_soc_set_dmi_name() - Register DMI names to card +* @card: The card to register DMI names +* @flavour: The flavour "differentiator" for the card amongst its peers. +* +* Intel DSP platform drivers are used by many different devices but +are +* difficult for userspace to differentiate, since machine drivers +ususally +* use their own name as the card name (short name) and leave the +card long +* name blank. This function will allow DMI info to be used in the sound/soc/soc-core.c int snd_soc_runtime_set_dai_fmt(struct · line 1911
Quoted 10 lines
sound/soc/soc-core.c +10
-0+sound + * card long name, thereby helping userspace load the correct UCM +(Use Case + * Manager) configuration. + * Possible card long names may be: + * broadwell-rt286-Dell Inc.-XPS 13 9343-0310JH + * broadwell-rt286-Intel Corp.-Broadwell Client platform-Wilson Beach +SDS + * bytcr-rt5640-ASUSTeK COMPUTER INC.-T100TA-T100TA + * bytcr-rt5651-Circuitco-Minnowboard Max D0 PLATFORM-MinnowBoardMAX
sound/soc/soc-core.c int snd_soc_runtime_set_dai_fmt(struct · line 1912
Quoted 1 line
sound/soc/soc-core.c +1
-0+* Lets keep it simpler, we dont need to prepend the driver name to the longname as it's already available in
driver_name.Quoted 7 lines
The purpose of the patch is to uniquely identify the machine, so we dont need to provide or duplicate other information in the name.
So longname should be "dmi-flavour" where dmi is product OR board (if product is not available).
Liam
Hi Liam,
Quoted 7 lines
Yes, there is some duplication. But may we keep this?
It's because that if the card long name itself has all the information, the user space UCM code can just compare the configuration file names against the card long name, no need to involve the card name (driver name). In addition, I want to make the naming same as HD-Audio, their card long name is the card short name with some suffixes. Although HD-Audio does not use UCM now, but maybe in the future? So we can process ASoC and HD-Audio cards in the same way.
Thanks
Mengdong
Hi Liam,
I'll remove the driver name from the long name and keep the long name as "dmi-flavor" as you suggested. I found dmi info could be quite long and if we keep the duplicated info, we may not have enough room for the "flavor" field. user space can accept 80 characters at most.
I'll modify the UCM code.
Thanks
Mengdong
Re: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long name
In reply to [email protected]include/sound/soc.h struct snd_soc_card { · line 1099
Quoted 9 lines
/* Utility functions to get clock rates from various things */ int
snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots); intsnd_soc_params_to_frame_size(struct snd_pcm_hw_params *params);include/sound/soc.h +1
-0@@ -1094,6 +1096,8 @@ struct snd_soc_card {const char *name;const char *long_name;const char *driver_name; +char dmi_longname[80 ];
why 80? is this linked to DMI restrictions on board/product names?
Quoted 7 lines
sound/soc/soc-core.c +6
-0+/** +* snd_soc_set_dmi_name() - Register DMI names to card +* @card: The card to register DMI names +* @flavour: The flavour "differentiator" for the card amongst its peers. +* +* Intel DSP platform drivers are used by many different devices but are
sound/soc/soc-core.c int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd, · line 1905
Quoted 10 lines
sound/soc/soc-core.c +10
-0+* difficult for userspace to differentiate, since machine drivers ususally +* use their own name as the card name (short name) and leave the card long +* name blank. This function will allow DMI info to be used in the sound +* card long name, thereby helping userspace load the correct UCM (Use Case +* Manager) configuration. +* Possible card long names may be: +* broadwell-rt286-Dell Inc.-XPS 13 9343-0310JH +* broadwell-rt286-Intel Corp.-Broadwell Client platform-Wilson Beach SDS +* bytcr-rt5640-ASUSTeK COMPUTER INC.-T100TA-T100TA +* bytcr-rt5651-Circuitco-Minnowboard Max D0 PLATFORM-MinnowBoard MAX
You may want to add a comment that the '.' is not a separator but part of the DMI name. I was trying to figure out why there were cases with .-
Quoted 45 lines
+ *
+ * This function also supports flavoring the card longname to provide
+ * the extra differentiation.
+ *
+ * Returns 0 on success, otherwise a negative error code.
+ */sound/soc/soc-core.c +39
-0+int snd_soc_set_dmi_name (struct snd_soc_card *card,const char *flavour) +{ +const char *vendor, *product, *board; + +if (card->long_name) +return 0 ;/* long name already set by driver or from DMI */ + + vendor =dmi_get_system_info (DMI_BOARD_VENDOR ); +if (!vendor) { +dev_warn (card->dev,"ASoC: no DMI vendor name!\n" ); +return 0 ; + } + + product =dmi_get_system_info (DMI_PRODUCT_NAME ); + board =dmi_get_system_info (DMI_BOARD_NAME ); +if (!board && !product) { +/* fall back to using legacy name */ +dev_warn (card->dev,"ASoC: no DMI board/product name!\n" ); +return 0 ; + } + +/* make up dmi long name as: +* card name (usually machine driver name) -vendor -product -board +*/ +snprintf (card->dmi_longname,sizeof (card->snd_card->longname), +"%s-%s" , card->name, vendor); + +if (product) { +strncat (card->dmi_longname,"-" , +sizeof (card->snd_card->longname)); +strncat (card->dmi_longname, product, +sizeof (card->snd_card->longname)); + } + +if (board) { +strncat (card->dmi_longname,"-" , +sizeof (card->snd_card->longname)); +strncat (card->dmi_longname, board, +sizeof (card->snd_card->longname));
sound/soc/soc-core.c int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd, · line 1960
Quoted 10 lines
sound/soc/soc-core.c +10
-0+ } + + +/* Add flavour to dmi long name */ +if (flavour) { +strncat (card->dmi_longname,"-" , +sizeof (card->snd_card->longname)); +strncat (card->dmi_longname, flavour, +sizeof (card->snd_card->longname)); + }
how is the 'flavour' defined? This doesn't seem to come from the DMI decode information? Is this for example intended to be used with quirks?
Quoted 13 lines
sound/soc/soc-core.c +9
-0+ +/* set long name */ + card->long_name = card->dmi_longname; + + +return 0 ; +} +EXPORT_SYMBOL_GPL (snd_soc_set_dmi_name); +static int snd_soc_instantiate_card (struct snd_soc_card *card) {struct snd_soc_codec *codec;
Liam Girdwood
maintainerRe: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long name
Quoted 9 lines · Pierre-Louis Bossart
sound/soc/soc-core.c int snd_soc_runtime_set_dai_fmt(struct snd_soc_pcm_runtime *rtd, · line 1960
Quoted 8 lines
sound/soc/soc-core.c +8
-0+ +/* Add flavour to dmi long name */ +if (flavour) { +strncat (card->dmi_longname,"-" , +sizeof (card->snd_card->longname)); +strncat (card->dmi_longname, flavour, +sizeof (card->snd_card->longname)); + }
Quoted 3 lines
how is the 'flavour' defined? This doesn't seem to come from the DMI decode information? Is this for example intended to be used with quirks?
Yes, it's intended for identifying quirks, different firmwares, etc
Liam
Re: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long name
In reply to Pierre-Louis BossartQuoted 15 lines
-----Original Message-----
From: Pierre-Louis Bossart [mailto:[email protected]]
Sent: Wednesday, December 21, 2016 10:37 PM
To: [email protected]; [email protected]; [email protected]
Cc: [email protected]; Lin, Mengdong <[email protected]>; [email protected]; Koul, Vinod <[email protected]>; Bossart, Pierre-louis <[email protected]>
Subject: Re: [alsa-devel] [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long nameQuoted 3 lines
/* Utility functions to get clock rates from various things */ int
snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots); intsnd_soc_params_to_frame_size(struct snd_pcm_hw_params *params);
Quoted 8 lines
@@
include/sound/soc.h struct snd_soc_card { · line 1099
Quoted 5 lines
-1094,6 +1096,8 @@ struct
snd_soc_card{include/sound/soc.h +1
-0const char *name;const char *long_name;const char *driver_name; +char dmi_longname[80 ];why 80? is this linked to DMI restrictions on board/product names?
Because kernel uses a 80-character array to give the card long name to user space, in struct snd_ctl_card_info in include/uapi/sound/asound.h
Quoted 25 lines
Quoted 13 lines
(quoted diff) +12
-0+/** + * snd_soc_set_dmi_name() - Register DMI names to card + * @card: The card to register DMI names + * @flavour: The flavour "differentiator" for the card amongst its peers. + * + * Intel DSP platform drivers are used by many different devices but +are + * difficult for userspace to differentiate, since machine drivers +ususally + * use their own name as the card name (short name) and leave the +card long + * name blank. This function will allow DMI info to be used in theReview
Quoted 10 lines
(quoted diff) +10
-0+sound + * card long name, thereby helping userspace load the correct UCM +(Use Case + * Manager) configuration. + * Possible card long names may be: + * broadwell-rt286-Dell Inc.-XPS 13 9343-0310JH + * broadwell-rt286-Intel Corp.-Broadwell Client platform-Wilson Beach +SDS + * bytcr-rt5640-ASUSTeK COMPUTER INC.-T100TA-T100TA + * bytcr-rt5651-Circuitco-Minnowboard Max D0 PLATFORM-MinnowBoardMAX
Quoted 2 lines
You may want to add a comment that the '.' is not a separator but part of the DMI name. I was trying to figure out why there were cases with .-
Okay, I'll add the comment. Actually the '-' is not necessary for the user space UCM code to do the matching. It's just give a hint to the developer to identify DMI fields in the card long name. I choose '-' since both '.' and SPACE can be part of the DMI vendor or product names. I'll to add a UCM command to show both the card long name and its best matched configuration file, for developers to revise the name for a new configuration file.
Thanks
Mengdong
PATCH 2/2 ASoC: Intel: Use DMI name for sound card long name in Broadwell machine driver
In reply to [email protected]From: Mengdong Lin <[email protected]>
Intel Broadwell machine driver will call API snd_soc_set_dmi_name() to use DMI info to make the sound card long name.
Here are the changed long name for two Broadwell-based machines:
Dell XPS-13(2015): broadwell-rt286-Dell Inc.-XPS 13 9343-0310JH
Intel WilsonBeach:
broadwell-rt286-Intel Corp.-Broadwell Client platform-Wilson Beach SDS
They still share the same card name "broadwell-rt286".
sound/soc/intel/boards/broadwell.c +2 -0
@@ -266,6 +266,8 @@ static int broadwell_audio_probe(struct platform_device *pdev) { broadwell_rt286.dev = &pdev->dev; +snd_soc_set_dmi_name (&broadwell_rt286,NULL ); +return devm_snd_soc_register_card (&pdev->dev, &broadwell_rt286); }
Signature · 1 line
2.5.0