clk: mediatek: clk-mt8192: Move CLK_TOP_CSW_F26M_D2 in top_divs
This driver is registered early in clk_mt8192_top_init_early() and then again in clk_mt8192_top_probe(): the difference between the two is that the early one is probed with CLK_OF_DECLARE_DRIVER and the latter is regularly probed as a platform_driver. Knowing that it is not necessary for this platform to register the TOP_CSW_F26M_D2 clock that early, move it to top_divs and register it with the others during platform_driver probe for topckgen; While at it, since the only reason why the early probe existed was to register that clock, remove that entirely - leaving this driver to use only platform_driver. Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Reviewed-by: Miles Chen <miles.chen@mediatek.com> Reviewed-by: Chen-Yu Tsai <wenst@chromium.org> Tested-by: Miles Chen <miles.chen@mediatek.com> Link: https://lore.kernel.org/r/20230120092053.182923-15-angelogioacchino.delregno@collabora.com Tested-by: Mingming Su <mingming.su@mediatek.com> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
This commit is contained in:
parent
e4078219e9
commit
3b5bc4691f
@ -26,10 +26,6 @@ static const struct mtk_fixed_clk top_fixed_clks[] = {
|
||||
FIXED_CLK(CLK_TOP_ULPOSC, "ulposc", NULL, 260000000),
|
||||
};
|
||||
|
||||
static const struct mtk_fixed_factor top_early_divs[] = {
|
||||
FACTOR(CLK_TOP_CSW_F26M_D2, "csw_f26m_d2", "clk26m", 1, 2),
|
||||
};
|
||||
|
||||
static const struct mtk_fixed_factor top_divs[] = {
|
||||
FACTOR_FLAGS(CLK_TOP_MAINPLL_D3, "mainpll_d3", "mainpll", 1, 3, 0),
|
||||
FACTOR_FLAGS(CLK_TOP_MAINPLL_D4, "mainpll_d4", "mainpll", 1, 4, 0),
|
||||
@ -95,6 +91,7 @@ static const struct mtk_fixed_factor top_divs[] = {
|
||||
FACTOR(CLK_TOP_OSC_D10, "osc_d10", "ulposc", 1, 10),
|
||||
FACTOR(CLK_TOP_OSC_D16, "osc_d16", "ulposc", 1, 16),
|
||||
FACTOR(CLK_TOP_OSC_D20, "osc_d20", "ulposc", 1, 20),
|
||||
FACTOR(CLK_TOP_CSW_F26M_D2, "csw_f26m_d2", "clk26m", 1, 2),
|
||||
FACTOR(CLK_TOP_ADSPPLL, "adsppll_ck", "adsppll", 1, 1),
|
||||
FACTOR_FLAGS(CLK_TOP_UNIVPLL_192M, "univpll_192m", "univpll", 1, 13, 0),
|
||||
FACTOR_FLAGS(CLK_TOP_UNIVPLL_192M_D2, "univpll_192m_d2", "univpll_192m", 1, 2, 0),
|
||||
@ -1047,27 +1044,6 @@ static const struct mtk_pll_data plls[] = {
|
||||
0, 0, 32, 0x0330, 24, 0, 0, 0, 0x0334, 0),
|
||||
};
|
||||
|
||||
static struct clk_hw_onecell_data *top_clk_data;
|
||||
|
||||
static void clk_mt8192_top_init_early(struct device_node *node)
|
||||
{
|
||||
int i;
|
||||
|
||||
top_clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK);
|
||||
if (!top_clk_data)
|
||||
return;
|
||||
|
||||
for (i = 0; i < CLK_TOP_NR_CLK; i++)
|
||||
top_clk_data->hws[i] = ERR_PTR(-EPROBE_DEFER);
|
||||
|
||||
mtk_clk_register_factors(top_early_divs, ARRAY_SIZE(top_early_divs), top_clk_data);
|
||||
|
||||
of_clk_add_hw_provider(node, of_clk_hw_onecell_get, top_clk_data);
|
||||
}
|
||||
|
||||
CLK_OF_DECLARE_DRIVER(mt8192_topckgen, "mediatek,mt8192-topckgen",
|
||||
clk_mt8192_top_init_early);
|
||||
|
||||
/* Register mux notifier for MFG mux */
|
||||
static int clk_mt8192_reg_mfg_mux_notifier(struct device *dev, struct clk *clk)
|
||||
{
|
||||
@ -1093,6 +1069,7 @@ static int clk_mt8192_reg_mfg_mux_notifier(struct device *dev, struct clk *clk)
|
||||
static int clk_mt8192_top_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct device_node *node = pdev->dev.of_node;
|
||||
struct clk_hw_onecell_data *top_clk_data;
|
||||
int r;
|
||||
void __iomem *base;
|
||||
|
||||
@ -1100,17 +1077,17 @@ static int clk_mt8192_top_probe(struct platform_device *pdev)
|
||||
if (IS_ERR(base))
|
||||
return PTR_ERR(base);
|
||||
|
||||
top_clk_data = mtk_alloc_clk_data(CLK_TOP_NR_CLK);
|
||||
if (!top_clk_data)
|
||||
return;
|
||||
|
||||
r = mtk_clk_register_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks), top_clk_data);
|
||||
if (r)
|
||||
return r;
|
||||
|
||||
r = mtk_clk_register_factors(top_early_divs, ARRAY_SIZE(top_early_divs), top_clk_data);
|
||||
if (r)
|
||||
goto unregister_fixed_clks;
|
||||
|
||||
r = mtk_clk_register_factors(top_divs, ARRAY_SIZE(top_divs), top_clk_data);
|
||||
if (r)
|
||||
goto unregister_early_factors;
|
||||
goto unregister_fixed_clks;
|
||||
|
||||
r = mtk_clk_register_muxes(&pdev->dev, top_mtk_muxes,
|
||||
ARRAY_SIZE(top_mtk_muxes), node,
|
||||
@ -1156,8 +1133,6 @@ unregister_muxes:
|
||||
mtk_clk_unregister_muxes(top_mtk_muxes, ARRAY_SIZE(top_mtk_muxes), top_clk_data);
|
||||
unregister_factors:
|
||||
mtk_clk_unregister_factors(top_divs, ARRAY_SIZE(top_divs), top_clk_data);
|
||||
unregister_early_factors:
|
||||
mtk_clk_unregister_factors(top_early_divs, ARRAY_SIZE(top_early_divs), top_clk_data);
|
||||
unregister_fixed_clks:
|
||||
mtk_clk_unregister_fixed_clks(top_fixed_clks, ARRAY_SIZE(top_fixed_clks),
|
||||
top_clk_data);
|
||||
|
Loading…
x
Reference in New Issue
Block a user