[alsa-devel] [PATCH] ASoC: Intel: hdac_hdmi: Add sampling frequencies constraint
Takashi Iwai
tiwai at suse.de
Tue Aug 7 17:22:50 CEST 2018
On Tue, 07 Aug 2018 16:56:05 +0200,
Yong Zhi wrote:
>
> Playback of 44.1Khz contents with HDMI plugged returns
> "Invalid pipe config".
Why? Is it a limitation of i915 graphics side?
If it's a generic issue, we'd need to fix also in the legacy HDMI
driver, too.
(snip)
....
> +
> + sad_rates = sad_sample_rates_lpcm(sad);
> + /* Filter out 44.1, 88.2 and 176.4Khz */
> + for (j = 0; j < 7; j += 2)
> + if (sad_rates & BIT(j))
> + rates |= cea_sampling_freqs[j];
> +
> + snd_pcm_hw_constraint_mask64(runtime,
> + SNDRV_PCM_HW_PARAM_RATE,
> + rates);
The whole changes are too complex. You don't have to reduce the list
dynamically, but just need to tell the all possible rates with a
static array.
Or, even simpler, just filter the rates bits in
hdac_hdmi_create_dais() from the beginning like below.
thanks,
Takashi
--- a/sound/soc/codecs/hdac_hdmi.c
+++ b/sound/soc/codecs/hdac_hdmi.c
@@ -1410,6 +1410,12 @@ static int hdac_hdmi_create_dais(struct hdac_device *hdev,
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(&hdev->dev,
dai_name, GFP_KERNEL);
More information about the Alsa-devel
mailing list