From 57bb14ce9bda301baa6d4f5fb8ed075650ef554b Mon Sep 17 00:00:00 2001 From: Dongjin Kim Date: Thu, 10 Sep 2020 11:01:33 +0900 Subject: [PATCH 04/16] ODROID-COMMON: gpu/drm: add new display resolution 2560x1440 Signed-off-by: Joy Cho Signed-off-by: Dongjin Kim --- drivers/gpu/drm/meson/meson_vclk.c | 18 ++++++++++++++++++ drivers/gpu/drm/meson/meson_venc.c | 5 +++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/meson/meson_vclk.c b/drivers/gpu/drm/meson/meson_vclk.c index 2a82119eb58e..eb4c251d79b7 100644 --- a/drivers/gpu/drm/meson/meson_vclk.c +++ b/drivers/gpu/drm/meson/meson_vclk.c @@ -357,6 +357,8 @@ enum { MESON_VCLK_HDMI_594000, /* 2970 /1 /1 /1 /5 /1 => /1 /2 */ MESON_VCLK_HDMI_594000_YUV420, +/* 4830 /2 /1 /2 /5 /1 => /1 /1 */ + MESON_VCLK_HDMI_241500, }; struct meson_vclk_params { @@ -467,6 +469,18 @@ struct meson_vclk_params { .vid_pll_div = VID_PLL_DIV_5, .vclk_div = 1, }, + [MESON_VCLK_HDMI_241500] = { + .pll_freq = 4830000, + .phy_freq = 2415000, + .venc_freq = 241500, + .vclk_freq = 241500, + .pixel_freq = 241500, + .pll_od1 = 2, + .pll_od2 = 1, + .pll_od3 = 2, + .vid_pll_div = VID_PLL_DIV_5, + .vclk_div = 1, + }, { /* sentinel */ }, }; @@ -873,6 +887,10 @@ static void meson_vclk_set(struct meson_drm *priv, unsigned int pll_base_freq, m = 0xf7; frac = vic_alternate_clock ? 0x8148 : 0x10000; break; + case 4830000: + m = 0xc9; + frac = 0xd560; + break; } meson_hdmi_pll_set_params(priv, m, frac, od1, od2, od3); diff --git a/drivers/gpu/drm/meson/meson_venc.c b/drivers/gpu/drm/meson/meson_venc.c index 3c55ed003359..559ab3b5e212 100644 --- a/drivers/gpu/drm/meson/meson_venc.c +++ b/drivers/gpu/drm/meson/meson_venc.c @@ -866,10 +866,11 @@ meson_venc_hdmi_supported_mode(const struct drm_display_mode *mode) DRM_MODE_FLAG_PVSYNC | DRM_MODE_FLAG_NVSYNC)) return MODE_BAD; - if (mode->hdisplay < 640 || mode->hdisplay > 1920) + /* support higher resolution than 1920x1080 */ + if (mode->hdisplay < 640 || mode->hdisplay > 2560) return MODE_BAD_HVALUE; - if (mode->vdisplay < 480 || mode->vdisplay > 1200) + if (mode->vdisplay < 480 || mode->vdisplay > 1600) return MODE_BAD_VVALUE; return MODE_OK; -- 2.34.1