|
@@ -91,14 +91,16 @@ static struct platform_device_id fec_devtype[] = {
|
|
|
.driver_data = 0,
|
|
|
}, {
|
|
|
.name = "imx25-fec",
|
|
|
- .driver_data = FEC_QUIRK_USE_GASKET | FEC_QUIRK_MIB_CLEAR,
|
|
|
+ .driver_data = FEC_QUIRK_USE_GASKET | FEC_QUIRK_MIB_CLEAR |
|
|
|
+ FEC_QUIRK_HAS_FRREG,
|
|
|
}, {
|
|
|
.name = "imx27-fec",
|
|
|
- .driver_data = FEC_QUIRK_MIB_CLEAR,
|
|
|
+ .driver_data = FEC_QUIRK_MIB_CLEAR | FEC_QUIRK_HAS_FRREG,
|
|
|
}, {
|
|
|
.name = "imx28-fec",
|
|
|
.driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME |
|
|
|
- FEC_QUIRK_SINGLE_MDIO | FEC_QUIRK_HAS_RACC,
|
|
|
+ FEC_QUIRK_SINGLE_MDIO | FEC_QUIRK_HAS_RACC |
|
|
|
+ FEC_QUIRK_HAS_FRREG,
|
|
|
}, {
|
|
|
.name = "imx6q-fec",
|
|
|
.driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_HAS_GBIT |
|
|
@@ -2164,7 +2166,13 @@ static void fec_enet_get_regs(struct net_device *ndev,
|
|
|
memset(buf, 0, regs->len);
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(fec_enet_register_offset); i++) {
|
|
|
- off = fec_enet_register_offset[i] / 4;
|
|
|
+ off = fec_enet_register_offset[i];
|
|
|
+
|
|
|
+ if ((off == FEC_R_BOUND || off == FEC_R_FSTART) &&
|
|
|
+ !(fep->quirks & FEC_QUIRK_HAS_FRREG))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ off >>= 2;
|
|
|
buf[off] = readl(&theregs[off]);
|
|
|
}
|
|
|
}
|