static int ksz9021_load_values(struct mii_softc *sc, phandle_t node, uint32_t reg, char *field1, char *field2, char *field3, char *field4) { pcell_t dts_value[1]; int len; int val; val = 0; if ((len = OF_getproplen(node, field1)) > 0) { OF_getencprop(node, field1, dts_value, len); val = PS_TO_REG(dts_value[0]); } if ((len = OF_getproplen(node, field2)) > 0) { OF_getencprop(node, field2, dts_value, len); val |= PS_TO_REG(dts_value[0]) << 4; } if ((len = OF_getproplen(node, field3)) > 0) { OF_getencprop(node, field3, dts_value, len); val |= PS_TO_REG(dts_value[0]) << 8; } if ((len = OF_getproplen(node, field4)) > 0) { OF_getencprop(node, field4, dts_value, len); val |= PS_TO_REG(dts_value[0]) << 12; } micphy_write(sc, reg, val); return (0); }
static void ksz90x1_load_values(struct mii_softc *sc, phandle_t node, uint32_t dev, uint32_t reg, char *field1, uint32_t f1mask, int f1off, char *field2, uint32_t f2mask, int f2off, char *field3, uint32_t f3mask, int f3off, char *field4, uint32_t f4mask, int f4off) { pcell_t dts_value[1]; int len; int val; if (sc->mii_mpd_model == MII_MODEL_MICREL_KSZ9031) val = ksz9031_read(sc, dev, reg); else val = ksz9021_read(sc, reg); if ((len = OF_getproplen(node, field1)) > 0) { OF_getencprop(node, field1, dts_value, len); val &= ~(f1mask << f1off); val |= (PS_TO_REG(dts_value[0]) & f1mask) << f1off; } if (field2 != NULL && (len = OF_getproplen(node, field2)) > 0) { OF_getencprop(node, field2, dts_value, len); val &= ~(f2mask << f2off); val |= (PS_TO_REG(dts_value[0]) & f2mask) << f2off; } if (field3 != NULL && (len = OF_getproplen(node, field3)) > 0) { OF_getencprop(node, field3, dts_value, len); val &= ~(f3mask << f3off); val |= (PS_TO_REG(dts_value[0]) & f3mask) << f3off; } if (field4 != NULL && (len = OF_getproplen(node, field4)) > 0) { OF_getencprop(node, field4, dts_value, len); val &= ~(f4mask << f4off); val |= (PS_TO_REG(dts_value[0]) & f4mask) << f4off; } if (sc->mii_mpd_model == MII_MODEL_MICREL_KSZ9031) ksz9031_write(sc, dev, reg, val); else ksz9021_write(sc, reg, val); }