/* Returns 0, unless there's a write error */ staticint qs6612_config_init(struct phy_device *phydev)
{ /* The PHY powers up isolated on the RPX, *sosendacommandtoallowoperation. *XXX-Mydocsindicatethisshouldbe0x0940 *...orsomething.Thecurrentvaluesetsthree *reservedbits,bit11,whichspecifiesitshouldbe *settoone,bit10,whichspecifiesitshouldbeset *to0,andbit7,whichdoesn'tspecify.However,my *docsarepreliminary,andIwillleaveitlikethis *untilsomeonemoreknowledgablecorrectsmeorit. *--AndyFleming
*/ return phy_write(phydev, MII_QS6612_PCR, 0x0dc0);
}
staticint qs6612_ack_interrupt(struct phy_device *phydev)
{ int err;
/* The Interrupt Source register is not self-clearing, bits 4 and 5 are *clearedwhenMII_BMSRisreadandbits1and3areclearedwhen *MII_EXPANSIONisread
*/
err = phy_read(phydev, MII_QS6612_ISR);
if (err < 0) return err;
err = phy_read(phydev, MII_BMSR);
if (err < 0) return err;
err = phy_read(phydev, MII_EXPANSION);
if (err < 0) return err;
return0;
}
staticint qs6612_config_intr(struct phy_device *phydev)
{ int err;
if (phydev->interrupts == PHY_INTERRUPT_ENABLED) { /* clear any interrupts before enabling them */
err = qs6612_ack_interrupt(phydev); if (err) return err;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.