mirror of
https://github.com/torvalds/linux.git
synced 2024-12-01 00:21:32 +00:00
net: bcmgenet: request and enable main clock earlier
bcmgenet_set_hw_params() will read the hardware version and compare it
with the one we are getting from Device Tree. Due to the clock being
enabled too late, bcmgenet_set_hw_params() will cause bus errors since
the GENET hardware block is still gated off by the time
bcmgenet_set_hw_params() is called, this will also make us fail the
version check since we will read the value 0 from the hardware.
Fix this by requesting the clock before the first piece of code that
needs to access hardware register.
Fixes: 1c1008c793
("net: bcmgenet: add main driver file")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
8dff81e87d
commit
e4a60a93c4
@ -2533,6 +2533,13 @@ static int bcmgenet_probe(struct platform_device *pdev)
|
||||
priv->pdev = pdev;
|
||||
priv->version = (enum bcmgenet_version)of_id->data;
|
||||
|
||||
priv->clk = devm_clk_get(&priv->pdev->dev, "enet");
|
||||
if (IS_ERR(priv->clk))
|
||||
dev_warn(&priv->pdev->dev, "failed to get enet clock\n");
|
||||
|
||||
if (!IS_ERR(priv->clk))
|
||||
clk_prepare_enable(priv->clk);
|
||||
|
||||
bcmgenet_set_hw_params(priv);
|
||||
|
||||
/* Mii wait queue */
|
||||
@ -2541,17 +2548,10 @@ static int bcmgenet_probe(struct platform_device *pdev)
|
||||
priv->rx_buf_len = RX_BUF_LENGTH;
|
||||
INIT_WORK(&priv->bcmgenet_irq_work, bcmgenet_irq_task);
|
||||
|
||||
priv->clk = devm_clk_get(&priv->pdev->dev, "enet");
|
||||
if (IS_ERR(priv->clk))
|
||||
dev_warn(&priv->pdev->dev, "failed to get enet clock\n");
|
||||
|
||||
priv->clk_wol = devm_clk_get(&priv->pdev->dev, "enet-wol");
|
||||
if (IS_ERR(priv->clk_wol))
|
||||
dev_warn(&priv->pdev->dev, "failed to get enet-wol clock\n");
|
||||
|
||||
if (!IS_ERR(priv->clk))
|
||||
clk_prepare_enable(priv->clk);
|
||||
|
||||
err = reset_umac(priv);
|
||||
if (err)
|
||||
goto err_clk_disable;
|
||||
|
Loading…
Reference in New Issue
Block a user