Commit 9af771ce authored by Maxime Chevallier's avatar Maxime Chevallier Committed by David S. Miller

net: mvpp2: Fix clock resource by adding missing mg_core_clk

Marvell's PPv2.2 IP needs an additional clock named "MG Core clock".
This is required on Armada 7K and 8K.

This commit adds the required clock in mvpp2, making sure it's only
used on PPv2.2.

Fixes: c7e92def ("clk: mvebu: cp110: Fix clock tree representation")
Signed-off-by: default avatarMaxime Chevallier <maxime.chevallier@bootlin.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 45f972ad
...@@ -942,6 +942,7 @@ struct mvpp2 { ...@@ -942,6 +942,7 @@ struct mvpp2 {
struct clk *pp_clk; struct clk *pp_clk;
struct clk *gop_clk; struct clk *gop_clk;
struct clk *mg_clk; struct clk *mg_clk;
struct clk *mg_core_clk;
struct clk *axi_clk; struct clk *axi_clk;
/* List of pointers to port structures */ /* List of pointers to port structures */
...@@ -8768,18 +8769,27 @@ static int mvpp2_probe(struct platform_device *pdev) ...@@ -8768,18 +8769,27 @@ static int mvpp2_probe(struct platform_device *pdev)
err = clk_prepare_enable(priv->mg_clk); err = clk_prepare_enable(priv->mg_clk);
if (err < 0) if (err < 0)
goto err_gop_clk; goto err_gop_clk;
priv->mg_core_clk = devm_clk_get(&pdev->dev, "mg_core_clk");
if (IS_ERR(priv->mg_core_clk)) {
priv->mg_core_clk = NULL;
} else {
err = clk_prepare_enable(priv->mg_core_clk);
if (err < 0)
goto err_mg_clk;
}
} }
priv->axi_clk = devm_clk_get(&pdev->dev, "axi_clk"); priv->axi_clk = devm_clk_get(&pdev->dev, "axi_clk");
if (IS_ERR(priv->axi_clk)) { if (IS_ERR(priv->axi_clk)) {
err = PTR_ERR(priv->axi_clk); err = PTR_ERR(priv->axi_clk);
if (err == -EPROBE_DEFER) if (err == -EPROBE_DEFER)
goto err_mg_clk; goto err_mg_core_clk;
priv->axi_clk = NULL; priv->axi_clk = NULL;
} else { } else {
err = clk_prepare_enable(priv->axi_clk); err = clk_prepare_enable(priv->axi_clk);
if (err < 0) if (err < 0)
goto err_mg_clk; goto err_mg_core_clk;
} }
/* Get system's tclk rate */ /* Get system's tclk rate */
...@@ -8851,6 +8861,10 @@ static int mvpp2_probe(struct platform_device *pdev) ...@@ -8851,6 +8861,10 @@ static int mvpp2_probe(struct platform_device *pdev)
} }
err_axi_clk: err_axi_clk:
clk_disable_unprepare(priv->axi_clk); clk_disable_unprepare(priv->axi_clk);
err_mg_core_clk:
if (priv->hw_version == MVPP22)
clk_disable_unprepare(priv->mg_core_clk);
err_mg_clk: err_mg_clk:
if (priv->hw_version == MVPP22) if (priv->hw_version == MVPP22)
clk_disable_unprepare(priv->mg_clk); clk_disable_unprepare(priv->mg_clk);
...@@ -8898,6 +8912,7 @@ static int mvpp2_remove(struct platform_device *pdev) ...@@ -8898,6 +8912,7 @@ static int mvpp2_remove(struct platform_device *pdev)
return 0; return 0;
clk_disable_unprepare(priv->axi_clk); clk_disable_unprepare(priv->axi_clk);
clk_disable_unprepare(priv->mg_core_clk);
clk_disable_unprepare(priv->mg_clk); clk_disable_unprepare(priv->mg_clk);
clk_disable_unprepare(priv->pp_clk); clk_disable_unprepare(priv->pp_clk);
clk_disable_unprepare(priv->gop_clk); clk_disable_unprepare(priv->gop_clk);
......
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