[U-Boot] [PATCH] mpc5xxx_fec: add call to reset_phy() after PHY initialization

Some boards need their board-specific PHY quirks to be called to PHY to work normally. As mpc5xxx_fec driver uses on demand PHY initialization and can even reinit PHY during normal operation we can't count on reset_phy() call from arch/<arch>/lib/board.c (it is most likely called _before_ we init the PHY from the driver) so we need to add call to reset_phy() directly in the driver.
Cc: Ben Warren biggerbadderben@gmail.com Signed-off-by: Ilya Yanok yanok@emcraft.com --- drivers/net/mpc5xxx_fec.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/net/mpc5xxx_fec.c b/drivers/net/mpc5xxx_fec.c index c88e596..bc8c922 100644 --- a/drivers/net/mpc5xxx_fec.c +++ b/drivers/net/mpc5xxx_fec.c @@ -250,6 +250,13 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis) mpc5xxx_fec_init_phy(dev, bis);
/* + * Call board-specific PHY fixups (if any) + */ +#ifdef CONFIG_RESET_PHY_R + reset_phy(); +#endif + + /* * Initialize RxBD/TxBD rings */ mpc5xxx_fec_rbd_init(fec);

Dear Ben,
In message 1282208946-18823-1-git-send-email-yanok@emcraft.com Ilya Yanok wrote:
Some boards need their board-specific PHY quirks to be called to PHY to work normally. As mpc5xxx_fec driver uses on demand PHY initialization and can even reinit PHY during normal operation we can't count on reset_phy() call from arch/<arch>/lib/board.c (it is most likely called _before_ we init the PHY from the driver) so we need to add call to reset_phy() directly in the driver.
Cc: Ben Warren biggerbadderben@gmail.com Signed-off-by: Ilya Yanok yanok@emcraft.com
drivers/net/mpc5xxx_fec.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
Do you have any comments?
Best regards,
Wolfgang Denk

Dear Ben,
ping again...
In message 20100913093325.A8A8415242D@gemini.denx.de I wrote:
Dear Ben,
In message 1282208946-18823-1-git-send-email-yanok@emcraft.com Ilya Yanok wrote:
Some boards need their board-specific PHY quirks to be called to PHY to work normally. As mpc5xxx_fec driver uses on demand PHY initialization and can even reinit PHY during normal operation we can't count on reset_phy() call from arch/<arch>/lib/board.c (it is most likely called _before_ we init the PHY from the driver) so we need to add call to reset_phy() directly in the driver.
Cc: Ben Warren biggerbadderben@gmail.com Signed-off-by: Ilya Yanok yanok@emcraft.com
drivers/net/mpc5xxx_fec.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
Do you have any comments?
Please comment how to go on - this is a real problem that needs to be fixed one way or another.
Best regards,
Wolfgang Denk

Hi Ilya,
On 8/19/2010 2:09 AM, Ilya Yanok wrote:
Some boards need their board-specific PHY quirks to be called to PHY to work normally. As mpc5xxx_fec driver uses on demand PHY initialization and can even reinit PHY during normal operation we can't count on reset_phy() call from arch/<arch>/lib/board.c (it is most likely called _before_ we init the PHY from the driver) so we need to add call to reset_phy() directly in the driver.
Cc: Ben Warrenbiggerbadderben@gmail.com Signed-off-by: Ilya Yanokyanok@emcraft.com
drivers/net/mpc5xxx_fec.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/drivers/net/mpc5xxx_fec.c b/drivers/net/mpc5xxx_fec.c index c88e596..bc8c922 100644 --- a/drivers/net/mpc5xxx_fec.c +++ b/drivers/net/mpc5xxx_fec.c @@ -250,6 +250,13 @@ static int mpc5xxx_fec_init(struct eth_device *dev, bd_t * bis) mpc5xxx_fec_init_phy(dev, bis);
/*
* Call board-specific PHY fixups (if any)
*/
+#ifdef CONFIG_RESET_PHY_R
- reset_phy();
+#endif
- /*
*/ mpc5xxx_fec_rbd_init(fec);
- Initialize RxBD/TxBD rings
Applied to net repo. Please accept my sincere apologies for taking so long to process.
regards, Ben
participants (3)
-
Ben Warren
-
Ilya Yanok
-
Wolfgang Denk