Commit 3c4e13cf authored by Thomas Richard's avatar Thomas Richard Committed by Vinod Koul

phy: ti: phy-j721e-wiz: split wiz_clock_init() function

The wiz_clock_init() function mixes probe and hardware configuration.
Rename the wiz_clock_init() to wiz_clock_probe() and move the hardware
configuration part in a new function named wiz_clock_init().

This hardware configuration sequence must be called during the resume
stage of the driver.
Signed-off-by: default avatarThomas Richard <thomas.richard@bootlin.com>
Link: https://lore.kernel.org/r/20240412-j7200-phy-s2r-v1-2-f15815833974@bootlin.comSigned-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 5aa4733b
...@@ -1076,26 +1076,12 @@ static int wiz_clock_register(struct wiz *wiz) ...@@ -1076,26 +1076,12 @@ static int wiz_clock_register(struct wiz *wiz)
return ret; return ret;
} }
static int wiz_clock_init(struct wiz *wiz, struct device_node *node) static void wiz_clock_init(struct wiz *wiz)
{ {
const struct wiz_clk_mux_sel *clk_mux_sel = wiz->clk_mux_sel;
struct device *dev = wiz->dev;
struct device_node *clk_node;
const char *node_name;
unsigned long rate; unsigned long rate;
struct clk *clk;
int ret;
int i;
clk = devm_clk_get(dev, "core_ref_clk");
if (IS_ERR(clk))
return dev_err_probe(dev, PTR_ERR(clk),
"core_ref_clk clock not found\n");
wiz->input_clks[WIZ_CORE_REFCLK] = clk; rate = clk_get_rate(wiz->input_clks[WIZ_CORE_REFCLK]);
if (rate >= REF_CLK_100MHZ)
rate = clk_get_rate(clk);
if (rate >= 100000000)
regmap_field_write(wiz->pma_cmn_refclk_int_mode, 0x1); regmap_field_write(wiz->pma_cmn_refclk_int_mode, 0x1);
else else
regmap_field_write(wiz->pma_cmn_refclk_int_mode, 0x3); regmap_field_write(wiz->pma_cmn_refclk_int_mode, 0x3);
...@@ -1119,6 +1105,38 @@ static int wiz_clock_init(struct wiz *wiz, struct device_node *node) ...@@ -1119,6 +1105,38 @@ static int wiz_clock_init(struct wiz *wiz, struct device_node *node)
break; break;
} }
if (wiz->input_clks[WIZ_CORE_REFCLK1]) {
rate = clk_get_rate(wiz->input_clks[WIZ_CORE_REFCLK1]);
if (rate >= REF_CLK_100MHZ)
regmap_field_write(wiz->pma_cmn_refclk1_int_mode, 0x1);
else
regmap_field_write(wiz->pma_cmn_refclk1_int_mode, 0x3);
}
rate = clk_get_rate(wiz->input_clks[WIZ_EXT_REFCLK]);
if (rate >= REF_CLK_100MHZ)
regmap_field_write(wiz->pma_cmn_refclk_mode, 0x0);
else
regmap_field_write(wiz->pma_cmn_refclk_mode, 0x2);
}
static int wiz_clock_probe(struct wiz *wiz, struct device_node *node)
{
const struct wiz_clk_mux_sel *clk_mux_sel = wiz->clk_mux_sel;
struct device *dev = wiz->dev;
struct device_node *clk_node;
const char *node_name;
struct clk *clk;
int ret;
int i;
clk = devm_clk_get(dev, "core_ref_clk");
if (IS_ERR(clk))
return dev_err_probe(dev, PTR_ERR(clk),
"core_ref_clk clock not found\n");
wiz->input_clks[WIZ_CORE_REFCLK] = clk;
if (wiz->data->pma_cmn_refclk1_int_mode) { if (wiz->data->pma_cmn_refclk1_int_mode) {
clk = devm_clk_get(dev, "core_ref1_clk"); clk = devm_clk_get(dev, "core_ref1_clk");
if (IS_ERR(clk)) if (IS_ERR(clk))
...@@ -1126,12 +1144,6 @@ static int wiz_clock_init(struct wiz *wiz, struct device_node *node) ...@@ -1126,12 +1144,6 @@ static int wiz_clock_init(struct wiz *wiz, struct device_node *node)
"core_ref1_clk clock not found\n"); "core_ref1_clk clock not found\n");
wiz->input_clks[WIZ_CORE_REFCLK1] = clk; wiz->input_clks[WIZ_CORE_REFCLK1] = clk;
rate = clk_get_rate(clk);
if (rate >= 100000000)
regmap_field_write(wiz->pma_cmn_refclk1_int_mode, 0x1);
else
regmap_field_write(wiz->pma_cmn_refclk1_int_mode, 0x3);
} }
clk = devm_clk_get(dev, "ext_ref_clk"); clk = devm_clk_get(dev, "ext_ref_clk");
...@@ -1141,11 +1153,7 @@ static int wiz_clock_init(struct wiz *wiz, struct device_node *node) ...@@ -1141,11 +1153,7 @@ static int wiz_clock_init(struct wiz *wiz, struct device_node *node)
wiz->input_clks[WIZ_EXT_REFCLK] = clk; wiz->input_clks[WIZ_EXT_REFCLK] = clk;
rate = clk_get_rate(clk); wiz_clock_init(wiz);
if (rate >= 100000000)
regmap_field_write(wiz->pma_cmn_refclk_mode, 0x0);
else
regmap_field_write(wiz->pma_cmn_refclk_mode, 0x2);
switch (wiz->type) { switch (wiz->type) {
case AM64_WIZ_10G: case AM64_WIZ_10G:
...@@ -1589,7 +1597,7 @@ static int wiz_probe(struct platform_device *pdev) ...@@ -1589,7 +1597,7 @@ static int wiz_probe(struct platform_device *pdev)
goto err_get_sync; goto err_get_sync;
} }
ret = wiz_clock_init(wiz, node); ret = wiz_clock_probe(wiz, node);
if (ret < 0) { if (ret < 0) {
dev_warn(dev, "Failed to initialize clocks\n"); dev_warn(dev, "Failed to initialize clocks\n");
goto err_get_sync; goto err_get_sync;
......
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