summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2019-05-20 08:32:11 -0700
committerTony Lindgren <tony@atomide.com>2019-05-20 08:32:11 -0700
commitf29f24b5568fd6169e0363c78f1a80db38d0e7e9 (patch)
tree835abaf6e1bb95b9d388f4249f355618e9da1489 /drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c
parent1ba12322e2f0934383f111a5e695702aaf46b812 (diff)
parent34b1b8061de3215208db9accfe60cc3f5b40178f (diff)
downloadtalos-op-linux-f29f24b5568fd6169e0363c78f1a80db38d0e7e9.tar.gz
talos-op-linux-f29f24b5568fd6169e0363c78f1a80db38d0e7e9.zip
Merge branch 'fixes-dra7' into fixes
Diffstat (limited to 'drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c')
-rw-r--r--drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c b/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c
index ed5916b27658..47f8a2951682 100644
--- a/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c
+++ b/drivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c
@@ -199,6 +199,20 @@ static void mtk_hdmi_pll_unprepare(struct clk_hw *hw)
usleep_range(100, 150);
}
+static long mtk_hdmi_pll_round_rate(struct clk_hw *hw, unsigned long rate,
+ unsigned long *parent_rate)
+{
+ struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw);
+
+ hdmi_phy->pll_rate = rate;
+ if (rate <= 74250000)
+ *parent_rate = rate;
+ else
+ *parent_rate = rate / 2;
+
+ return rate;
+}
+
static int mtk_hdmi_pll_set_rate(struct clk_hw *hw, unsigned long rate,
unsigned long parent_rate)
{
@@ -285,6 +299,14 @@ static int mtk_hdmi_pll_set_rate(struct clk_hw *hw, unsigned long rate,
return 0;
}
+static unsigned long mtk_hdmi_pll_recalc_rate(struct clk_hw *hw,
+ unsigned long parent_rate)
+{
+ struct mtk_hdmi_phy *hdmi_phy = to_mtk_hdmi_phy(hw);
+
+ return hdmi_phy->pll_rate;
+}
+
static const struct clk_ops mtk_hdmi_phy_pll_ops = {
.prepare = mtk_hdmi_pll_prepare,
.unprepare = mtk_hdmi_pll_unprepare,
@@ -309,6 +331,7 @@ static void mtk_hdmi_phy_disable_tmds(struct mtk_hdmi_phy *hdmi_phy)
}
struct mtk_hdmi_phy_conf mtk_hdmi_phy_8173_conf = {
+ .flags = CLK_SET_RATE_PARENT | CLK_SET_RATE_GATE,
.hdmi_phy_clk_ops = &mtk_hdmi_phy_pll_ops,
.hdmi_phy_enable_tmds = mtk_hdmi_phy_enable_tmds,
.hdmi_phy_disable_tmds = mtk_hdmi_phy_disable_tmds,
OpenPOWER on IntegriCloud