---
 drivers/net/smsc911x.c |    7 +++++++
 1 file changed, 7 insertions(+)

Index: linux/drivers/net/smsc911x.c
===================================================================
--- linux.orig/drivers/net/smsc911x.c
+++ linux/drivers/net/smsc911x.c
@@ -1787,6 +1787,13 @@
 		return -ENODEV;
 	}
 
+	/* check endian */
+	if (smsc911x_reg_read(pdata, BYTE_TEST) == 0x43218765) {
+		SMSC_TRACE("Byte test looks swapped, inverting");
+		smsc911x_reg_write(~smsc911x_reg_read(pdata, ENDIAN),
+				   pdata, ENDIAN);
+	}
+
 	/* Default generation to zero (all workarounds apply) */
 	pdata->generation = 0;
 
