diff options
Diffstat (limited to 'target/linux/layerscape/patches-5.4/805-display-0033-LF-94-drm-hdmi-imx-Add-hdmi-phy-video-mode-valid-fun.patch')
-rw-r--r-- | target/linux/layerscape/patches-5.4/805-display-0033-LF-94-drm-hdmi-imx-Add-hdmi-phy-video-mode-valid-fun.patch | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/target/linux/layerscape/patches-5.4/805-display-0033-LF-94-drm-hdmi-imx-Add-hdmi-phy-video-mode-valid-fun.patch b/target/linux/layerscape/patches-5.4/805-display-0033-LF-94-drm-hdmi-imx-Add-hdmi-phy-video-mode-valid-fun.patch deleted file mode 100644 index e3e555e486..0000000000 --- a/target/linux/layerscape/patches-5.4/805-display-0033-LF-94-drm-hdmi-imx-Add-hdmi-phy-video-mode-valid-fun.patch +++ /dev/null @@ -1,135 +0,0 @@ -From 6f23cfed09dc50e532a5d6a535bb992102d03cab Mon Sep 17 00:00:00 2001 -From: Sandor Yu <Sandor.yu@nxp.com> -Date: Wed, 27 Nov 2019 19:08:42 +0800 -Subject: [PATCH] LF-94: drm: hdmi: imx: Add hdmi phy video mode valid function - -Add hdmi phy video mode valid function to filter the video modes. - -Signed-off-by: Sandor Yu <Sandor.yu@nxp.com> -Reviewed-by: Robby Cai <robby.cai@nxp.com> ---- - drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c | 8 +++++++- - drivers/gpu/drm/imx/cdn-mhdp-hdmi-phy.c | 23 +++++++++++++++++++++++ - drivers/gpu/drm/imx/cdn-mhdp-imxdrv.c | 2 ++ - drivers/gpu/drm/imx/cdn-mhdp-phy.h | 2 ++ - include/drm/bridge/cdns-mhdp-common.h | 2 ++ - 5 files changed, 36 insertions(+), 1 deletion(-) - ---- a/drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c -+++ b/drivers/gpu/drm/bridge/cadence/cdns-hdmi-core.c -@@ -352,7 +352,9 @@ static enum drm_mode_status - cdns_hdmi_bridge_mode_valid(struct drm_bridge *bridge, - const struct drm_display_mode *mode) - { -+ struct cdns_mhdp_device *mhdp = bridge->driver_private; - enum drm_mode_status mode_status = MODE_OK; -+ int ret; - - /* We don't support double-clocked and Interlaced modes */ - if (mode->flags & DRM_MODE_FLAG_DBLCLK || -@@ -367,6 +369,11 @@ cdns_hdmi_bridge_mode_valid(struct drm_b - if (mode->hdisplay > 3840 || mode->vdisplay > 2160) - return MODE_BAD_HVALUE; - -+ mhdp->valid_mode = mode; -+ ret = cdns_mhdp_plat_call(mhdp, phy_video_valid); -+ if (ret == false) -+ return MODE_CLOCK_RANGE; -+ - return mode_status; - } - -@@ -375,7 +382,6 @@ static void cdns_hdmi_bridge_mode_set(st - const struct drm_display_mode *mode) - { - struct cdns_mhdp_device *mhdp = bridge->driver_private; -- struct drm_display_info *display_info = &mhdp->connector.base.display_info; - struct video_info *video = &mhdp->video_info; - - video->v_sync_polarity = !!(mode->flags & DRM_MODE_FLAG_NVSYNC); ---- a/drivers/gpu/drm/imx/cdn-mhdp-hdmi-phy.c -+++ b/drivers/gpu/drm/imx/cdn-mhdp-hdmi-phy.c -@@ -683,6 +683,17 @@ static int hdmi_phy_power_up(struct cdns - return 0; - } - -+bool cdns_hdmi_phy_video_valid_imx8mq(struct cdns_mhdp_device *mhdp) -+{ -+ u32 rate = mhdp->valid_mode->clock; -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(imx8mq_ctrl_table); i++) -+ if(rate == imx8mq_ctrl_table[i].pixel_clk_freq_min) -+ return true; -+ return false; -+} -+ - int cdns_hdmi_phy_set_imx8mq(struct cdns_mhdp_device *mhdp) - { - struct drm_display_mode *mode = &mhdp->mode; -@@ -711,6 +722,18 @@ int cdns_hdmi_phy_set_imx8mq(struct cdns - return true; - } - -+bool cdns_hdmi_phy_video_valid_imx8qm(struct cdns_mhdp_device *mhdp) -+{ -+ u32 rate = mhdp->valid_mode->clock; -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(imx8qm_ctrl_table); i++) -+ if(rate >= imx8qm_ctrl_table[i].pixel_clk_freq_min && -+ rate <= imx8qm_ctrl_table[i].pixel_clk_freq_max) -+ return true; -+ return false; -+} -+ - int cdns_hdmi_phy_set_imx8qm(struct cdns_mhdp_device *mhdp) - { - struct drm_display_mode *mode = &mhdp->mode; ---- a/drivers/gpu/drm/imx/cdn-mhdp-imxdrv.c -+++ b/drivers/gpu/drm/imx/cdn-mhdp-imxdrv.c -@@ -58,6 +58,7 @@ static struct cdns_plat_data imx8mq_hdmi - .bind = cdns_hdmi_bind, - .unbind = cdns_hdmi_unbind, - .phy_set = cdns_hdmi_phy_set_imx8mq, -+ .phy_video_valid = cdns_hdmi_phy_video_valid_imx8mq, - .bus_type = BUS_TYPE_NORMAL_APB, - }; - -@@ -74,6 +75,7 @@ static struct cdns_plat_data imx8qm_hdmi - .bind = cdns_hdmi_bind, - .unbind = cdns_hdmi_unbind, - .phy_set = cdns_hdmi_phy_set_imx8qm, -+ .phy_video_valid = cdns_hdmi_phy_video_valid_imx8qm, - .power_on = cdns_mhdp_power_on_imx8qm, - .firmware_init = cdns_mhdp_firmware_init_imx8qm, - .pclk_rate = cdns_mhdp_pclk_rate_imx8qm, ---- a/drivers/gpu/drm/imx/cdn-mhdp-phy.h -+++ b/drivers/gpu/drm/imx/cdn-mhdp-phy.h -@@ -148,6 +148,8 @@ - - int cdns_dp_phy_set_imx8mq(struct cdns_mhdp_device *hdp); - int cdns_dp_phy_set_imx8qm(struct cdns_mhdp_device *hdp); -+bool cdns_hdmi_phy_video_valid_imx8mq(struct cdns_mhdp_device *hdp); -+bool cdns_hdmi_phy_video_valid_imx8qm(struct cdns_mhdp_device *hdp); - int cdns_hdmi_phy_set_imx8mq(struct cdns_mhdp_device *hdp); - int cdns_hdmi_phy_set_imx8qm(struct cdns_mhdp_device *hdp); - #endif /* _CDNS_MHDP_PHY_H */ ---- a/include/drm/bridge/cdns-mhdp-common.h -+++ b/include/drm/bridge/cdns-mhdp-common.h -@@ -643,6 +643,7 @@ struct cdns_plat_data { - void (*plat_deinit)(struct cdns_mhdp_device *mhdp); - - int (*phy_set)(struct cdns_mhdp_device *mhdp); -+ bool (*phy_video_valid)(struct cdns_mhdp_device *mhdp); - int (*firmware_init)(struct cdns_mhdp_device *mhdp); - void (*pclk_rate)(struct cdns_mhdp_device *mhdp); - -@@ -675,6 +676,7 @@ struct cdns_mhdp_device { - - struct video_info video_info; - struct drm_display_mode mode; -+ const struct drm_display_mode *valid_mode; - unsigned int fw_version; - - struct drm_dp_mst_topology_mgr mst_mgr; |