It's not uncommon for the particular device to support only a subset of HDMI InfoFrames. Currently it's mostly ignored by the framework: it calls write_infoframe() / clear_infoframe() callbacks for all frames and expects them to return success even if the InfoFrame is not supported.
Sort that out, making sure that all interfaces are consistent: - split function interfaces, having a pair of callbacks per each InfoFrame type. - write_infoframe() / clear_infoframe() functions return -EOPNOTSUPP for unsupported InfoFrames. - don't create and enable unsupported InfoFrames. - limit debugfs to provide supported InfoFrames only. Signed-off-by: Dmitry Baryshkov <[email protected]> --- Changes in v4: - Rebased on top of drm-misc-next, moving inno-hdmi to the bridge patch - Expanded "normal" test description (Maxime) - Added EDEADLK handling to the tests (Maxime) - Moved hdmi_update_failures to drm_atomic_helper_connector_hdmi_priv (Maxime) - Link to v3: https://lore.kernel.org/r/[email protected] Changes in v3: - Added DRM KUnit tests verifying InfoFrames behaviour (Maxime) - Reworked the patchset, having per-infoframe callbacks rather than extra flags (Maxime) - Link to v2: https://lore.kernel.org/r/[email protected] Changes in v2: - Fixed build issue in common code - Fixed comments regarding HDR / audio frames (Diedrik) - In adv7511 actually check for the HDR frame (the comment was correct) rather than the audio infoframe (c&p error). - Link to v1: https://lore.kernel.org/r/[email protected] --- Dmitry Baryshkov (10): drm/tests: hdmi: check the infoframes behaviour drm/vc4: hdmi: implement clear_infoframe drm/sun4i: hdmi_enc: implement clear_infoframe stub drm/connector: make clear_infoframe callback mandatory for HDMI connectors drm/bridge: refactor HDMI InfoFrame callbacks drm/display: hdmi_state_helper: split InfoFrame functions per type drm/display: hdmi_state_helper: reject Audio IF updates if it's not supported drm/display: hdmi_state_helper: don't generate unsupported InfoFrames drm/display: bridge_connector: dynamically generate HDMI callbacks drm/debug: don't register files for unsupported HDMI InfoFrames drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 180 +++--- drivers/gpu/drm/bridge/inno-hdmi.c | 41 +- drivers/gpu/drm/bridge/ite-it6263.c | 95 +-- drivers/gpu/drm/bridge/lontium-lt9611.c | 143 +++-- drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c | 110 ++-- drivers/gpu/drm/display/drm_bridge_connector.c | 190 +++++- drivers/gpu/drm/display/drm_hdmi_state_helper.c | 94 +-- drivers/gpu/drm/drm_connector.c | 6 + drivers/gpu/drm/drm_debugfs.c | 7 + drivers/gpu/drm/mediatek/mtk_hdmi_common.c | 8 +- drivers/gpu/drm/mediatek/mtk_hdmi_v2.c | 110 ++-- drivers/gpu/drm/msm/hdmi/hdmi_bridge.c | 195 +++--- drivers/gpu/drm/rockchip/rk3066_hdmi.c | 47 +- drivers/gpu/drm/sun4i/sun4i_hdmi_enc.c | 42 +- drivers/gpu/drm/tests/drm_client_modeset_test.c | 3 + drivers/gpu/drm/tests/drm_connector_test.c | 19 + drivers/gpu/drm/tests/drm_hdmi_state_helper_test.c | 667 +++++++++++++++++++++ drivers/gpu/drm/tests/drm_kunit_edid.h | 119 ++++ drivers/gpu/drm/vc4/vc4_hdmi.c | 105 +++- include/drm/drm_bridge.h | 127 +++- include/drm/drm_connector.h | 105 +++- 21 files changed, 1900 insertions(+), 513 deletions(-) --- base-commit: 349d4efadc1f831ebc0b872ba1e3a2b7dd58b72b change-id: 20250927-limit-infoframes-2-6b93e599e79a Best regards, -- With best wishes Dmitry
