ASoC: qcom: q6dsp: parse Display port tokens
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Thu, 6 Jun 2024 10:49:19 +0000 (11:49 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 18 Jun 2024 13:20:08 +0000 (14:20 +0100)
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Tested-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> # X13s
Link: https://msgid.link/r/20240606104922.114229-2-srinivas.kandagatla@linaro.org
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/qcom/qdsp6/topology.c

index c15d1a2b6dbf263cdd45e2d4e177ee8eedbe5fd1..f4d62ea60baa78cec61134bf650b49b8e307e5f1 100644 (file)
@@ -730,6 +730,29 @@ static int audioreach_widget_i2s_module_load(struct audioreach_module *mod,
        return 0;
 }
 
+static int audioreach_widget_dp_module_load(struct audioreach_module *mod,
+                                       struct snd_soc_tplg_vendor_array *mod_array)
+{
+       struct snd_soc_tplg_vendor_value_elem *mod_elem;
+       int tkn_count = 0;
+
+       mod_elem = mod_array->value;
+
+       while (tkn_count <= (le32_to_cpu(mod_array->num_elems) - 1)) {
+               switch (le32_to_cpu(mod_elem->token)) {
+               case AR_TKN_U32_MODULE_FMT_DATA:
+                       mod->data_format = le32_to_cpu(mod_elem->value);
+                       break;
+               default:
+                       break;
+               }
+               tkn_count++;
+               mod_elem++;
+       }
+
+       return 0;
+}
+
 static int audioreach_widget_load_buffer(struct snd_soc_component *component,
                                         int index, struct snd_soc_dapm_widget *w,
                                         struct snd_soc_tplg_dapm_widget *tplg_w)
@@ -760,6 +783,9 @@ static int audioreach_widget_load_buffer(struct snd_soc_component *component,
        case MODULE_ID_I2S_SOURCE:
                audioreach_widget_i2s_module_load(mod, mod_array);
                break;
+       case MODULE_ID_DISPLAY_PORT_SINK:
+               audioreach_widget_dp_module_load(mod, mod_array);
+               break;
        default:
                return -EINVAL;
        }