-EOPNOTSUPP is not logged as an error by the ASoC subsystem, but -ENODEV is. It also better represents the situation: The operation is currently not supported (because clocks are not enabled and tmds_char_rate is unavailable), but the hardware is present.
Using -EOPNOTSUPP in the audio_prepare callback removes possible repeated warning log lines when HDMI is not connected. Returning -EOPNOTSUPP in the audio_enable callback is also needed as it avoids logging 0-valued ELD errors. When tmds_char_rate is available, the clocks are enabled and the functions will keep returning 0 as before. Signed-off-by: Detlev Casanova <[email protected]> --- drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c index d649a1cf07f5..270c8c47d853 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c @@ -469,8 +469,10 @@ static int dw_hdmi_qp_audio_enable(struct drm_bridge *bridge, { struct dw_hdmi_qp *hdmi = dw_hdmi_qp_from_bridge(bridge); - if (hdmi->tmds_char_rate) - dw_hdmi_qp_mod(hdmi, 0, AVP_DATAPATH_PACKET_AUDIO_SWDISABLE, GLOBAL_SWDISABLE); + if (!hdmi->tmds_char_rate) + return -EOPNOTSUPP; + + dw_hdmi_qp_mod(hdmi, 0, AVP_DATAPATH_PACKET_AUDIO_SWDISABLE, GLOBAL_SWDISABLE); return 0; } @@ -484,7 +486,7 @@ static int dw_hdmi_qp_audio_prepare(struct drm_bridge *bridge, bool ref2stream = false; if (!hdmi->tmds_char_rate) - return -ENODEV; + return -EOPNOTSUPP; if (fmt->bit_clk_provider | fmt->frame_clk_provider) { dev_err(hdmi->dev, "unsupported clock settings\n"); --- base-commit: 1a2ab0feaa23147e347b4d4cb79cb3fc392118eb change-id: 20260519-fix-hdmi-audio-warnings-139062ec00b9 Best regards, -- Detlev Casanova <[email protected]>
