ASoC: Intel: hdac_hdmi: Limit sampling rates at dai creation
authorYong Zhi <yong.zhi@intel.com>
Tue, 7 Aug 2018 17:19:16 +0000 (12:19 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Nov 2019 16:59:48 +0000 (17:59 +0100)
[ Upstream commit 3b857472f34faa7d11001afa5e158833812c98d7 ]

Playback of 44.1Khz contents with HDMI plugged returns
"Invalid pipe config" because HDMI paths in the FW
topology are configured to operate at 48Khz.

This patch filters out sampling rates not supported
at hdac_hdmi_create_dais() to let user space SRC
to do the converting.

Signed-off-by: Yong Zhi <yong.zhi@intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/codecs/hdac_hdmi.c

index e824d47cc22b0fd3cc2cfe8de4491530cd182bd5..1c3626347e12b561549bf8276851f3c6cd399daf 100644 (file)
@@ -1408,6 +1408,12 @@ static int hdac_hdmi_create_dais(struct hdac_device *hdac,
                if (ret)
                        return ret;
 
+               /* Filter out 44.1, 88.2 and 176.4Khz */
+               rates &= ~(SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_88200 |
+                          SNDRV_PCM_RATE_176400);
+               if (!rates)
+                       return -EINVAL;
+
                sprintf(dai_name, "intel-hdmi-hifi%d", i+1);
                hdmi_dais[i].name = devm_kstrdup(&hdac->dev,
                                        dai_name, GFP_KERNEL);