Simon, Heiko, Bin, Pratyush discovered that the solution implemented by the patch regmap: fix a serious pointer casting bug is wrong. The cpu_to_le32() / le32_to_cpu() shifts data to the correct position, but on big endian machines it also reverses byte order. Somehow this went right through my head when I thought this up.
I have sent a new version, with subject [PATCH u-boot v3.1 01/39] regmap: fix a serious pointer casting bug The new solution utilizes an union { u8; u16; u32; u64; }, since all members of an union start at the same address. Could you please review this? Thanks. Marek