[U-Boot] [PATCH] 4xx: cleanup ethernet phy initialization on PMC440 boards
Matthias Fuchs
matthias.fuchs at esd.eu
Wed Mar 19 21:30:39 CET 2014
This patch moves phy initialization for VSC8601 ethernet
phys that are used on early board revisions into a separate
setup function.
Signed-off-by: Matthias Fuchs <matthias.fuchs at esd.eu>
---
board/esd/pmc440/pmc440.c | 45 ++++++++++++++++++++++-----------------------
1 files changed, 22 insertions(+), 23 deletions(-)
diff --git a/board/esd/pmc440/pmc440.c b/board/esd/pmc440/pmc440.c
index 7aee8e4..3165486 100644
--- a/board/esd/pmc440/pmc440.c
+++ b/board/esd/pmc440/pmc440.c
@@ -643,6 +643,23 @@ int is_pci_host(struct pci_controller *hose)
#endif /* defined(CONFIG_PCI) */
#ifdef CONFIG_RESET_PHY_R
+int pmc440_setup_vsc8601(char *devname, int phy_addr,
+ unsigned short behavior, unsigned short method)
+{
+ /* adjust LED behavior */
+ if (miiphy_write(devname, phy_addr, 0x1f, 0x0001) != 0) {
+ printf("Phy%d: register write access failed\n", phy_addr);
+ return -1;
+ }
+
+ miiphy_write(devname, phy_addr, 0x11, 0x0010);
+ miiphy_write(devname, phy_addr, 0x11, behavior);
+ miiphy_write(devname, phy_addr, 0x10, method);
+ miiphy_write(devname, phy_addr, 0x1f, 0x0000);
+
+ return 0;
+}
+
int pmc440_setup_ksz9031(char *devname, int phy_addr)
{
unsigned short id1, id2;
@@ -683,29 +700,11 @@ void reset_phy(void)
val_behavior = 0x0cf0;
}
- if (miiphy_write("ppc_4xx_eth0",
- CONFIG_PHY_ADDR, 0x1f, 0x0001) == 0) {
- miiphy_write("ppc_4xx_eth0",
- CONFIG_PHY_ADDR, 0x11, 0x0010);
- miiphy_write("ppc_4xx_eth0",
- CONFIG_PHY_ADDR, 0x11, val_behavior);
- miiphy_write("ppc_4xx_eth0",
- CONFIG_PHY_ADDR, 0x10, val_method);
- miiphy_write("ppc_4xx_eth0",
- CONFIG_PHY_ADDR, 0x1f, 0x0000);
- }
-
- if (miiphy_write("ppc_4xx_eth1",
- CONFIG_PHY1_ADDR, 0x1f, 0x0001) == 0) {
- miiphy_write("ppc_4xx_eth1",
- CONFIG_PHY1_ADDR, 0x11, 0x0010);
- miiphy_write("ppc_4xx_eth1",
- CONFIG_PHY1_ADDR, 0x11, val_behavior);
- miiphy_write("ppc_4xx_eth1",
- CONFIG_PHY1_ADDR, 0x10, val_method);
- miiphy_write("ppc_4xx_eth1",
- CONFIG_PHY1_ADDR, 0x1f, 0x0000);
- }
+ /* boards up to rev. 1.3 use Vitesse VSC8601 phys */
+ pmc440_setup_vsc8601("ppc_4xx_eth0", CONFIG_PHY_ADDR,
+ val_method, val_behavior);
+ pmc440_setup_vsc8601("ppc_4xx_eth1", CONFIG_PHY1_ADDR,
+ val_method, val_behavior);
} else {
/* rev. 1.4 uses a Micrel KSZ9031 */
pmc440_setup_ksz9031("ppc_4xx_eth0", CONFIG_PHY_ADDR);
--
1.6.1
More information about the U-Boot
mailing list