| From 009954eb06a401aa7b522e499f6c9eda75044757 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 13 Jun 2025 17:41:04 +0100 |
| Subject: ASoC: hdac_hdmi: Rate limit logging on connection and disconnection |
| |
| From: Mark Brown <broonie@kernel.org> |
| |
| [ Upstream commit c4ca928a6db1593802cd945f075a7e21dd0430c1 ] |
| |
| We currently log parse failures for ELD data and some disconnection events |
| as errors without rate limiting. These log messages can be triggered very |
| frequently in some situations, especially ELD parsing when there is nothing |
| connected to a HDMI port which will generate: |
| |
| hdmi-audio-codec hdmi-audio-codec.1.auto: HDMI: Unknown ELD version 0 |
| |
| While there's doubtless work that could be done on reducing the number of |
| connection notification callbacks it's possible these may be legitimately |
| generated by poor quality physical connections so let's use rate limiting |
| to mitigate the log spam for the parse errors and lower the severity for |
| disconnect logging to debug level. |
| |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Link: https://patch.msgid.link/20250613-asoc-hdmi-eld-logging-v1-1-76d64154d969@kernel.org |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/soc/codecs/hdac_hdmi.c | 10 ++++++---- |
| 1 file changed, 6 insertions(+), 4 deletions(-) |
| |
| diff --git a/sound/soc/codecs/hdac_hdmi.c b/sound/soc/codecs/hdac_hdmi.c |
| index d8e83150ea28..90baca4c2b4d 100644 |
| --- a/sound/soc/codecs/hdac_hdmi.c |
| +++ b/sound/soc/codecs/hdac_hdmi.c |
| @@ -1230,7 +1230,8 @@ static int hdac_hdmi_parse_eld(struct hdac_device *hdev, |
| >> DRM_ELD_VER_SHIFT; |
| |
| if (ver != ELD_VER_CEA_861D && ver != ELD_VER_PARTIAL) { |
| - dev_err(&hdev->dev, "HDMI: Unknown ELD version %d\n", ver); |
| + dev_err_ratelimited(&hdev->dev, |
| + "HDMI: Unknown ELD version %d\n", ver); |
| return -EINVAL; |
| } |
| |
| @@ -1238,7 +1239,8 @@ static int hdac_hdmi_parse_eld(struct hdac_device *hdev, |
| DRM_ELD_MNL_MASK) >> DRM_ELD_MNL_SHIFT; |
| |
| if (mnl > ELD_MAX_MNL) { |
| - dev_err(&hdev->dev, "HDMI: MNL Invalid %d\n", mnl); |
| + dev_err_ratelimited(&hdev->dev, |
| + "HDMI: MNL Invalid %d\n", mnl); |
| return -EINVAL; |
| } |
| |
| @@ -1297,8 +1299,8 @@ static void hdac_hdmi_present_sense(struct hdac_hdmi_pin *pin, |
| |
| if (!port->eld.monitor_present || !port->eld.eld_valid) { |
| |
| - dev_err(&hdev->dev, "%s: disconnect for pin:port %d:%d\n", |
| - __func__, pin->nid, port->id); |
| + dev_dbg(&hdev->dev, "%s: disconnect for pin:port %d:%d\n", |
| + __func__, pin->nid, port->id); |
| |
| /* |
| * PCMs are not registered during device probe, so don't |
| -- |
| 2.39.5 |
| |