Re: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card long name

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 12/21/2016 11:46 PM, Lin, Mengdong wrote:
-----Original Message-----
From: Liam Girdwood [mailto:liam.r.girdwood@xxxxxxxxxxxxxxx]
Sent: Wednesday, December 21, 2016 10:27 PM
To: mengdong.lin@xxxxxxxxxxxxxxx
Cc: alsa-devel@xxxxxxxxxxxxxxxx; broonie@xxxxxxxxxx; tiwai@xxxxxxx; Bossart,
Pierre-louis <pierre-louis.bossart@xxxxxxxxx>; Koul, Vinod
<vinod.koul@xxxxxxxxx>; Lin, Mengdong <mengdong.lin@xxxxxxxxx>
Subject: Re: [PATCH 1/2] ASoC: core: Add API to use DMI name in sound card
long name

On Wed, 2016-12-21 at 21:04 +0800, mengdong.lin@xxxxxxxxxxxxxxx wrote:
From: Liam Girdwood <liam.r.girdwood@xxxxxxxxxxxxxxx>

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 <liam.r.girdwood@xxxxxxxxxxxxxxx>
Signed-off-by: Mengdong Lin <mengdong.lin@xxxxxxxxxxxxxxx>

diff --git a/include/sound/soc.h b/include/sound/soc.h index
795e6c4..e4f1844 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -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;
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c index
aaab26a..8bcf241 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -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
+ * 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

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

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
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux