mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
drm/rockchip: vop2: use pixel rate to verify vp performance
get vp max dclk rate from vop reg data is more correct, so we use it to verify vp performance and report to userspace. Signed-off-by: Sandy Huang <hjc@rock-chips.com> Change-Id: I1e590322829e551814ba84bf22d60a4e82b407d1
This commit is contained in:
@@ -7229,6 +7229,10 @@ vop2_crtc_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode *mode)
|
||||
if (mode->flags & DRM_MODE_FLAG_DBLCLK || vcstate->output_if & VOP_OUTPUT_IF_BT656)
|
||||
request_clock *= 2;
|
||||
|
||||
/* Pixel rate verify */
|
||||
if (request_clock > vp_data->dclk_max / 1000)
|
||||
return MODE_CLOCK_HIGH;
|
||||
|
||||
if ((request_clock <= VOP2_MAX_DCLK_RATE) &&
|
||||
(vop2_extend_clk_find_by_name(vop2, "hdmi0_phy_pll") ||
|
||||
vop2_extend_clk_find_by_name(vop2, "hdmi1_phy_pll"))) {
|
||||
@@ -7244,9 +7248,6 @@ vop2_crtc_mode_valid(struct drm_crtc *crtc, const struct drm_display_mode *mode)
|
||||
request_clock * 1000) / 1000;
|
||||
}
|
||||
|
||||
if (request_clock > vp_data->dclk_max / 1000)
|
||||
return MODE_CLOCK_HIGH;
|
||||
|
||||
/*
|
||||
* Hdmi or DisplayPort request a Accurate clock.
|
||||
*/
|
||||
@@ -12496,7 +12497,7 @@ static int vop2_crtc_create_feature_property(struct vop2 *vop2, struct drm_crtc
|
||||
drm_object_attach_property(&crtc->base, vp->output_width_prop, 0);
|
||||
|
||||
prop = drm_property_create_range(vop2->drm_dev, DRM_MODE_PROP_IMMUTABLE, "OUTPUT_DCLK",
|
||||
0, rockchip_drm_get_dclk_by_width(vop2->data->vp[vp->id].max_output.width) * 1000);
|
||||
0, vop2->data->vp[vp->id].dclk_max);
|
||||
if (!prop) {
|
||||
DRM_DEV_ERROR(vop2->dev, "create OUTPUT_DCLK prop for vp%d failed\n", vp->id);
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1745,7 +1745,7 @@ static const struct vop2_video_port_data rk3576_vop_video_ports[] = {
|
||||
VOP_FEATURE_POST_FRC_V2 | VOP_FEATURE_POST_SHARP,
|
||||
.gamma_lut_len = 1024,
|
||||
.cubic_lut_len = 729, /* 9x9x9 */
|
||||
.dclk_max = 600000000,
|
||||
.dclk_max = 1200000000,
|
||||
.max_output = { 4096, 4096 },
|
||||
.hdrvivid_dly = {17, 29, 32, 44, 15, 38, 1, 29, 0, 0},
|
||||
.sdr2hdr_dly = 21,
|
||||
@@ -2134,7 +2134,7 @@ static const struct vop2_video_port_data rk3588_vop_video_ports[] = {
|
||||
VOP_FEATURE_HDR10 | VOP_FEATURE_NEXT_HDR,
|
||||
.gamma_lut_len = 1024,
|
||||
.cubic_lut_len = 729, /* 9x9x9 */
|
||||
.dclk_max = 600000000,
|
||||
.dclk_max = 2400000000,
|
||||
.max_output = { 7680, 4320 },
|
||||
/* hdr2sdr sdr2hdr hdr2hdr sdr2sdr */
|
||||
.pre_scan_max_dly = { 76, 65, 65, 54 },
|
||||
|
||||
Reference in New Issue
Block a user