ASoC: qdsp6: audioreach: topology use idr_alloc_u32
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Thu, 27 Oct 2022 10:27:02 +0000 (11:27 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 28 Oct 2022 16:19:18 +0000 (17:19 +0100)
SubGraph and Module Instance ids take 32 bits, so use idr_alloc_u32
instead of idr_alloc to able to accommodate valid ranges.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Link: https://lore.kernel.org/r/20221027102710.21407-2-srinivas.kandagatla@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/qdsp6/topology.c

index bd649c2..9a3d9e0 100644 (file)
@@ -44,7 +44,7 @@ static struct audioreach_graph_info *audioreach_tplg_alloc_graph_info(struct q6a
        INIT_LIST_HEAD(&info->sg_list);
 
        mutex_lock(&apm->lock);
-       ret = idr_alloc(&apm->graph_info_idr, info, graph_id, graph_id + 1, GFP_KERNEL);
+       ret = idr_alloc_u32(&apm->graph_info_idr, info, &graph_id, graph_id, GFP_KERNEL);
        mutex_unlock(&apm->lock);
 
        if (ret < 0) {
@@ -53,7 +53,7 @@ static struct audioreach_graph_info *audioreach_tplg_alloc_graph_info(struct q6a
                return ERR_PTR(ret);
        }
 
-       info->id = ret;
+       info->id = graph_id;
 
        return info;
 }
@@ -94,7 +94,7 @@ static struct audioreach_sub_graph *audioreach_tplg_alloc_sub_graph(struct q6apm
        INIT_LIST_HEAD(&sg->container_list);
 
        mutex_lock(&apm->lock);
-       ret = idr_alloc(&apm->sub_graphs_idr, sg, sub_graph_id, sub_graph_id + 1, GFP_KERNEL);
+       ret = idr_alloc_u32(&apm->sub_graphs_idr, sg, &sub_graph_id, sub_graph_id, GFP_KERNEL);
        mutex_unlock(&apm->lock);
 
        if (ret < 0) {
@@ -103,7 +103,7 @@ static struct audioreach_sub_graph *audioreach_tplg_alloc_sub_graph(struct q6apm
                return ERR_PTR(ret);
        }
 
-       sg->sub_graph_id = ret;
+       sg->sub_graph_id = sub_graph_id;
 
        return sg;
 }
@@ -136,7 +136,7 @@ static struct audioreach_container *audioreach_tplg_alloc_container(struct q6apm
        INIT_LIST_HEAD(&cont->modules_list);
 
        mutex_lock(&apm->lock);
-       ret = idr_alloc(&apm->containers_idr, cont, container_id, container_id + 1, GFP_KERNEL);
+       ret = idr_alloc_u32(&apm->containers_idr, cont, &container_id, container_id, GFP_KERNEL);
        mutex_unlock(&apm->lock);
 
        if (ret < 0) {
@@ -145,7 +145,7 @@ static struct audioreach_container *audioreach_tplg_alloc_container(struct q6apm
                return ERR_PTR(ret);
        }
 
-       cont->container_id = ret;
+       cont->container_id = container_id;
        cont->sub_graph = sg;
        /* add to container list */
        list_add_tail(&cont->node, &sg->container_list);
@@ -181,7 +181,7 @@ static struct audioreach_module *audioreach_tplg_alloc_module(struct q6apm *apm,
                                       AR_MODULE_DYNAMIC_INSTANCE_ID_START,
                                       AR_MODULE_DYNAMIC_INSTANCE_ID_END, GFP_KERNEL);
        } else {
-               ret = idr_alloc(&apm->modules_idr, mod, module_id, module_id + 1, GFP_KERNEL);
+               ret = idr_alloc_u32(&apm->modules_idr, mod, &module_id, module_id, GFP_KERNEL);
        }
        mutex_unlock(&apm->lock);
 
@@ -191,7 +191,7 @@ static struct audioreach_module *audioreach_tplg_alloc_module(struct q6apm *apm,
                return ERR_PTR(ret);
        }
 
-       mod->instance_id = ret;
+       mod->instance_id = module_id;
        /* add to module list */
        list_add_tail(&mod->node, &cont->modules_list);
        mod->container = cont;