From c6c0925ea32d37696da7d71631a4a0c999f2094f Mon Sep 17 00:00:00 2001 From: Rongjun Ying Date: Wed, 17 Jul 2013 14:12:16 +0800 Subject: [PATCH 1/2] ASoC: hdmi-codec: let the driver support HDMI sink Devices like mobilephones, computers are typically used as HDMI sources, but devices like TV, navigators will be HDMI sinks. for auto scenerios, In-Vehicle Infotainment(IVI) can be HDMI sink to display movies from mobilephones. Signed-off-by: Rongjun Ying Signed-off-by: Barry Song Signed-off-by: Mark Brown --- sound/soc/codecs/hdmi.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sound/soc/codecs/hdmi.c b/sound/soc/codecs/hdmi.c index 2bcae2b40c92..f0986b9f1939 100644 --- a/sound/soc/codecs/hdmi.c +++ b/sound/soc/codecs/hdmi.c @@ -37,6 +37,17 @@ static struct snd_soc_dai_driver hdmi_codec_dai = { .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE, }, + .capture = { + .channels_min = 2, + .channels_max = 2, + .rates = SNDRV_PCM_RATE_32000 | + SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000 | + SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000 | + SNDRV_PCM_RATE_176400 | SNDRV_PCM_RATE_192000, + .formats = SNDRV_PCM_FMTBIT_S16_LE | + SNDRV_PCM_FMTBIT_S24_LE, + }, + }; static int hdmi_codec_probe(struct platform_device *pdev) From c34e51b12751c3e81c752b385f02a97bf3f862da Mon Sep 17 00:00:00 2001 From: Mark Brown Date: Mon, 19 Aug 2013 12:17:36 +0100 Subject: [PATCH 2/2] ASoC: hdmi: Provide stub DAPM integration Ensure continued operation with DAPM being mandatory. Signed-off-by: Mark Brown --- sound/soc/codecs/hdmi.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/sound/soc/codecs/hdmi.c b/sound/soc/codecs/hdmi.c index f0986b9f1939..68342b121c96 100644 --- a/sound/soc/codecs/hdmi.c +++ b/sound/soc/codecs/hdmi.c @@ -23,11 +23,20 @@ #define DRV_NAME "hdmi-audio-codec" -static struct snd_soc_codec_driver hdmi_codec; +static const struct snd_soc_dapm_widget hdmi_widgets[] = { + SND_SOC_DAPM_INPUT("RX"), + SND_SOC_DAPM_OUTPUT("TX"), +}; + +static const struct snd_soc_dapm_route hdmi_routes[] = { + { "Capture", NULL, "RX" }, + { "TX", NULL, "Playback" }, +}; static struct snd_soc_dai_driver hdmi_codec_dai = { .name = "hdmi-hifi", .playback = { + .stream_name = "Playback", .channels_min = 2, .channels_max = 8, .rates = SNDRV_PCM_RATE_32000 | @@ -38,6 +47,7 @@ static struct snd_soc_dai_driver hdmi_codec_dai = { SNDRV_PCM_FMTBIT_S24_LE, }, .capture = { + .stream_name = "Capture", .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_32000 | @@ -50,6 +60,13 @@ static struct snd_soc_dai_driver hdmi_codec_dai = { }; +static struct snd_soc_codec_driver hdmi_codec = { + .dapm_widgets = hdmi_widgets, + .num_dapm_widgets = ARRAY_SIZE(hdmi_widgets), + .dapm_routes = hdmi_routes, + .num_dapm_routes = ARRAY_SIZE(hdmi_routes), +}; + static int hdmi_codec_probe(struct platform_device *pdev) { return snd_soc_register_codec(&pdev->dev, &hdmi_codec,