Merge series "ASoC: qdsp6: fix default FE dais and routings." from Srinivas Kandagatla <srinivas.kandagatla@linaro.org>:
QDSP6 Frontend dais can be configured to work in rx or tx or both rx/tx mode, however the default routing do not honour this DT configuration making sound card fail to probe. FE dais are also not fully honouring device tree configuration. Fix both of them. Originally issue was reported by Vinod Koul Srinivas Kandagatla (2): ASoC: qdsp6: q6asm-dai: only enable dais from device tree ASoC: qdsp6: q6routing: remove default routing sound/soc/qcom/qdsp6/q6asm-dai.c | 30 +++++++++++++++++++++++------- sound/soc/qcom/qdsp6/q6routing.c | 19 ------------------- 2 files changed, 23 insertions(+), 26 deletions(-) -- 2.21.0
This commit is contained in:
commit
6187509ba5
|
@ -69,6 +69,8 @@ struct q6asm_dai_rtd {
|
|||
};
|
||||
|
||||
struct q6asm_dai_data {
|
||||
struct snd_soc_dai_driver *dais;
|
||||
int num_dais;
|
||||
long long int sid;
|
||||
};
|
||||
|
||||
|
@ -889,7 +891,7 @@ static const struct snd_soc_component_driver q6asm_fe_dai_component = {
|
|||
.compr_ops = &q6asm_dai_compr_ops,
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_driver q6asm_fe_dais[] = {
|
||||
static struct snd_soc_dai_driver q6asm_fe_dais_template[] = {
|
||||
Q6ASM_FEDAI_DRIVER(1),
|
||||
Q6ASM_FEDAI_DRIVER(2),
|
||||
Q6ASM_FEDAI_DRIVER(3),
|
||||
|
@ -903,10 +905,22 @@ static struct snd_soc_dai_driver q6asm_fe_dais[] = {
|
|||
static int of_q6asm_parse_dai_data(struct device *dev,
|
||||
struct q6asm_dai_data *pdata)
|
||||
{
|
||||
static struct snd_soc_dai_driver *dai_drv;
|
||||
struct snd_soc_dai_driver *dai_drv;
|
||||
struct snd_soc_pcm_stream empty_stream;
|
||||
struct device_node *node;
|
||||
int ret, id, dir;
|
||||
int ret, id, dir, idx = 0;
|
||||
|
||||
|
||||
pdata->num_dais = of_get_child_count(dev->of_node);
|
||||
if (!pdata->num_dais) {
|
||||
dev_err(dev, "No dais found in DT\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pdata->dais = devm_kcalloc(dev, pdata->num_dais, sizeof(*dai_drv),
|
||||
GFP_KERNEL);
|
||||
if (!pdata->dais)
|
||||
return -ENOMEM;
|
||||
|
||||
memset(&empty_stream, 0, sizeof(empty_stream));
|
||||
|
||||
|
@ -917,7 +931,8 @@ static int of_q6asm_parse_dai_data(struct device *dev,
|
|||
continue;
|
||||
}
|
||||
|
||||
dai_drv = &q6asm_fe_dais[id];
|
||||
dai_drv = &pdata->dais[idx++];
|
||||
*dai_drv = q6asm_fe_dais_template[id];
|
||||
|
||||
ret = of_property_read_u32(node, "direction", &dir);
|
||||
if (ret)
|
||||
|
@ -955,11 +970,12 @@ static int q6asm_dai_probe(struct platform_device *pdev)
|
|||
|
||||
dev_set_drvdata(dev, pdata);
|
||||
|
||||
of_q6asm_parse_dai_data(dev, pdata);
|
||||
rc = of_q6asm_parse_dai_data(dev, pdata);
|
||||
if (rc)
|
||||
return rc;
|
||||
|
||||
return devm_snd_soc_register_component(dev, &q6asm_fe_dai_component,
|
||||
q6asm_fe_dais,
|
||||
ARRAY_SIZE(q6asm_fe_dais));
|
||||
pdata->dais, pdata->num_dais);
|
||||
}
|
||||
|
||||
static const struct of_device_id q6asm_dai_device_id[] = {
|
||||
|
|
|
@ -918,25 +918,6 @@ static const struct snd_soc_dapm_route intercon[] = {
|
|||
{"MM_UL6", NULL, "MultiMedia6 Mixer"},
|
||||
{"MM_UL7", NULL, "MultiMedia7 Mixer"},
|
||||
{"MM_UL8", NULL, "MultiMedia8 Mixer"},
|
||||
|
||||
{"MM_DL1", NULL, "MultiMedia1 Playback" },
|
||||
{"MM_DL2", NULL, "MultiMedia2 Playback" },
|
||||
{"MM_DL3", NULL, "MultiMedia3 Playback" },
|
||||
{"MM_DL4", NULL, "MultiMedia4 Playback" },
|
||||
{"MM_DL5", NULL, "MultiMedia5 Playback" },
|
||||
{"MM_DL6", NULL, "MultiMedia6 Playback" },
|
||||
{"MM_DL7", NULL, "MultiMedia7 Playback" },
|
||||
{"MM_DL8", NULL, "MultiMedia8 Playback" },
|
||||
|
||||
{"MultiMedia1 Capture", NULL, "MM_UL1"},
|
||||
{"MultiMedia2 Capture", NULL, "MM_UL2"},
|
||||
{"MultiMedia3 Capture", NULL, "MM_UL3"},
|
||||
{"MultiMedia4 Capture", NULL, "MM_UL4"},
|
||||
{"MultiMedia5 Capture", NULL, "MM_UL5"},
|
||||
{"MultiMedia6 Capture", NULL, "MM_UL6"},
|
||||
{"MultiMedia7 Capture", NULL, "MM_UL7"},
|
||||
{"MultiMedia8 Capture", NULL, "MM_UL8"},
|
||||
|
||||
};
|
||||
|
||||
static int routing_hw_params(struct snd_soc_component *component,
|
||||
|
|
Loading…
Reference in New Issue