Commit aa4f96e2 authored by Maxime Ripard's avatar Maxime Ripard Committed by Heiko Stuebner

drm/rockchip: inno_hdmi: Drop HDMI Vendor Infoframe support

The HDMI vendor infoframe is only meant to be sent with 4k60 modes and
higher, but the controller doesn't support them. Let's drop them from
the kernel.
Suggested-by: default avatarJohan Jonker <jbx6244@gmail.com>
Signed-off-by: default avatarMaxime Ripard <mripard@kernel.org>
Tested-by: default avatarAlex Bee <knaerzche@gmail.com>
Signed-off-by: default avatarAlex Bee <knaerzche@gmail.com>
Signed-off-by: default avatarHeiko Stuebner <heiko@sntech.de>
Link: https://patchwork.freedesktop.org/patch/msgid/20231222174220.55249-14-knaerzche@gmail.com
parent 5f924748
...@@ -205,11 +205,15 @@ static void inno_hdmi_reset(struct inno_hdmi *hdmi) ...@@ -205,11 +205,15 @@ static void inno_hdmi_reset(struct inno_hdmi *hdmi)
} }
static int inno_hdmi_upload_frame(struct inno_hdmi *hdmi, int setup_rc, static int inno_hdmi_upload_frame(struct inno_hdmi *hdmi, int setup_rc,
union hdmi_infoframe *frame, u32 frame_index, union hdmi_infoframe *frame, u32 frame_index)
u32 mask, u32 disable, u32 enable)
{ {
if (mask) struct drm_connector *connector = &hdmi->connector;
hdmi_modb(hdmi, HDMI_PACKET_SEND_AUTO, mask, disable);
if (frame_index != INFOFRAME_AVI) {
drm_err(connector->dev,
"Unsupported infoframe type: %u\n", frame_index);
return 0;
}
hdmi_writeb(hdmi, HDMI_CONTROL_PACKET_BUF_INDEX, frame_index); hdmi_writeb(hdmi, HDMI_CONTROL_PACKET_BUF_INDEX, frame_index);
...@@ -225,28 +229,11 @@ static int inno_hdmi_upload_frame(struct inno_hdmi *hdmi, int setup_rc, ...@@ -225,28 +229,11 @@ static int inno_hdmi_upload_frame(struct inno_hdmi *hdmi, int setup_rc,
for (i = 0; i < rc; i++) for (i = 0; i < rc; i++)
hdmi_writeb(hdmi, HDMI_CONTROL_PACKET_ADDR + i, hdmi_writeb(hdmi, HDMI_CONTROL_PACKET_ADDR + i,
packed_frame[i]); packed_frame[i]);
if (mask)
hdmi_modb(hdmi, HDMI_PACKET_SEND_AUTO, mask, enable);
} }
return setup_rc; return setup_rc;
} }
static int inno_hdmi_config_video_vsi(struct inno_hdmi *hdmi,
struct drm_display_mode *mode)
{
union hdmi_infoframe frame;
int rc;
rc = drm_hdmi_vendor_infoframe_from_display_mode(&frame.vendor.hdmi,
&hdmi->connector,
mode);
return inno_hdmi_upload_frame(hdmi, rc, &frame, INFOFRAME_VSI,
m_PACKET_VSI_EN, v_PACKET_VSI_EN(0), v_PACKET_VSI_EN(1));
}
static int inno_hdmi_config_video_avi(struct inno_hdmi *hdmi, static int inno_hdmi_config_video_avi(struct inno_hdmi *hdmi,
struct drm_display_mode *mode) struct drm_display_mode *mode)
{ {
...@@ -264,7 +251,7 @@ static int inno_hdmi_config_video_avi(struct inno_hdmi *hdmi, ...@@ -264,7 +251,7 @@ static int inno_hdmi_config_video_avi(struct inno_hdmi *hdmi,
else else
frame.avi.colorspace = HDMI_COLORSPACE_RGB; frame.avi.colorspace = HDMI_COLORSPACE_RGB;
return inno_hdmi_upload_frame(hdmi, rc, &frame, INFOFRAME_AVI, 0, 0, 0); return inno_hdmi_upload_frame(hdmi, rc, &frame, INFOFRAME_AVI);
} }
static int inno_hdmi_config_video_csc(struct inno_hdmi *hdmi) static int inno_hdmi_config_video_csc(struct inno_hdmi *hdmi)
...@@ -407,10 +394,8 @@ static int inno_hdmi_setup(struct inno_hdmi *hdmi, ...@@ -407,10 +394,8 @@ static int inno_hdmi_setup(struct inno_hdmi *hdmi,
inno_hdmi_config_video_csc(hdmi); inno_hdmi_config_video_csc(hdmi);
if (display->is_hdmi) { if (display->is_hdmi)
inno_hdmi_config_video_avi(hdmi, mode); inno_hdmi_config_video_avi(hdmi, mode);
inno_hdmi_config_video_vsi(hdmi, mode);
}
/* /*
* When IP controller have configured to an accurate video * When IP controller have configured to an accurate video
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment