Skip to content
  • Michael Buesch's avatar
    [PATCH] b44: fix eeprom endianess issue · 6f627683
    Michael Buesch authored
    
    
    This fixes eeprom read on big-endian architectures.
    
    readw returns the data in CPU order.  With cpu_to_le16 we convert it to little
    endian, because "ptr" is a pointer to a _byte_ arrray.  See the cast above.  A
    byte array is little endian.
    
    The bug is:
    
    Reading u16 values with readw, casting them into an u8 array and accessing
    this u8 array as an u8 (byte) array.  The correct fix is to swap the
    CPU-ordering value returned by readw into little endian, as the u8 array is
    little endian.
    
    This compiles to nothing on little endian hardware (so it does not change b44
    code on LE hardware), but _fixes_ code on BE hardware.
    
    Signed-off-by: default avatarMichael Buesch <mb@bu3sch.de>
    Cc: Jeff Garzik <jeff@garzik.org>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
    6f627683