[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