Lines Matching defs:pPhy

48 #define REG(x) pPhy->au16Regs[x##_IDX]
58 static void softReset(PPHY pPhy);
62 static uint16_t regReadDefault (PPHY pPhy, uint32_t index);
63 static void regWriteDefault (PPHY pPhy, uint32_t index, uint16_t u16Value);
64 static uint16_t regReadForbidden (PPHY pPhy, uint32_t index);
65 static void regWriteForbidden (PPHY pPhy, uint32_t index, uint16_t u16Value);
66 static uint16_t regReadUnimplemented (PPHY pPhy, uint32_t index);
67 static void regWriteUnimplemented(PPHY pPhy, uint32_t index, uint16_t u16Value);
71 static void regWritePCTRL (PPHY pPhy, uint32_t index, uint16_t u16Value);
72 static uint16_t regReadPSTATUS (PPHY pPhy, uint32_t index);
73 static uint16_t regReadGSTATUS (PPHY pPhy, uint32_t index);
86 uint16_t (*pfnRead)(PPHY pPhy, uint32_t index);
88 void (*pfnWrite)(PPHY pPhy, uint32_t index, uint16_t u16Value);
130 static uint16_t Phy::regReadDefault(PPHY pPhy, uint32_t index)
133 return pPhy->au16Regs[index];
144 static void Phy::regWriteDefault(PPHY pPhy, uint32_t index, uint16_t u16Value)
147 pPhy->au16Regs[index] = u16Value;
159 static uint16_t Phy::regReadForbidden(PPHY pPhy, uint32_t index)
162 pPhy->iInstance, s_regMap[index].u32Address, s_regMap[index].pszName));
174 static void Phy::regWriteForbidden(PPHY pPhy, uint32_t index, uint16_t u16Value)
177 pPhy->iInstance, s_regMap[index].u32Address, s_regMap[index].pszName));
189 static uint16_t Phy::regReadUnimplemented(PPHY pPhy, uint32_t index)
192 pPhy->iInstance, s_regMap[index].u32Address, s_regMap[index].pszName));
204 static void Phy::regWriteUnimplemented(PPHY pPhy, uint32_t index, uint16_t u16Value)
207 pPhy->iInstance, s_regMap[index].u32Address, s_regMap[index].pszName));
240 uint16_t Phy::readRegister(PPHY pPhy, uint32_t u32Address)
247 u16 = s_regMap[index].pfnRead(pPhy, index);
249 pPhy->iInstance, s_regMap[index].u32Address, u16,
255 pPhy->iInstance, u32Address));
266 void Phy::writeRegister(PPHY pPhy, uint32_t u32Address, uint16_t u16Value)
273 pPhy->iInstance, s_regMap[index].u32Address, u16Value,
275 s_regMap[index].pfnWrite(pPhy, index, u16Value);
280 pPhy->iInstance, u32Address));
293 void Phy::init(PPHY pPhy, int iNICInstance, uint16_t u16EPid)
295 pPhy->iInstance = iNICInstance;
303 hardReset(pPhy);
311 void Phy::hardReset(PPHY pPhy)
313 PhyLog(("PHY#%d Hard reset\n", pPhy->iInstance));
339 pPhy->u16State = MDIO_IDLE;
345 static void Phy::softReset(PPHY pPhy)
347 PhyLog(("PHY#%d Soft reset is not yet implemented!\n", pPhy->iInstance));
355 bool Phy::isLinkUp(PPHY pPhy)
368 void Phy::setLinkStatus(PPHY pPhy, bool fLinkIsUp)
389 * @param pPhy The pointer to this instance.
391 int Phy::saveState(PSSMHANDLE pSSMHandle, PPHY pPhy)
393 SSMR3PutMem(pSSMHandle, pPhy->au16Regs, sizeof(pPhy->au16Regs));
405 * @param pPhy The pointer to this instance.
407 int Phy::loadState(PSSMHANDLE pSSMHandle, PPHY pPhy)
409 return SSMR3GetMem(pSSMHandle, pPhy->au16Regs, sizeof(pPhy->au16Regs));
424 static void Phy::regWritePCTRL(PPHY pPhy, uint32_t index, uint16_t u16Value)
427 softReset(pPhy);
429 regWriteDefault(pPhy, index, u16Value);
441 static uint16_t Phy::regReadPSTATUS(PPHY pPhy, uint32_t index)
459 static uint16_t Phy::regReadGSTATUS(PPHY pPhy, uint32_t index)
487 bool Phy::readMDIO(PPHY pPhy)
491 switch (pPhy->u16State)
494 Assert(pPhy->u16Cnt == 1);
496 pPhy->u16State = MDIO_READ;
497 pPhy->u16Cnt = 16;
501 fPin = (pPhy->u16Acc & 0x8000) != 0;
502 pPhy->u16Acc <<= 1;
503 if (--pPhy->u16Cnt == 0)
504 pPhy->u16State = MDIO_IDLE;
507 PhyLog(("PHY#%d WARNING! MDIO pin read in %s state\n", pPhy->iInstance, Phy::getStateName(pPhy->u16State)));
508 pPhy->u16State = MDIO_IDLE;
514 void Phy::writeMDIO(PPHY pPhy, bool fPin)
516 switch (pPhy->u16State)
520 pPhy->u16State = MDIO_ST;
525 pPhy->u16State = MDIO_OP_ADR;
526 pPhy->u16Cnt = 12; /* OP + PHYADR + REGADR */
527 pPhy->u16Acc = 0;
531 Assert(pPhy->u16Cnt);
533 pPhy->u16Acc <<= 1;
535 pPhy->u16Acc |= 1;
536 if (--pPhy->u16Cnt == 0)
540 switch (pPhy->u16Acc >> 10)
543 pPhy->u16Acc = readRegister(pPhy, pPhy->u16Acc & 0x1F);
544 pPhy->u16State = MDIO_TA_RD;
545 pPhy->u16Cnt = 1;
548 pPhy->u16RegAdr = pPhy->u16Acc & 0x1F;
549 pPhy->u16State = MDIO_TA_WR;
550 pPhy->u16Cnt = 2;
553 PhyLog(("PHY#%d ERROR! Invalid MDIO op: %d\n", pPhy->iInstance, pPhy->u16Acc >> 10));
554 pPhy->u16State = MDIO_IDLE;
560 Assert(pPhy->u16Cnt <= 2);
561 Assert(pPhy->u16Cnt > 0);
562 if (--pPhy->u16Cnt == 0)
564 pPhy->u16State = MDIO_WRITE;
565 pPhy->u16Cnt = 16;
569 Assert(pPhy->u16Cnt);
570 pPhy->u16Acc <<= 1;
572 pPhy->u16Acc |= 1;
573 if (--pPhy->u16Cnt == 0)
575 writeRegister(pPhy, pPhy->u16RegAdr, pPhy->u16Acc);
576 pPhy->u16State = MDIO_IDLE;
580 PhyLog(("PHY#%d ERROR! MDIO pin write in %s state\n", pPhy->iInstance, Phy::getStateName(pPhy->u16State)));
581 pPhy->u16State = MDIO_IDLE;