net: fec: enable regulator for fec phy
If bootloader or platform initialization code does not enable the power supply to fec phy, we need to do it in fec driver before calling fec_reset_phy to have the phy powered on. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2ca9b2aa0d
commit
5fa9c0fe3e
1 changed files with 13 additions and 0 deletions
|
@ -49,6 +49,7 @@
|
|||
#include <linux/of_gpio.h>
|
||||
#include <linux/of_net.h>
|
||||
#include <linux/pinctrl/consumer.h>
|
||||
#include <linux/regulator/consumer.h>
|
||||
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
|
@ -1546,6 +1547,7 @@ fec_probe(struct platform_device *pdev)
|
|||
const struct of_device_id *of_id;
|
||||
static int dev_id;
|
||||
struct pinctrl *pinctrl;
|
||||
struct regulator *reg_phy;
|
||||
|
||||
of_id = of_match_device(fec_dt_ids, &pdev->dev);
|
||||
if (of_id)
|
||||
|
@ -1632,6 +1634,16 @@ fec_probe(struct platform_device *pdev)
|
|||
clk_prepare_enable(fep->clk_ahb);
|
||||
clk_prepare_enable(fep->clk_ipg);
|
||||
|
||||
reg_phy = devm_regulator_get(&pdev->dev, "phy");
|
||||
if (!IS_ERR(reg_phy)) {
|
||||
ret = regulator_enable(reg_phy);
|
||||
if (ret) {
|
||||
dev_err(&pdev->dev,
|
||||
"Failed to enable phy regulator: %d\n", ret);
|
||||
goto failed_regulator;
|
||||
}
|
||||
}
|
||||
|
||||
fec_reset_phy(pdev);
|
||||
|
||||
ret = fec_enet_init(ndev);
|
||||
|
@ -1655,6 +1667,7 @@ failed_register:
|
|||
fec_enet_mii_remove(fep);
|
||||
failed_mii_init:
|
||||
failed_init:
|
||||
failed_regulator:
|
||||
clk_disable_unprepare(fep->clk_ahb);
|
||||
clk_disable_unprepare(fep->clk_ipg);
|
||||
failed_pin:
|
||||
|
|
Loading…
Add table
Reference in a new issue