drm/rockchip: analogix_dp: add mode_valid func support

The edp controller can not support display timings whose
front porch or back porch is 0.

Signed-off-by: Damon Ding <damon.ding@rock-chips.com>
Change-Id: I689f9f23154cffd7199e65767e2a977cd3404ea9
This commit is contained in:
Damon Ding
2023-12-15 18:03:17 +08:00
committed by Tao Huang
parent 502851cb0a
commit bdb4e83833

View File

@@ -324,6 +324,23 @@ static void rockchip_dp_bridge_detach(struct analogix_dp_plat_data *plat_data,
rockchip_drm_unregister_sub_dev(sdev);
}
static enum drm_mode_status
rockchip_dp_drm_encoder_mode_valid(struct drm_encoder *encoder,
const struct drm_display_mode *mode)
{
struct rockchip_dp_device *dp = encoder_to_dp(encoder);
struct videomode vm;
drm_display_mode_to_videomode(mode, &vm);
if (!vm.hfront_porch || !vm.hback_porch || !vm.vfront_porch || !vm.vback_porch) {
DRM_DEV_ERROR(dp->dev, "front porch or back porch can not be 0\n");
return MODE_BAD;
}
return MODE_OK;
}
static bool
rockchip_dp_drm_encoder_mode_fixup(struct drm_encoder *encoder,
const struct drm_display_mode *mode,
@@ -494,6 +511,7 @@ rockchip_dp_drm_encoder_atomic_check(struct drm_encoder *encoder,
}
static struct drm_encoder_helper_funcs rockchip_dp_encoder_helper_funcs = {
.mode_valid = rockchip_dp_drm_encoder_mode_valid,
.mode_fixup = rockchip_dp_drm_encoder_mode_fixup,
.mode_set = rockchip_dp_drm_encoder_mode_set,
.atomic_enable = rockchip_dp_drm_encoder_enable,