Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5fa9c0fe authored by Shawn Guo's avatar Shawn Guo Committed by David S. Miller
Browse files

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: default avatarShawn Guo <shawn.guo@linaro.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2ca9b2aa
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -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 @@ fec_probe(struct platform_device *pdev)
	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: