Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 731f1ab2 authored by Sebastien Guiriec's avatar Sebastien Guiriec Committed by Mark Brown
Browse files

ASoC: core: add platform DAPM debugfs support



Allow platform widgets to be visible in debugfs like codec widgets.

Signed-off-by: default avatarLiam Girdwood <lrg@ti.com>
Signed-off-by: default avatarMark Brown <broonie@opensource.wolfsonmicro.com>
parent 48a8c394
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -706,6 +706,11 @@ struct snd_soc_platform {
	struct list_head card_list;

	struct snd_soc_dapm_context dapm;

#ifdef CONFIG_DEBUG_FS
	struct dentry *debugfs_platform_root;
	struct dentry *debugfs_dapm;
#endif
};

struct snd_soc_dai_link {
+32 −0
Original line number Diff line number Diff line
@@ -300,6 +300,27 @@ static void soc_cleanup_codec_debugfs(struct snd_soc_codec *codec)
	debugfs_remove_recursive(codec->debugfs_codec_root);
}

static void soc_init_platform_debugfs(struct snd_soc_platform *platform)
{
	struct dentry *debugfs_card_root = platform->card->debugfs_card_root;

	platform->debugfs_platform_root = debugfs_create_dir(platform->name,
						       debugfs_card_root);
	if (!platform->debugfs_platform_root) {
		dev_warn(platform->dev,
			"Failed to create platform debugfs directory\n");
		return;
	}

	snd_soc_dapm_debugfs_init(&platform->dapm,
		platform->debugfs_platform_root);
}

static void soc_cleanup_platform_debugfs(struct snd_soc_platform *platform)
{
	debugfs_remove_recursive(platform->debugfs_platform_root);
}

static ssize_t codec_list_read_file(struct file *file, char __user *user_buf,
				    size_t count, loff_t *ppos)
{
@@ -433,6 +454,14 @@ static inline void soc_cleanup_codec_debugfs(struct snd_soc_codec *codec)
{
}

static inline void soc_init_platform_debugfs(struct snd_soc_platform *platform)
{
}

static inline void soc_cleanup_platform_debugfs(struct snd_soc_platform *platform)
{
}

static inline void soc_init_card_debugfs(struct snd_soc_card *card)
{
}
@@ -920,6 +949,7 @@ static void soc_remove_dai_link(struct snd_soc_card *card, int num, int order)
		/* Make sure all DAPM widgets are freed */
		snd_soc_dapm_free(&platform->dapm);

		soc_cleanup_platform_debugfs(platform);
		platform->probed = 0;
		list_del(&platform->card_list);
		module_put(platform->dev->driver->owner);
@@ -1037,6 +1067,8 @@ static int soc_probe_platform(struct snd_soc_card *card,
	if (!try_module_get(platform->dev->driver->owner))
		return -ENODEV;

	soc_init_platform_debugfs(platform);

	if (driver->dapm_widgets)
		snd_soc_dapm_new_controls(&platform->dapm,
			driver->dapm_widgets, driver->num_dapm_widgets);