public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes
@ 2015-11-25 13:00 Richard Fitzgerald
  2015-11-25 13:00 ` [PATCH v3 1/2] " Richard Fitzgerald
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Richard Fitzgerald @ 2015-11-25 13:00 UTC (permalink / raw)
  To: vinod.koul, tiwai, broonie
  Cc: perex, lgirdwood, alsa-devel, linux-kernel, patches

This updates the compress core code to create an 'info' file under procfs
for each compressed node, like the PCM core does for PCM nodes.

Based off Takashi's for-next

Richard Fitzgerald (2):
  ALSA: compress: Add procfs info file for compressed nodes
  ALSA: compress: Pass id string to snd_compress_new

 include/sound/compress_driver.h |  7 +++-
 sound/core/compress_offload.c   | 86 ++++++++++++++++++++++++++++++++++++++++-
 sound/soc/soc-compress.c        |  8 +++-
 3 files changed, 97 insertions(+), 4 deletions(-)

-- 
1.9.1


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/2] ALSA: compress: Add procfs info file for compressed nodes
  2015-11-25 13:00 [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes Richard Fitzgerald
@ 2015-11-25 13:00 ` Richard Fitzgerald
  2015-11-25 13:00 ` [PATCH v3 2/2] ALSA: compress: Pass id string to snd_compress_new Richard Fitzgerald
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Richard Fitzgerald @ 2015-11-25 13:00 UTC (permalink / raw)
  To: vinod.koul, tiwai, broonie
  Cc: perex, lgirdwood, alsa-devel, linux-kernel, patches

This patch implements a procfs info file for compr nodes when
SND_VERBOSE_PROCFS is enabled. This is equivalent to what the PCM
core already does for pcm nodes.

Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
---
 include/sound/compress_driver.h |  5 +++
 sound/core/compress_offload.c   | 73 ++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 77 insertions(+), 1 deletion(-)

diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h
index fa1d055..85c4237 100644
--- a/include/sound/compress_driver.h
+++ b/include/sound/compress_driver.h
@@ -152,6 +152,11 @@ struct snd_compr {
 	unsigned int direction;
 	struct mutex lock;
 	int device;
+#ifdef CONFIG_SND_VERBOSE_PROCFS
+	char id[64];
+	struct snd_info_entry *proc_root;
+	struct snd_info_entry *proc_info_entry;
+#endif
 };
 
 /* compress device register APIs */
diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c
index b123c42..1258e9d 100644
--- a/sound/core/compress_offload.c
+++ b/sound/core/compress_offload.c
@@ -40,6 +40,7 @@
 #include <linux/module.h>
 #include <sound/core.h>
 #include <sound/initval.h>
+#include <sound/info.h>
 #include <sound/compress_params.h>
 #include <sound/compress_offload.h>
 #include <sound/compress_driver.h>
@@ -891,11 +892,76 @@ static int snd_compress_dev_disconnect(struct snd_device *device)
 	return 0;
 }
 
+#ifdef CONFIG_SND_VERBOSE_PROCFS
+static void snd_compress_proc_info_read(struct snd_info_entry *entry,
+					struct snd_info_buffer *buffer)
+{
+	struct snd_compr *compr = (struct snd_compr *)entry->private_data;
+
+	snd_iprintf(buffer, "card: %d\n", compr->card->number);
+	snd_iprintf(buffer, "device: %d\n", compr->device);
+	snd_iprintf(buffer, "stream: %s\n",
+			compr->direction == SND_COMPRESS_PLAYBACK
+				? "PLAYBACK" : "CAPTURE");
+	snd_iprintf(buffer, "id: %s\n", compr->id);
+}
+
+static int snd_compress_proc_init(struct snd_compr *compr)
+{
+	struct snd_info_entry *entry;
+	char name[16];
+
+	sprintf(name, "compr%i", compr->device);
+	entry = snd_info_create_card_entry(compr->card, name,
+					   compr->card->proc_root);
+	if (!entry)
+		return -ENOMEM;
+	entry->mode = S_IFDIR | S_IRUGO | S_IXUGO;
+	if (snd_info_register(entry) < 0) {
+		snd_info_free_entry(entry);
+		return -ENOMEM;
+	}
+	compr->proc_root = entry;
+
+	entry = snd_info_create_card_entry(compr->card, "info",
+					   compr->proc_root);
+	if (entry) {
+		snd_info_set_text_ops(entry, compr,
+				      snd_compress_proc_info_read);
+		if (snd_info_register(entry) < 0) {
+			snd_info_free_entry(entry);
+			entry = NULL;
+		}
+	}
+	compr->proc_info_entry = entry;
+
+	return 0;
+}
+
+static void snd_compress_proc_done(struct snd_compr *compr)
+{
+	snd_info_free_entry(compr->proc_info_entry);
+	compr->proc_info_entry = NULL;
+	snd_info_free_entry(compr->proc_root);
+	compr->proc_root = NULL;
+}
+#else
+static inline int snd_compress_proc_init(struct snd_compr *compr)
+{
+	return 0;
+}
+
+static inline void snd_compress_proc_done(struct snd_compr *compr)
+{
+}
+#endif
+
 static int snd_compress_dev_free(struct snd_device *device)
 {
 	struct snd_compr *compr;
 
 	compr = device->device_data;
+	snd_compress_proc_done(compr);
 	put_device(&compr->dev);
 	return 0;
 }
@@ -915,6 +981,7 @@ int snd_compress_new(struct snd_card *card, int device,
 		.dev_register = snd_compress_dev_register,
 		.dev_disconnect = snd_compress_dev_disconnect,
 	};
+	int ret;
 
 	compr->card = card;
 	compr->device = device;
@@ -923,7 +990,11 @@ int snd_compress_new(struct snd_card *card, int device,
 	snd_device_initialize(&compr->dev, card);
 	dev_set_name(&compr->dev, "comprC%iD%i", card->number, device);
 
-	return snd_device_new(card, SNDRV_DEV_COMPRESS, compr, &ops);
+	ret = snd_device_new(card, SNDRV_DEV_COMPRESS, compr, &ops);
+	if (ret == 0)
+		snd_compress_proc_init(compr);
+
+	return ret;
 }
 EXPORT_SYMBOL_GPL(snd_compress_new);
 
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/2] ALSA: compress: Pass id string to snd_compress_new
  2015-11-25 13:00 [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes Richard Fitzgerald
  2015-11-25 13:00 ` [PATCH v3 1/2] " Richard Fitzgerald
@ 2015-11-25 13:00 ` Richard Fitzgerald
  2015-11-26  8:23 ` [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes Vinod Koul
  2015-11-30 10:49 ` Takashi Iwai
  3 siblings, 0 replies; 5+ messages in thread
From: Richard Fitzgerald @ 2015-11-25 13:00 UTC (permalink / raw)
  To: vinod.koul, tiwai, broonie
  Cc: perex, lgirdwood, alsa-devel, linux-kernel, patches

Make snd_compress_new take an id string (like snd_pcm_new).
This string can be included in the procfs info.

This patch also updates soc_new_compress() to create an ID
based on the stream and dai name, as done for PCM streams.

Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
---
 include/sound/compress_driver.h |  2 +-
 sound/core/compress_offload.c   | 13 ++++++++++++-
 sound/soc/soc-compress.c        |  8 +++++++-
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h
index 85c4237..c0abcdc 100644
--- a/include/sound/compress_driver.h
+++ b/include/sound/compress_driver.h
@@ -163,7 +163,7 @@ struct snd_compr {
 int snd_compress_register(struct snd_compr *device);
 int snd_compress_deregister(struct snd_compr *device);
 int snd_compress_new(struct snd_card *card, int device,
-			int type, struct snd_compr *compr);
+			int type, const char *id, struct snd_compr *compr);
 
 /* dsp driver callback apis
  * For playback: driver should call snd_compress_fragment_elapsed() to let the
diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c
index 1258e9d..2c52510 100644
--- a/sound/core/compress_offload.c
+++ b/sound/core/compress_offload.c
@@ -945,6 +945,11 @@ static void snd_compress_proc_done(struct snd_compr *compr)
 	snd_info_free_entry(compr->proc_root);
 	compr->proc_root = NULL;
 }
+
+static inline void snd_compress_set_id(struct snd_compr *compr, const char *id)
+{
+	strlcpy(compr->id, id, sizeof(compr->id));
+}
 #else
 static inline int snd_compress_proc_init(struct snd_compr *compr)
 {
@@ -954,6 +959,10 @@ static inline int snd_compress_proc_init(struct snd_compr *compr)
 static inline void snd_compress_proc_done(struct snd_compr *compr)
 {
 }
+
+static inline void snd_compress_set_id(struct snd_compr *compr, const char *id)
+{
+}
 #endif
 
 static int snd_compress_dev_free(struct snd_device *device)
@@ -974,7 +983,7 @@ static int snd_compress_dev_free(struct snd_device *device)
  * @compr: compress device pointer
  */
 int snd_compress_new(struct snd_card *card, int device,
-			int dirn, struct snd_compr *compr)
+			int dirn, const char *id, struct snd_compr *compr)
 {
 	static struct snd_device_ops ops = {
 		.dev_free = snd_compress_dev_free,
@@ -987,6 +996,8 @@ int snd_compress_new(struct snd_card *card, int device,
 	compr->device = device;
 	compr->direction = dirn;
 
+	snd_compress_set_id(compr, id);
+
 	snd_device_initialize(&compr->dev, card);
 	dev_set_name(&compr->dev, "comprC%iD%i", card->number, device);
 
diff --git a/sound/soc/soc-compress.c b/sound/soc/soc-compress.c
index 12a9820..fffbe6f 100644
--- a/sound/soc/soc-compress.c
+++ b/sound/soc/soc-compress.c
@@ -689,7 +689,13 @@ int snd_soc_new_compress(struct snd_soc_pcm_runtime *rtd, int num)
 		compr->ops->copy = soc_compr_copy;
 
 	mutex_init(&compr->lock);
-	ret = snd_compress_new(rtd->card->snd_card, num, direction, compr);
+
+	snprintf(new_name, sizeof(new_name), "%s %s-%d",
+		 rtd->dai_link->stream_name,
+		 rtd->codec_dai->name, num);
+
+	ret = snd_compress_new(rtd->card->snd_card, num, direction,
+				new_name, compr);
 	if (ret < 0) {
 		pr_err("compress asoc: can't create compress for codec %s\n",
 			codec->component.name);
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes
  2015-11-25 13:00 [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes Richard Fitzgerald
  2015-11-25 13:00 ` [PATCH v3 1/2] " Richard Fitzgerald
  2015-11-25 13:00 ` [PATCH v3 2/2] ALSA: compress: Pass id string to snd_compress_new Richard Fitzgerald
@ 2015-11-26  8:23 ` Vinod Koul
  2015-11-30 10:49 ` Takashi Iwai
  3 siblings, 0 replies; 5+ messages in thread
From: Vinod Koul @ 2015-11-26  8:23 UTC (permalink / raw)
  To: Richard Fitzgerald
  Cc: tiwai, broonie, perex, lgirdwood, alsa-devel, linux-kernel,
	patches

On Wed, Nov 25, 2015 at 01:00:22PM +0000, Richard Fitzgerald wrote:
> This updates the compress core code to create an 'info' file under procfs
> for each compressed node, like the PCM core does for PCM nodes.
> 
> Based off Takashi's for-next

Looks good to me..

Acked-by: Vinod Koul <vinod.koul@intel.com>

-- 
~Vinod

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes
  2015-11-25 13:00 [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes Richard Fitzgerald
                   ` (2 preceding siblings ...)
  2015-11-26  8:23 ` [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes Vinod Koul
@ 2015-11-30 10:49 ` Takashi Iwai
  3 siblings, 0 replies; 5+ messages in thread
From: Takashi Iwai @ 2015-11-30 10:49 UTC (permalink / raw)
  To: Richard Fitzgerald
  Cc: vinod.koul, broonie, alsa-devel, lgirdwood, patches, perex,
	linux-kernel

On Wed, 25 Nov 2015 14:00:22 +0100,
Richard Fitzgerald wrote:
> 
> This updates the compress core code to create an 'info' file under procfs
> for each compressed node, like the PCM core does for PCM nodes.
> 
> Based off Takashi's for-next
> 
> Richard Fitzgerald (2):
>   ALSA: compress: Add procfs info file for compressed nodes
>   ALSA: compress: Pass id string to snd_compress_new

I applied both patches now to topic/compress-id branch (and merged
back to for-next branch, too).

Mark, pull topic/compress-id branch to your tree if necessary.


thanks,

Takashi

> 
>  include/sound/compress_driver.h |  7 +++-
>  sound/core/compress_offload.c   | 86 ++++++++++++++++++++++++++++++++++++++++-
>  sound/soc/soc-compress.c        |  8 +++-
>  3 files changed, 97 insertions(+), 4 deletions(-)
> 
> -- 
> 1.9.1
> 
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-11-30 10:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-25 13:00 [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes Richard Fitzgerald
2015-11-25 13:00 ` [PATCH v3 1/2] " Richard Fitzgerald
2015-11-25 13:00 ` [PATCH v3 2/2] ALSA: compress: Pass id string to snd_compress_new Richard Fitzgerald
2015-11-26  8:23 ` [PATCH v3 0/2] ALSA: compress: Add procfs info file for compressed nodes Vinod Koul
2015-11-30 10:49 ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox