Commit 09e872d5 authored by chunhui dai's avatar chunhui dai Committed by Chun-Kuang Hu

drm/mediatek: Disable tmds on mt2701

Without that patch if you use specific resolutions like 1280x1024,
I can see distortion in the output. It seems as if the
frequency for updating the pixel of the image is out of sync.

For initialization tmds needs to be active, but can be disabled after init
to fix blurry display
Signed-off-by: default avatarchunhui dai <chunhui.dai@mediatek.com>
Signed-off-by: default avatarFrank Wunderlich <frank-w@public-files.de>
Tested-by: default avatarFrank Wunderlich <frank-w@public-files.de>
Signed-off-by: default avatarChun-Kuang Hu <chunkuang.hu@kernel.org>
parent f89c696e
...@@ -238,6 +238,7 @@ static void mtk_hdmi_phy_disable_tmds(struct mtk_hdmi_phy *hdmi_phy) ...@@ -238,6 +238,7 @@ static void mtk_hdmi_phy_disable_tmds(struct mtk_hdmi_phy *hdmi_phy)
struct mtk_hdmi_phy_conf mtk_hdmi_phy_2701_conf = { struct mtk_hdmi_phy_conf mtk_hdmi_phy_2701_conf = {
.flags = CLK_SET_RATE_GATE, .flags = CLK_SET_RATE_GATE,
.pll_default_off = true,
.hdmi_phy_clk_ops = &mtk_hdmi_phy_pll_ops, .hdmi_phy_clk_ops = &mtk_hdmi_phy_pll_ops,
.hdmi_phy_enable_tmds = mtk_hdmi_phy_enable_tmds, .hdmi_phy_enable_tmds = mtk_hdmi_phy_enable_tmds,
.hdmi_phy_disable_tmds = mtk_hdmi_phy_disable_tmds, .hdmi_phy_disable_tmds = mtk_hdmi_phy_disable_tmds,
......
...@@ -184,6 +184,9 @@ static int mtk_hdmi_phy_probe(struct platform_device *pdev) ...@@ -184,6 +184,9 @@ static int mtk_hdmi_phy_probe(struct platform_device *pdev)
return PTR_ERR(phy_provider); return PTR_ERR(phy_provider);
} }
if (hdmi_phy->conf->pll_default_off)
hdmi_phy->conf->hdmi_phy_disable_tmds(hdmi_phy);
return of_clk_add_provider(dev->of_node, of_clk_src_simple_get, return of_clk_add_provider(dev->of_node, of_clk_src_simple_get,
hdmi_phy->pll); hdmi_phy->pll);
} }
......
...@@ -21,6 +21,7 @@ struct mtk_hdmi_phy; ...@@ -21,6 +21,7 @@ struct mtk_hdmi_phy;
struct mtk_hdmi_phy_conf { struct mtk_hdmi_phy_conf {
unsigned long flags; unsigned long flags;
bool pll_default_off;
const struct clk_ops *hdmi_phy_clk_ops; const struct clk_ops *hdmi_phy_clk_ops;
void (*hdmi_phy_enable_tmds)(struct mtk_hdmi_phy *hdmi_phy); void (*hdmi_phy_enable_tmds)(struct mtk_hdmi_phy *hdmi_phy);
void (*hdmi_phy_disable_tmds)(struct mtk_hdmi_phy *hdmi_phy); void (*hdmi_phy_disable_tmds)(struct mtk_hdmi_phy *hdmi_phy);
......
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