From: Daniel Baluta daniel.baluta@nxp.com
ACPI creates tables with information about the machine driver. With DT there is no need for such tables because we can directly get all the information needed from DT file.
This patch introduces machine driver property inside dsp node.
Notice that sof_pdata->machine_drv_name is the OF equivalent of sof_pdata->machine (snd_soc_acpi_mach). We don't need more information than machine_drv_name for OF platforms (for now).
Signed-off-by: Daniel Baluta daniel.baluta@nxp.com --- include/sound/sof.h | 1 + sound/soc/sof/pcm.c | 5 ++++- sound/soc/sof/sof-audio.c | 2 +- sound/soc/sof/sof-of-dev.c | 5 +++++ 4 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/include/sound/sof.h b/include/sound/sof.h index 23b374311d16..191607945432 100644 --- a/include/sound/sof.h +++ b/include/sound/sof.h @@ -51,6 +51,7 @@ struct snd_sof_pdata { /* machine */ struct platform_device *pdev_mach; const struct snd_soc_acpi_mach *machine; + const char *machine_drv_name; /* machine driver name, set only for OF case */
void *hw_pdata; }; diff --git a/sound/soc/sof/pcm.c b/sound/soc/sof/pcm.c index 27244dc043ce..47def9240e7c 100644 --- a/sound/soc/sof/pcm.c +++ b/sound/soc/sof/pcm.c @@ -885,7 +885,10 @@ void snd_sof_new_platform_drv(struct snd_sof_dev *sdev) struct snd_sof_pdata *plat_data = sdev->pdata; const char *drv_name;
- drv_name = plat_data->machine->drv_name; + if (plat_data->machine) + drv_name = plat_data->machine->drv_name; + else + drv_name = plat_data->machine_drv_name;
pd->name = "sof-audio-component"; pd->probe = sof_pcm_probe; diff --git a/sound/soc/sof/sof-audio.c b/sound/soc/sof/sof-audio.c index 10aa0d8ea186..aebfa5150fa1 100644 --- a/sound/soc/sof/sof-audio.c +++ b/sound/soc/sof/sof-audio.c @@ -884,7 +884,7 @@ int sof_machine_check(struct snd_sof_dev *sdev)
/* find machine */ snd_sof_machine_select(sdev); - if (sof_pdata->machine) { + if (sof_pdata->machine || sof_pdata->machine_drv_name) { snd_sof_set_mach_params(sof_pdata->machine, sdev); return 0; } diff --git a/sound/soc/sof/sof-of-dev.c b/sound/soc/sof/sof-of-dev.c index 770935191823..18bfe5b78966 100644 --- a/sound/soc/sof/sof-of-dev.c +++ b/sound/soc/sof/sof-of-dev.c @@ -78,6 +78,11 @@ int sof_of_parse(struct platform_device *pdev) if (ret < 0) return ret;
+ ret = of_property_read_string(np, "machine-drv-name", + &sof_pdata->machine_drv_name); + if (ret < 0) + return ret; + return 0; }