Lines Matching +full:need +full:- +full:phy +full:- +full:for +full:- +full:wake
2 * Copyright (C) 2004-2008 Freescale Semiconductor, Inc.
3 * TsiChung Liew (Tsi-Chung.Liew@freescale.com)
5 * SPDX-License-Identifier: GPL-2.0+
31 /* Make MII read/write commands for the FEC. */
78 * mii_init -- Initialize the MII for MII command without ethernet
83 volatile FEC_T *fecp = (FEC_T *) (info->miibase); in mii_reset()
86 fecp->ecr = FEC_ECR_RESET; in mii_reset()
88 for (i = 0; (fecp->ecr & FEC_ECR_RESET) && (i < FEC_RESET_DELAY); ++i) { in mii_reset()
95 /* send command to phy using mii, wait for result */
106 info = dev->priv; in mii_send()
108 ep = (FEC_T *) info->miibase; in mii_send()
110 ep->mmfr = mii_cmd; /* command to phy */ in mii_send()
112 /* wait for mii complete */ in mii_send()
113 while (!(ep->eir & FEC_EIR_MII) && (j < MCFFEC_TOUT_LOOP)) { in mii_send()
119 return -1; in mii_send()
122 mii_reply = ep->mmfr; /* result from phy */ in mii_send()
123 ep->eir = FEC_EIR_MII; /* clear MII complete */ in mii_send()
129 return (mii_reply & 0xffff); /* data read from phy */ in mii_send()
137 FEC_INFO_T *info = dev->priv; in mii_discover_phy()
142 if (info->phyname_init) in mii_discover_phy()
143 return info->phy_addr; in mii_discover_phy()
145 phyaddr = -1; /* didn't find a PHY yet */ in mii_discover_phy()
146 for (pass = 1; pass <= MAX_PHY_PASSES && phyaddr < 0; ++pass) { in mii_discover_phy()
148 /* PHY may need more time to recover from reset. in mii_discover_phy()
151 * With 11 passes this gives it 100ms to wake up. in mii_discover_phy()
156 for (phyno = 0; phyno < 32 && phyaddr < 0; ++phyno) { in mii_discover_phy()
160 printf("PHY type 0x%x pass %d type\n", phytype, pass); in mii_discover_phy()
170 printf("PHY @ 0x%x pass %d\n", phyno, pass); in mii_discover_phy()
173 for (i = 0; (i < ARRAY_SIZE(phyinfo)) in mii_discover_phy()
177 printf("phyid %x - %s\n", in mii_discover_phy()
181 strcpy(info->phy_name, phyinfo[i].strid); in mii_discover_phy()
182 info->phyname_init = 1; in mii_discover_phy()
192 strcpy(info->phy_name, "unknown"); in mii_discover_phy()
193 info->phyname_init = 1; in mii_discover_phy()
200 printf("No PHY device found.\n"); in mii_discover_phy()
219 info = dev->priv; in __mii_init()
221 fecp = (FEC_T *) info->miibase; in __mii_init()
228 fecp->eimr = 0; in __mii_init()
231 fecp->eir = 0xffffffff; in __mii_init()
234 miispd = (gd->bus_clk / 1000000) / 5; in __mii_init()
235 fecp->mscr = miispd << 1; in __mii_init()
237 info->phy_addr = mii_discover_phy(dev); in __mii_init()
242 /* Read PHY control register */ in __mii_init()
243 miiphy_read(dev->name, info->phy_addr, MII_BMCR, &status); in __mii_init()
245 /* If phy set to autonegotiate, wait for autonegotiation done, in __mii_init()
246 * if phy is not autonegotiating, just wait for link up. in __mii_init()
253 /* Read PHY status register */ in __mii_init()
254 miiphy_read(dev->name, info->phy_addr, MII_BMSR, &status); in __mii_init()
264 /* adapt to the duplex and speed settings of the phy */ in __mii_init()
265 info->dup_spd = miiphy_duplex(dev->name, info->phy_addr) << 16; in __mii_init()
266 info->dup_spd |= miiphy_speed(dev->name, info->phy_addr); in __mii_init()
270 * Read and write a MII PHY register, routines used by MII Utilities
274 * no PHY connected...
275 * For now always return 0.