[PATCH v3 16/20] ASoC: qdsp6: audioreach: add topology support
Srinivas Kandagatla
srinivas.kandagatla at linaro.org
Tue Aug 3 16:47:48 CEST 2021
Thanks Amadeusz for quick review,
On 03/08/2021 15:21, Amadeusz Sławiński wrote:
> On 8/3/2021 2:54 PM, Srinivas Kandagatla wrote:
>> Add ASoC topology support in audioreach
>>
>> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla at linaro.org>
>> ---
>
> ...
>
>> +
>> +/* DAI Tokens */
>> +#define AR_TKN_DAI_INDEX 1
>> +/* SUB GRAPH Tokens */
>> +#define AR_TKN_U32_SUB_GRAPH_INSTANCE_ID 2
>> +#define AR_TKN_U32_SUB_GRAPH_PERF_MODE 3
>> +#define AR_TKN_U32_SUB_GRAPH_DIRECTION 4
>> +#define AR_TKN_U32_SUB_GRAPH_SCENARIO_ID 5
>> +
>> +/* Container Tokens */
>> +#define AR_TKN_U32_CONAINER_INSTANCE_ID 100
>> +#define AR_TKN_U32_CONAINER_CAPABILITY_ID 101
>> +#define AR_TKN_U32_CONAINER_STACK_SIZE 102
>> +#define AR_TKN_U32_CONAINER_GRAPH_POS 103
>> +#define AR_TKN_U32_CONAINER_PROC_DOMAIN 104
>
> typo in all of the above and in comment documenting them
> AR_TKN_U32_CONTAINER_ *
>
.. Not sure how i missed this one.. Its not fixed.
>
>> #define APM_AUDIO_DRV_NAME "q6apm-audio"
>> diff --git a/sound/soc/qcom/qdsp6/topology.c
>> b/sound/soc/qcom/qdsp6/topology.c
>> new file mode 100644
>> index 000000000000..409e19486d57
>> --- /dev/null
>> +++ b/sound/soc/qcom/qdsp6/topology.c
>> @@ -0,0 +1,1114 @@
>> +// SPDX-License-Identifier: GPL-2.0
>> +// Copyright (c) 2020, Linaro Limited
>> +
>> +#include <sound/soc.h>
>> +#include <sound/soc-dapm.h>
>> +#include <sound/pcm.h>
>> +#include <sound/control.h>
>> +#include <sound/asound.h>
>> +#include <linux/firmware.h>
>> +#include <sound/soc-topology.h>
>> +#include <sound/soc-dpcm.h>
>> +#include <uapi/sound/snd_ar_tokens.h>
>> +#include <linux/kernel.h>
>> +#include <linux/wait.h>
>> +#include "q6apm.h"
>> +#include "audioreach.h"
>> +
>> +struct snd_ar_control {
>> + u32 sgid; /* Sub Graph ID */
>> + struct snd_soc_component *scomp;
>> +};
>> +
>> +static struct audioreach_graph_info *audioreach_tplg_alloc_graph_info(
>> + struct q6apm *apm, uint32_t graph_id,
>> + bool *found)
>> +{
>> + struct audioreach_graph_info *info;
>> + int ret;
>> +
>> + spin_lock(&apm->lock);
>> + info = idr_find(&apm->graph_info_idr, graph_id);
>> + spin_unlock(&apm->lock);
>> +
>> + if (info) {
>> + *found = true;
>> + return info;
>> + }
>> +
>> + *found = false;
>> + info = kzalloc(sizeof(*info), GFP_KERNEL);
>> + if (!info)
>> + return ERR_PTR(-ENOMEM);
>> +
>> +
>> + INIT_LIST_HEAD(&info->sg_list);
>> + spin_lock_init(&info->sg_list_lock);
>> +
>> + spin_lock(&apm->lock);
>> + ret = idr_alloc(&apm->graph_info_idr, info, graph_id,
>> + graph_id + 1, GFP_ATOMIC);
>> + spin_unlock(&apm->lock);
>> +
>> + if (ret < 0) {
>> + dev_err(apm->dev, "Failed to allocate Graph ID (%x)\n",
>> graph_id);
>> + return ERR_PTR(ret);
>> + }
> need to free info here?
All such instances are now fixed, thanks for spotting these!
--srini
More information about the Alsa-devel
mailing list