return addr;
 }
 
+/* NOTE: Data read in from NVRAM is byteswapped according to
+ * the byteswapping settings for all other register accesses.
+ * tg3 devices are BE devices, so on a BE machine, the data
+ * returned will be exactly as it is seen in NVRAM.  On a LE
+ * machine, the 32-bit value will be byteswapped.
+ */
 static int tg3_nvram_read(struct tg3 *tp, u32 offset, u32 *val)
 {
        int ret;
                NVRAM_CMD_FIRST | NVRAM_CMD_LAST | NVRAM_CMD_DONE);
 
        if (ret == 0)
-               *val = swab32(tr32(NVRAM_RDDATA));
+               *val = tr32(NVRAM_RDDATA);
 
        tg3_disable_nvram_access(tp);
 
 static int tg3_nvram_read_le(struct tg3 *tp, u32 offset, __le32 *val)
 {
        u32 v;
-       int res = tg3_nvram_read(tp, offset, &v);
+       int res = tg3_nvram_read_swab(tp, offset, &v);
        if (!res)
                *val = cpu_to_le32(v);
        return res;
        __le32 *buf;
        int i, j, k, err = 0, size;
 
-       if (tg3_nvram_read_swab(tp, 0, &magic) != 0)
+       if (tg3_nvram_read(tp, 0, &magic) != 0)
                return -EIO;
 
        if (magic == TG3_EEPROM_MAGIC)
 
        tp->nvram_size = EEPROM_CHIP_SIZE;
 
-       if (tg3_nvram_read_swab(tp, 0, &magic) != 0)
+       if (tg3_nvram_read(tp, 0, &magic) != 0)
                return;
 
        if ((magic != TG3_EEPROM_MAGIC) &&
        cursize = 0x10;
 
        while (cursize < tp->nvram_size) {
-               if (tg3_nvram_read_swab(tp, cursize, &val) != 0)
+               if (tg3_nvram_read(tp, cursize, &val) != 0)
                        return;
 
                if (val == magic)
 {
        u32 val;
 
-       if (tg3_nvram_read_swab(tp, 0, &val) != 0)
+       if (tg3_nvram_read(tp, 0, &val) != 0)
                return;
 
        /* Selfboot format */
                return;
        }
 
-       if (tg3_nvram_read(tp, 0xf0, &val) == 0) {
+       if (tg3_nvram_read_swab(tp, 0xf0, &val) == 0) {
                if (val != 0) {
                        tp->nvram_size = (val >> 16) * 1024;
                        return;
        unsigned int i;
        u32 magic;
 
-       if (tg3_nvram_read_swab(tp, 0x0, &magic))
+       if (tg3_nvram_read(tp, 0x0, &magic))
                goto out_not_found;
 
        if (magic == TG3_EEPROM_MAGIC) {
                for (i = 0; i < 256; i += 4) {
                        u32 tmp;
 
-                       if (tg3_nvram_read(tp, 0x100 + i, &tmp))
+                       if (tg3_nvram_read_swab(tp, 0x100 + i, &tmp))
                                goto out_not_found;
 
                        vpd_data[i + 0] = ((tmp >>  0) & 0xff);
 {
        u32 val;
 
-       if (tg3_nvram_read_swab(tp, offset, &val) ||
+       if (tg3_nvram_read(tp, offset, &val) ||
            (val & 0xfc000000) != 0x0c000000 ||
-           tg3_nvram_read_swab(tp, offset + 4, &val) ||
+           tg3_nvram_read(tp, offset + 4, &val) ||
            val != 0)
                return 0;
 
                return;
        }
 
-       if (tg3_nvram_read_swab(tp, offset, &val))
+       if (tg3_nvram_read(tp, offset, &val))
                return;
 
        build = (val & TG3_EEPROM_SB_EDH_BLD_MASK) >>
        u32 ver_offset;
        int i, bcnt;
 
-       if (tg3_nvram_read_swab(tp, 0, &val))
+       if (tg3_nvram_read(tp, 0, &val))
                return;
 
        if (val != TG3_EEPROM_MAGIC) {
                return;
        }
 
-       if (tg3_nvram_read_swab(tp, 0xc, &offset) ||
-           tg3_nvram_read_swab(tp, 0x4, &start))
+       if (tg3_nvram_read(tp, 0xc, &offset) ||
+           tg3_nvram_read(tp, 0x4, &start))
                return;
 
        offset = tg3_nvram_logical_addr(tp, offset);
 
        if (!tg3_fw_img_is_valid(tp, offset) ||
-           tg3_nvram_read_swab(tp, offset + 8, &ver_offset))
+           tg3_nvram_read(tp, offset + 8, &ver_offset))
                return;
 
        offset = offset + ver_offset - start;
        for (offset = TG3_NVM_DIR_START;
             offset < TG3_NVM_DIR_END;
             offset += TG3_NVM_DIRENT_SIZE) {
-               if (tg3_nvram_read_swab(tp, offset, &val))
+               if (tg3_nvram_read(tp, offset, &val))
                        return;
 
                if ((val >> TG3_NVM_DIRTYPE_SHIFT) == TG3_NVM_DIRTYPE_ASFINI)
 
        if (!(tp->tg3_flags2 & TG3_FLG2_5705_PLUS))
                start = 0x08000000;
-       else if (tg3_nvram_read_swab(tp, offset - 4, &start))
+       else if (tg3_nvram_read(tp, offset - 4, &start))
                return;
 
-       if (tg3_nvram_read_swab(tp, offset + 4, &offset) ||
+       if (tg3_nvram_read(tp, offset + 4, &offset) ||
            !tg3_fw_img_is_valid(tp, offset) ||
-           tg3_nvram_read_swab(tp, offset + 8, &val))
+           tg3_nvram_read(tp, offset + 8, &val))
                return;
 
        offset += val - start;
        }
        if (!addr_ok) {
                /* Next, try NVRAM. */
-               if (!tg3_nvram_read(tp, mac_offset + 0, &hi) &&
-                   !tg3_nvram_read(tp, mac_offset + 4, &lo)) {
+               if (!tg3_nvram_read_swab(tp, mac_offset + 0, &hi) &&
+                   !tg3_nvram_read_swab(tp, mac_offset + 4, &lo)) {
                        dev->dev_addr[0] = ((hi >> 16) & 0xff);
                        dev->dev_addr[1] = ((hi >> 24) & 0xff);
                        dev->dev_addr[2] = ((lo >>  0) & 0xff);