/* * These two tables get bitwise-anded together to produce the final result. * This means the speed table must contain both duplex settings, and the * duplex table must contain all speed settings.
*/ staticconststruct swmii_regs speed[] = {
[SWMII_SPEED_10] = {
.lpa = LPA_10FULL | LPA_10HALF,
},
[SWMII_SPEED_100] = {
.bmsr = BMSR_100FULL | BMSR_100HALF,
.lpa = LPA_100FULL | LPA_100HALF,
},
[SWMII_SPEED_1000] = {
.bmsr = BMSR_ESTATEN,
.lpagb = LPA_1000FULL | LPA_1000HALF,
.estat = ESTATUS_1000_TFULL | ESTATUS_1000_THALF,
},
};
staticint swphy_decode_speed(int speed)
{ switch (speed) { case 1000: return SWMII_SPEED_1000; case 100: return SWMII_SPEED_100; case 10: return SWMII_SPEED_10; default: return -EINVAL;
}
}
/** * swphy_validate_state - validate the software phy status * @state: software phy status * * This checks that we can represent the state stored in @state can be * represented in the emulated MII registers. Returns 0 if it can, * otherwise returns -EINVAL.
*/ int swphy_validate_state(conststruct fixed_phy_status *state)
{ int err;
/** * swphy_read_reg - return a MII register from the fixed phy state * @reg: MII register * @state: fixed phy status * * Return the MII @reg register generated from the fixed phy state @state.
*/ int swphy_read_reg(int reg, conststruct fixed_phy_status *state)
{ int speed_index, duplex_index;
u16 bmsr = BMSR_ANEGCAPABLE;
u16 estat = 0;
u16 lpagb = 0;
u16 lpa = 0;
if (reg > MII_REGS_NUM) return -1;
speed_index = swphy_decode_speed(state->speed); if (WARN_ON(speed_index < 0)) return 0;
switch (reg) { case MII_BMCR: return BMCR_ANENABLE; case MII_BMSR: return bmsr; case MII_PHYSID1: case MII_PHYSID2: return 0; case MII_LPA: return lpa; case MII_STAT1000: return lpagb; case MII_ESTATUS: return estat;
/* * We do not support emulating Clause 45 over Clause 22 register * reads. Return an error instead of bogus data.
*/ case MII_MMD_CTRL: case MII_MMD_DATA: return -1;
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.