Commit 2d2a2900 authored by Rex-BC Chen's avatar Rex-BC Chen Committed by Stephen Boyd
Browse files

clk: mediatek: reset: Revise structure to control reset register



To declare the reset data easier, we add a strucure to do this instead
of using many input variables to mtk_register_reset_controller().

- Add mtk_clk_rst_desc to define the reset description when registering
  the reset controller.
- Rename "mtk_reset" to "mtk_clk_rst_data". We use it to store data of
  reset controller.
- Document mtk_clk_rst_desc and mtk_clk_rst_data.
- Modify the documentation of mtk_register_reset_controller.
- Extract container_of in update functions to to_mtk_clk_rst_data().

Signed-off-by: default avatarRex-BC Chen <rex-bc.chen@mediatek.com>
Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: default avatarNícolas F. R. A. Prado <nfraprado@collabora.com>
Tested-by: default avatarNícolas F. R. A. Prado <nfraprado@collabora.com>
Link: https://lore.kernel.org/r/20220523093346.28493-7-rex-bc.chen@mediatek.com


Signed-off-by: default avatarStephen Boyd <sboyd@kernel.org>
parent 370bf628
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -36,6 +36,12 @@ static const struct mtk_gate eth_clks[] = {
	GATE_ETH(CLK_ETHSYS_CRYPTO, "crypto_clk", "ethif_sel", 29),
};

static const struct mtk_clk_rst_desc clk_rst_desc = {
	.version = MTK_RST_SIMPLE,
	.rst_bank_nr = 1,
	.reg_ofs = 0x34,
};

static const struct of_device_id of_match_clk_mt2701_eth[] = {
	{ .compatible = "mediatek,mt2701-ethsys", },
	{}
@@ -58,7 +64,7 @@ static int clk_mt2701_eth_probe(struct platform_device *pdev)
			"could not register clock provider: %s: %d\n",
			pdev->name, r);

	mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE);
	mtk_register_reset_controller(node, &clk_rst_desc);

	return r;
}
+7 −1
Original line number Diff line number Diff line
@@ -35,6 +35,12 @@ static const struct mtk_gate g3d_clks[] = {
	GATE_G3D(CLK_G3DSYS_CORE, "g3d_core", "mfg_sel", 0),
};

static const struct mtk_clk_rst_desc clk_rst_desc = {
	.version = MTK_RST_SIMPLE,
	.rst_bank_nr = 1,
	.reg_ofs = 0xc,
};

static int clk_mt2701_g3dsys_init(struct platform_device *pdev)
{
	struct clk_hw_onecell_data *clk_data;
@@ -52,7 +58,7 @@ static int clk_mt2701_g3dsys_init(struct platform_device *pdev)
			"could not register clock provider: %s: %d\n",
			pdev->name, r);

	mtk_register_reset_controller(node, 1, 0xc, MTK_RST_SIMPLE);
	mtk_register_reset_controller(node, &clk_rst_desc);

	return r;
}
+7 −1
Original line number Diff line number Diff line
@@ -33,6 +33,12 @@ static const struct mtk_gate hif_clks[] = {
	GATE_HIF(CLK_HIFSYS_PCIE2, "pcie2_clk", "ethpll_500m_ck", 26),
};

static const struct mtk_clk_rst_desc clk_rst_desc = {
	.version = MTK_RST_SIMPLE,
	.rst_bank_nr = 1,
	.reg_ofs = 0x34,
};

static const struct of_device_id of_match_clk_mt2701_hif[] = {
	{ .compatible = "mediatek,mt2701-hifsys", },
	{}
@@ -57,7 +63,7 @@ static int clk_mt2701_hif_probe(struct platform_device *pdev)
		return r;
	}

	mtk_register_reset_controller(node, 1, 0x34, MTK_RST_SIMPLE);
	mtk_register_reset_controller(node, &clk_rst_desc);

	return 0;
}
+17 −2
Original line number Diff line number Diff line
@@ -735,6 +735,21 @@ static const struct mtk_fixed_factor infra_fixed_divs[] = {
	FACTOR(CLK_INFRA_CLK_13M, "clk13m", "clk26m", 1, 2),
};

static const struct mtk_clk_rst_desc clk_rst_desc[] = {
	/* infrasys */
	{
		.version = MTK_RST_SIMPLE,
		.rst_bank_nr = 2,
		.reg_ofs = 0x30,
	},
	/* pericfg */
	{
		.version = MTK_RST_SIMPLE,
		.rst_bank_nr = 2,
		.reg_ofs = 0x0,
	},
};

static struct clk_hw_onecell_data *infra_clk_data;

static void __init mtk_infrasys_init_early(struct device_node *node)
@@ -787,7 +802,7 @@ static int mtk_infrasys_init(struct platform_device *pdev)
	if (r)
		return r;

	mtk_register_reset_controller(node, 2, 0x30, MTK_RST_SIMPLE);
	mtk_register_reset_controller(node, &clk_rst_desc[0]);

	return 0;
}
@@ -910,7 +925,7 @@ static int mtk_pericfg_init(struct platform_device *pdev)
	if (r)
		return r;

	mtk_register_reset_controller(node, 2, 0x0, MTK_RST_SIMPLE);
	mtk_register_reset_controller(node, &clk_rst_desc[1]);

	return 0;
}
+17 −2
Original line number Diff line number Diff line
@@ -1258,6 +1258,21 @@ static const struct mtk_pll_data plls[] = {
		0, 31, 0x0300, 4, 0, 0, 0, 0x0304, 0),
};

static const struct mtk_clk_rst_desc clk_rst_desc[] = {
	/* infra */
	{
		.version = MTK_RST_SIMPLE,
		.rst_bank_nr = 2,
		.reg_ofs = 0x30,
	},
	/* peri */
	{
		.version = MTK_RST_SIMPLE,
		.rst_bank_nr = 2,
		.reg_ofs = 0x0,
	},
};

static int clk_mt2712_apmixed_probe(struct platform_device *pdev)
{
	struct clk_hw_onecell_data *clk_data;
@@ -1361,7 +1376,7 @@ static int clk_mt2712_infra_probe(struct platform_device *pdev)
		pr_err("%s(): could not register clock provider: %d\n",
			__func__, r);

	mtk_register_reset_controller(node, 2, 0x30, MTK_RST_SIMPLE);
	mtk_register_reset_controller(node, &clk_rst_desc[0]);

	return r;
}
@@ -1383,7 +1398,7 @@ static int clk_mt2712_peri_probe(struct platform_device *pdev)
		pr_err("%s(): could not register clock provider: %d\n",
			__func__, r);

	mtk_register_reset_controller(node, 2, 0, MTK_RST_SIMPLE);
	mtk_register_reset_controller(node, &clk_rst_desc[1]);

	return r;
}
Loading