@@ -26,15 +26,13 @@
#include <sound/soc.h>
#include <asm/mach-types.h>
#include <video/omapdss.h>
+#include <sound/omap-hdmi-card-pdata.h>
#define DRV_NAME "omap-hdmi-audio"
static struct snd_soc_dai_link omap_hdmi_dai = {
.name = "HDMI",
.stream_name = "HDMI",
- .cpu_dai_name = "omap-hdmi-audio-dai",
- .platform_name = "omap-hdmi-audio-dai",
- .codec_name = "hdmi-audio-codec",
.codec_dai_name = "hdmi-hifi",
};
@@ -47,14 +45,28 @@ static struct snd_soc_card snd_soc_omap_hdmi = {
static int omap_hdmi_probe(struct platform_device *pdev)
{
+ struct device *dev = &pdev->dev;
+ struct asoc_omap_hdmi_card_pdata *pdata = dev->platform_data;
struct snd_soc_card *card = &snd_soc_omap_hdmi;
int ret;
+ if (!pdata) {
+ dev_err(dev, "No platform data, bailing out\n");
+ return -ENODEV;
+ }
+
card->dev = &pdev->dev;
+ omap_hdmi_dai.cpu_dai_name =
+ devm_kstrdup(dev, pdata->cpudai_name, GFP_KERNEL);
+ omap_hdmi_dai.platform_name =
+ devm_kstrdup(dev, pdata->cpudai_name, GFP_KERNEL);
+ omap_hdmi_dai.codec_name =
+ devm_kstrdup(dev, pdata->codec_name, GFP_KERNEL);
+
ret = snd_soc_register_card(card);
if (ret) {
- dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret);
+ dev_err(dev, "snd_soc_register_card failed (%d)\n", ret);
card->dev = NULL;
return ret;
}
The old OMAP HDMI audio registering from arch/arm/mach-omap2/devices.c was broken. The new approach is to register the drivers from OMAPDSS HDMI driver. The commit does the necessary changes for this approach. Signed-off-by: Jyri Sarha <jsarha@ti.com> --- sound/soc/omap/omap-hdmi-card.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)