Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/vc4: hdmi: implement clear_infoframe

Implement the clear_infoframe callback, disabling corresponding
InfoFrame type.

Acked-by: Maxime Ripard <mripard@kernel.org>
Link: https://patch.msgid.link/20260107-limit-infoframes-2-v4-2-213d0d3bd490@oss.qualcomm.com
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>

+25
+25
drivers/gpu/drm/vc4/vc4_hdmi.c
··· 624 624 return ret; 625 625 } 626 626 627 + static int vc4_hdmi_clear_infoframe(struct drm_connector *connector, 628 + enum hdmi_infoframe_type type) 629 + { 630 + struct vc4_hdmi *vc4_hdmi = connector_to_vc4_hdmi(connector); 631 + struct drm_device *drm = connector->dev; 632 + int ret; 633 + int idx; 634 + 635 + if (!drm_dev_enter(drm, &idx)) 636 + return 0; 637 + 638 + WARN_ONCE(!(HDMI_READ(HDMI_RAM_PACKET_CONFIG) & 639 + VC4_HDMI_RAM_PACKET_ENABLE), 640 + "Packet RAM has to be on to store the packet."); 641 + 642 + ret = vc4_hdmi_stop_packet(vc4_hdmi, type, true); 643 + if (ret) 644 + drm_err(drm, "Failed to wait for infoframe to go idle: %d\n", ret); 645 + 646 + drm_dev_exit(idx); 647 + 648 + return ret; 649 + } 650 + 627 651 static int vc4_hdmi_write_infoframe(struct drm_connector *connector, 628 652 enum hdmi_infoframe_type type, 629 653 const u8 *infoframe, size_t len) ··· 1684 1660 1685 1661 static const struct drm_connector_hdmi_funcs vc4_hdmi_hdmi_connector_funcs = { 1686 1662 .tmds_char_rate_valid = vc4_hdmi_connector_clock_valid, 1663 + .clear_infoframe = vc4_hdmi_clear_infoframe, 1687 1664 .write_infoframe = vc4_hdmi_write_infoframe, 1688 1665 }; 1689 1666