Re: [PATCH v2] drm/display: add hw_params callback function to drm_connector_hdmi_audio_ops
From: Luca Weiss
Date: Tue Apr 14 2026 - 06:24:17 EST
Hi all,
On Fri Oct 3, 2025 at 4:42 PM CEST, Luca Weiss wrote:
> Hi Jianfeng Liu,
>
> On Thu Sep 25, 2025 at 6:05 AM CEST, Jianfeng Liu wrote:
>> After reusing drm_hdmi_audio_* helpers and drm_bridge_connector
>> integration in drm/msm/dp, we have dropped msm_dp_audio_hw_params and
>> use msm_dp_audio_prepare instead. While userspace is still calling
>> hw_params to do audio initialization, and we get the following errors:
>>
>> q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: q6apm_lpass_dai_prepare() started
>> q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: q6apm_lpass_dai_prepare() started
>> q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: q6apm_lpass_dai_prepare() started
>> hdmi-audio-codec hdmi-audio-codec.0.auto: hdmi_codec_hw_params() started
>> q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: q6apm_lpass_dai_prepare() started
>> qcom-apm gprsvc:service:2:1: Error (1) Processing 0x01001002 cmd
>> qcom-apm gprsvc:service:2:1: DSP returned error[1001002] 1
>> q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: Failed to start APM port 104
>> q6apm-lpass-dais 3700000.remoteproc:glink-edge:gpr:service@1:bedais: ASoC error (-22): at snd_soc_dai_prepare() on DISPLAY_PORT_RX_0
>> MultiMedia2 Playback: ASoC error (-22): at dpcm_run_update_startup() on MultiMedia2 Playback
>>
>> msm_dp_audio_prepare is not called because hdmi-codec driver only checks
>> and runs hw_params before q6apm_lpass_dai_prepare(). This commit will
>> add hw_params callback same as drm_connector_hdmi_audio_prepare, so that
>> hdmi-codec driver can work with userspace alsa.
>
> This also fixes DP audio regression on qcm6490-fairphone-fp5 (using
> Elite audio architecture)
>
> [ 133.986865] qcom-q6afe aprsvc:service:4:4: AFE enable for port 0x6020 failed -110
> [ 133.986878] q6afe-dai 3700000.remoteproc:glink-edge:apr:service@4:dais: fail to start AFE port 68
> [ 133.986881] q6afe-dai 3700000.remoteproc:glink-edge:apr:service@4:dais: ASoC error (-110): at snd_soc_dai_prepare() on DISPLAY_PORT_RX_0
> [ 134.045112] qcom-q6afe aprsvc:service:4:4: cmd = 0x100e5 returned error = 0x9
> [ 134.045192] qcom-q6afe aprsvc:service:4:4: DSP returned error[9]
> [ 134.045214] qcom-q6afe aprsvc:service:4:4: AFE enable for port 0x6020 failed -22
> [ 134.045231] q6afe-dai 3700000.remoteproc:glink-edge:apr:service@4:dais: fail to start AFE port 68
> [ 134.045243] q6afe-dai 3700000.remoteproc:glink-edge:apr:service@4:dais: ASoC error (-22): at snd_soc_dai_prepare() on DISPLAY_PORT_RX_0
>
> Tested-by: Luca Weiss <luca.weiss@xxxxxxxxxxxxx> # qcm6490-fairphone-fp5
>
> And I guess, even though I reported it after this patch was sent:
>
> Closes: https://lore.kernel.org/linux-arm-msm/DD8PK8AI24P7.YK0OGVYC0QFM@xxxxxxxxxxxxx/
Is there any progress on resolving this issue? I'm still carrying this
patch in my tree.
Shall I send a revert of "drm/msm/dp: reuse generic HDMI codec
implementation" to at least temporarily get this working again until a
more proper fix can be made?
Regards
Luca