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

Commit 5b2688a5 authored by Vedang Patel's avatar Vedang Patel Committed by Mark Brown
Browse files

ASoC: topology: ABI - Add PCM Support and bump ABI version to 4



The struct snd_soc_tplg_pcm_dai is renamed to snd_soc_tplg_pcm.
This struct will now be used to handle data related to PCMs
(FE DAI & DAI links). It's not for BE, because BE DAI mappings will be
provided by ACPI/FDT data.

Remove the unused struct snd_soc_tplg_pcm_cfg_caps. We are using
snd_soc_tplg_stream and snd_soc_stream_caps instead.

Bump ABI version to 4.

Signed-off-by: default avatarVedang Patel <vedang.patel@intel.com>
Signed-off-by: default avatarMengdong Lin <mengdong.lin@intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 6ff33f39
Loading
Loading
Loading
Loading
+15 −16
Original line number Diff line number Diff line
@@ -83,7 +83,7 @@
#define SND_SOC_TPLG_NUM_TEXTS		16

/* ABI version */
#define SND_SOC_TPLG_ABI_VERSION	0x3
#define SND_SOC_TPLG_ABI_VERSION	0x4

/* Max size of TLV data */
#define SND_SOC_TPLG_TLV_SIZE		32
@@ -378,30 +378,29 @@ struct snd_soc_tplg_dapm_widget {
	 */
} __attribute__((packed));

struct snd_soc_tplg_pcm_cfg_caps {
	struct snd_soc_tplg_stream_caps caps;
	struct snd_soc_tplg_stream_config configs[SND_SOC_TPLG_STREAM_CONFIG_MAX];
	__le32 num_configs;	/* number of configs */
} __attribute__((packed));

/*
 * Describes SW/FW specific features of PCM or DAI link.
 * Describes SW/FW specific features of PCM (FE DAI & DAI link).
 *
 * File block representation for PCM/DAI-Link :-
 * File block representation for PCM :-
 * +-----------------------------------+-----+
 * | struct snd_soc_tplg_hdr           |  1  |
 * +-----------------------------------+-----+
 * | struct snd_soc_tplg_dapm_pcm_dai  |  N  |
 * | struct snd_soc_tplg_pcm           |  N  |
 * +-----------------------------------+-----+
 */
struct snd_soc_tplg_pcm_dai {
struct snd_soc_tplg_pcm {
	__le32 size;		/* in bytes of this structure */
	char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
	__le32 id;			/* unique ID - used to match */
	char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
	char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
	__le32 pcm_id;		/* unique ID - used to match */
	__le32 dai_id;		/* unique ID - used to match */
	__le32 playback;	/* supports playback mode */
	__le32 capture;		/* supports capture mode */
	__le32 compress;	/* 1 = compressed; 0 = PCM */
	struct snd_soc_tplg_pcm_cfg_caps capconf[2];	/* capabilities and configs */
	struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* for DAI link */
	__le32 num_streams;	/* number of streams */
	struct snd_soc_tplg_stream_caps caps[2]; /* playback and capture for DAI */
} __attribute__((packed));

#endif
+2 −2
Original line number Diff line number Diff line
@@ -1558,7 +1558,7 @@ static int soc_tplg_pcm_dai_elems_load(struct soc_tplg *tplg,
	pcm_dai = (struct snd_soc_tplg_pcm_dai *)tplg->pos;

	if (soc_tplg_check_elem_count(tplg,
		sizeof(struct snd_soc_tplg_pcm_dai), count,
		sizeof(struct snd_soc_tplg_pcm), count,
		hdr->payload_size, "PCM DAI")) {
		dev_err(tplg->dev, "ASoC: invalid count %d for PCM DAI elems\n",
			count);
@@ -1566,7 +1566,7 @@ static int soc_tplg_pcm_dai_elems_load(struct soc_tplg *tplg,
	}

	dev_dbg(tplg->dev, "ASoC: adding %d PCM DAIs\n", count);
	tplg->pos += sizeof(struct snd_soc_tplg_pcm_dai) * count;
	tplg->pos += sizeof(struct snd_soc_tplg_pcm) * count;

	dobj = kzalloc(sizeof(struct snd_soc_dobj), GFP_KERNEL);
	if (dobj == NULL)