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);