Takashi Iwai b6b3d4
From c955bf3998efa3355790a4d8c82874582f1bc727 Mon Sep 17 00:00:00 2001
Takashi Iwai b6b3d4
From: Chen Zhong <chen.zhong@mediatek.com>
Takashi Iwai b6b3d4
Date: Thu, 5 Oct 2017 11:50:23 +0800
Takashi Iwai b6b3d4
Subject: [PATCH] clk: mediatek: add the option for determining PLL source clock
Takashi Iwai b6b3d4
Git-commit: c955bf3998efa3355790a4d8c82874582f1bc727
Takashi Iwai b6b3d4
Patch-mainline: v4.15-rc1
Takashi Iwai b6b3d4
References: bsc#1051510
Takashi Iwai b6b3d4
Takashi Iwai b6b3d4
Since the previous setup always sets the PLL using crystal 26MHz, this
Takashi Iwai b6b3d4
doesn't always happen in every MediaTek platform. So the patch added
Takashi Iwai b6b3d4
flexibility for assigning extra member for determining the PLL source
Takashi Iwai b6b3d4
clock.
Takashi Iwai b6b3d4
Takashi Iwai b6b3d4
Signed-off-by: Chen Zhong <chen.zhong@mediatek.com>
Takashi Iwai b6b3d4
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Takashi Iwai b6b3d4
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Takashi Iwai b6b3d4
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai b6b3d4
Takashi Iwai b6b3d4
---
Takashi Iwai b6b3d4
 drivers/clk/mediatek/clk-mtk.h | 1 +
Takashi Iwai b6b3d4
 drivers/clk/mediatek/clk-pll.c | 5 ++++-
Takashi Iwai b6b3d4
 2 files changed, 5 insertions(+), 1 deletion(-)
Takashi Iwai b6b3d4
Takashi Iwai b6b3d4
diff --git a/drivers/clk/mediatek/clk-mtk.h b/drivers/clk/mediatek/clk-mtk.h
Takashi Iwai b6b3d4
index f48df75cc901..f10250dcece4 100644
Takashi Iwai b6b3d4
--- a/drivers/clk/mediatek/clk-mtk.h
Takashi Iwai b6b3d4
+++ b/drivers/clk/mediatek/clk-mtk.h
Takashi Iwai b6b3d4
@@ -218,6 +218,7 @@ struct mtk_pll_data {
Takashi Iwai b6b3d4
 	uint32_t pcw_reg;
Takashi Iwai b6b3d4
 	int pcw_shift;
Takashi Iwai b6b3d4
 	const struct mtk_pll_div_table *div_table;
Takashi Iwai b6b3d4
+	const char *parent_name;
Takashi Iwai b6b3d4
 };
Takashi Iwai b6b3d4
 
Takashi Iwai b6b3d4
 void mtk_clk_register_plls(struct device_node *node,
Takashi Iwai b6b3d4
diff --git a/drivers/clk/mediatek/clk-pll.c b/drivers/clk/mediatek/clk-pll.c
Takashi Iwai b6b3d4
index 3c546bae6955..f54e4015b0b1 100644
Takashi Iwai b6b3d4
--- a/drivers/clk/mediatek/clk-pll.c
Takashi Iwai b6b3d4
+++ b/drivers/clk/mediatek/clk-pll.c
Takashi Iwai b6b3d4
@@ -312,7 +312,10 @@ static struct clk *mtk_clk_register_pll(const struct mtk_pll_data *data,
Takashi Iwai b6b3d4
 	init.name = data->name;
Takashi Iwai b6b3d4
 	init.flags = (data->flags & PLL_AO) ? CLK_IS_CRITICAL : 0;
Takashi Iwai b6b3d4
 	init.ops = &mtk_pll_ops;
Takashi Iwai b6b3d4
-	init.parent_names = &parent_name;
Takashi Iwai b6b3d4
+	if (data->parent_name)
Takashi Iwai b6b3d4
+		init.parent_names = &data->parent_name;
Takashi Iwai b6b3d4
+	else
Takashi Iwai b6b3d4
+		init.parent_names = &parent_name;
Takashi Iwai b6b3d4
 	init.num_parents = 1;
Takashi Iwai b6b3d4
 
Takashi Iwai b6b3d4
 	clk = clk_register(NULL, &pll->hw);
Takashi Iwai b6b3d4
-- 
Takashi Iwai b6b3d4
2.18.0
Takashi Iwai b6b3d4