ASoC: fsl: fsl_rpmsg: Register CPU DAI with name of rpmsg channel
Each rpmsg sound card sits on one rpmsg channel. Register CPU DAI with name of rpmsg channel so that ASoC machine driver can easily link CPU DAI with rpmsg channel name. Signed-off-by: Chancel Liu <chancel.liu@nxp.com> Link: https://msgid.link/r/20240311111349.723256-5-chancel.liu@nxp.com Acked-by: Shengjiu Wang <shengjiu.wang@gmail.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
c73524768e
commit
0aa7f5406a
@ -135,7 +135,6 @@ static struct snd_soc_dai_driver fsl_rpmsg_dai = {
|
||||
|
||||
static const struct snd_soc_component_driver fsl_component = {
|
||||
.name = "fsl-rpmsg",
|
||||
.legacy_dai_naming = 1,
|
||||
};
|
||||
|
||||
static const struct fsl_rpmsg_soc_data imx7ulp_data = {
|
||||
@ -190,19 +189,40 @@ MODULE_DEVICE_TABLE(of, fsl_rpmsg_ids);
|
||||
static int fsl_rpmsg_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *np = pdev->dev.of_node;
|
||||
struct snd_soc_dai_driver *dai_drv;
|
||||
const char *dai_name;
|
||||
struct fsl_rpmsg *rpmsg;
|
||||
int ret;
|
||||
|
||||
dai_drv = devm_kzalloc(&pdev->dev, sizeof(struct snd_soc_dai_driver), GFP_KERNEL);
|
||||
if (!dai_drv)
|
||||
return -ENOMEM;
|
||||
memcpy(dai_drv, &fsl_rpmsg_dai, sizeof(fsl_rpmsg_dai));
|
||||
|
||||
rpmsg = devm_kzalloc(&pdev->dev, sizeof(struct fsl_rpmsg), GFP_KERNEL);
|
||||
if (!rpmsg)
|
||||
return -ENOMEM;
|
||||
|
||||
rpmsg->soc_data = of_device_get_match_data(&pdev->dev);
|
||||
|
||||
fsl_rpmsg_dai.playback.rates = rpmsg->soc_data->rates;
|
||||
fsl_rpmsg_dai.capture.rates = rpmsg->soc_data->rates;
|
||||
fsl_rpmsg_dai.playback.formats = rpmsg->soc_data->formats;
|
||||
fsl_rpmsg_dai.capture.formats = rpmsg->soc_data->formats;
|
||||
if (rpmsg->soc_data) {
|
||||
dai_drv->playback.rates = rpmsg->soc_data->rates;
|
||||
dai_drv->capture.rates = rpmsg->soc_data->rates;
|
||||
dai_drv->playback.formats = rpmsg->soc_data->formats;
|
||||
dai_drv->capture.formats = rpmsg->soc_data->formats;
|
||||
}
|
||||
|
||||
/* Use rpmsg channel name as cpu dai name */
|
||||
ret = of_property_read_string(np, "fsl,rpmsg-channel-name", &dai_name);
|
||||
if (ret) {
|
||||
if (ret == -EINVAL) {
|
||||
dai_name = "rpmsg-audio-channel";
|
||||
} else {
|
||||
dev_err(&pdev->dev, "Failed to get rpmsg channel name: %d!\n", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
dai_drv->name = dai_name;
|
||||
|
||||
if (of_property_read_bool(np, "fsl,enable-lpa")) {
|
||||
rpmsg->enable_lpa = 1;
|
||||
@ -236,7 +256,7 @@ static int fsl_rpmsg_probe(struct platform_device *pdev)
|
||||
pm_runtime_enable(&pdev->dev);
|
||||
|
||||
ret = devm_snd_soc_register_component(&pdev->dev, &fsl_component,
|
||||
&fsl_rpmsg_dai, 1);
|
||||
dai_drv, 1);
|
||||
if (ret)
|
||||
goto err_pm_disable;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user