rt2x00: Fix efuse EEPROM reading on PPC32.
authorGertjan van Wingerde <[email protected]>
Wed, 16 Nov 2011 22:16:15 +0000 (23:16 +0100)
committerJohn W. Linville <[email protected]>
Thu, 17 Nov 2011 19:39:31 +0000 (14:39 -0500)
Fix __le32 to __le16 conversion of the first word of an 8-word block
of EEPROM read via the efuse method.

Reported-and-tested-by: Ingvar Hagelund <[email protected]>
Signed-off-by: Gertjan van Wingerde <[email protected]>
CC: <[email protected]>
Acked-by: Helmut Schaa <[email protected]>
Acked-by: Ivo van Doorn <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
drivers/net/wireless/rt2x00/rt2800lib.c

index 3f183a15186e09b5e05a2e296c5c66bd94426b23..1ba079dffb11573e86f1b547ac8868e313840f26 100644 (file)
@@ -3771,7 +3771,7 @@ static void rt2800_efuse_read(struct rt2x00_dev *rt2x00dev, unsigned int i)
        /* Apparently the data is read from end to start */
        rt2800_register_read_lock(rt2x00dev, EFUSE_DATA3, &reg);
        /* The returned value is in CPU order, but eeprom is le */
-       rt2x00dev->eeprom[i] = cpu_to_le32(reg);
+       *(u32 *)&rt2x00dev->eeprom[i] = cpu_to_le32(reg);
        rt2800_register_read_lock(rt2x00dev, EFUSE_DATA2, &reg);
        *(u32 *)&rt2x00dev->eeprom[i + 2] = cpu_to_le32(reg);
        rt2800_register_read_lock(rt2x00dev, EFUSE_DATA1, &reg);